Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Malicious Packages Served from Unauthorized Registry Server

Critical
Shelnutt2 published GHSA-vx42-ghc9-gw65 Sep 1, 2026

Package

No package listed

Affected versions

<2.37.0

Patched versions

2.37.0, 2.36.4, 2.35.7, 2.34.9

Description

Impact

An unidentified malicious actor gained access to Coder’s Cloudflare infrastructure and added unauthorized IP addresses to the pool used for Coder’s module registry. These unauthorized IP addresses hosted a version of Coder’s registry that contained artifacts which included malicious code. The result was that for a short period of time Coder’s module registry website was serving a malicious version of our artifacts to a subset of our users. This malicious code was designed to identify a number of credentials and exfiltrate those to a remote server with a lookalike domain name compared to one Coder regularly uses.

Users who use the main Coder module registry (registry.coder.com) for their template source and who updated components during the time period when this code was available may have installed the malicious packages and been impacted by the credential stealing malicious software.

At this time we have no indication that any customer data maintained by Coder was impacted in any way.

Patches

At this time, we recommend running the steps below manually to verify if the terraform module versions and possibly purge any impacted module from the cache.

Workarounds

We are advising that any user who a create a new workspace template, update a template version, ran a dry run of template build or deployed a Coder workspace on a cluster that has terraform module caching disabled between 07:35 UTC on Monday, August 31st and 21:45 UTC on Monday, August 31st perform the following:

Determine if you may have been impacted

Due to the nature of this attack, where a malicious server that we do not own was communicating with impacted deployments, we do not have the ability to conclusively determine which users may have been affected. Therefore we recommend that you individually review and determine whether you may be impacted.

Review the timeline of any Coder workspace deployments that may have taken place as well as the Indicators of Compromise that are listed below to see if your deployments may have been impacted.

You may have been impacted if your Coder deployment downloaded a Coder Registry module between 07:35 UTC on Monday, August 31st and 21:45 UTC on Monday, August 31st. This primarily occurs when new templates or template versions are created, but can also occur independently during workspace creation when module caching is disabled on your template settings (this is enabled by default). As a result, workspaces created from templates that downloaded affected modules may also be impacted.

To identify potential cases of data loss, review firewall, proxy, DNS, and VPC flow logs for outbound traffic to coder-infra[.]com.

We have provided a SQL query you can run against your Coder deployment to identify potentially affected cached modules and template versions:

-- Queries to help identify usage of modules fetched in the identified window.
-- A template-import had to occur during the window for the templates/workspaces to surface here.
-- And only template-imports that downloaded the module in the window.


-- All templates that used a module fetched during the window
SELECT
   t.name  AS template,
   tv.name AS template_version,
   tv.id   AS template_version_id,
   f.id    AS module_file_id,
   f.created_at AS module_cached_at,
   tv.created_at AS version_created_at
FROM files f
        JOIN template_version_terraform_values tvtv
             ON tvtv.cached_module_files = f.id
        JOIN template_versions tv
             ON tv.id = tvtv.template_version_id
        JOIN templates t
             ON t.id = tv.template_id
WHERE f.created_by = '00000000-0000-0000-0000-000000000000'
 AND f.mimetype = 'application/x-tar'
 AND f.created_at >= '2026-08-31 07:35:00+00'
 AND f.created_at < '2026-08-31 21:45:00+00'
ORDER BY t.name, tv.created_at;


-- All workspaces that used a module fetched during the window
SELECT
   w.name AS workspace,
   u.username AS owner,
   wlb.transition,
   wlb.job_status,
   wlb.created_at
FROM workspace_latest_builds wlb
        JOIN workspaces w ON w.id = wlb.workspace_id
        JOIN users u ON u.id = w.owner_id
WHERE wlb.template_version_id IN (
   SELECT tvtv.template_version_id
   FROM files f
            JOIN template_version_terraform_values tvtv
                 ON tvtv.cached_module_files = f.id
   WHERE f.created_by = '00000000-0000-0000-0000-000000000000'
     AND f.mimetype = 'application/x-tar'
     AND f.created_at >= '2026-08-31 07:35:00+00'
     AND f.created_at < '2026-08-31 21:45:00+00'
)
ORDER BY w.name;

-- name: SearchLogsForKeyPhrase
-- Search any provisioner job lobs for the sentinel string, this will be a slow query
SELECT DISTINCT
	pj.type                                 AS job_type,
	pj.id                                   AS job_id,
	wb.id                                   AS workspace_build_id,
	w.id                                    AS workspace_id,
	COALESCE(tv_import.id, tv_build.id)     AS template_version_id,
	t.id                                    AS template_id,
	t.name                                  AS template,
	COALESCE(tv_import.name, tv_build.name) AS template_version,
	w.name                                  AS workspace,
	u.username                              AS owner_or_initiator,
	pj.started_at,
	pj.job_status,
	w.deleted                               AS workspace_deleted
FROM provisioner_job_logs pjl
JOIN provisioner_jobs pj
	ON pj.id = pjl.job_id
LEFT JOIN template_versions tv_import
	ON tv_import.job_id = pj.id
LEFT JOIN workspace_builds wb
	ON wb.job_id = pj.id
LEFT JOIN template_versions tv_build
	ON tv_build.id = wb.template_version_id
LEFT JOIN workspaces w
	ON w.id = wb.workspace_id
LEFT JOIN templates t
	ON t.id = COALESCE(tv_import.template_id, tv_build.template_id, w.template_id)
LEFT JOIN users u
	ON u.id = COALESCE(w.owner_id, pj.initiator_id)
WHERE pjl.output LIKE '%data.external.telemetry%'
ORDER BY pj.started_at;

Manually clear any cached packages that may have been impacted

For deployed systems, be aware that these malicious templates may be cached in your deployment infrastructure. Ensure that you clear any cached packages from your systems before performing a fresh deployment.

Run the following query against your Coder deployment to remove potentially malicious modules from your Coder deployment’s cache:

-- Remove modules from the cache that were fetched in the window
BEGIN;


CREATE TEMP TABLE identified_module_files ON COMMIT DROP AS
SELECT DISTINCT f.id
FROM files f
        JOIN template_version_terraform_values tvtv
             ON tvtv.cached_module_files = f.id
WHERE f.created_by = '00000000-0000-0000-0000-000000000000'
 AND f.mimetype = 'application/x-tar'
 AND f.created_at >= '2026-08-31 07:35:00+00'
 AND f.created_at < '2026-08-31 21:45:00+00';


UPDATE template_version_terraform_values
SET cached_module_files = NULL
WHERE cached_module_files IN (SELECT id FROM identified_module_files);


DELETE FROM files
   USING identified_module_files c
WHERE files.id = c.id;


COMMIT;

Update your Coder deployment

At this time, the currently served version of Coder templates have been reviewed and validated to be free from malicious code. Once you have ensured that you have cleared any cached packages please update to the latest version of Coder (patches being released on Sept 1) to ensure that you have the most up to date and secure version.

We are preparing our next version of Coder to include automatic remediation steps in addition to the normal updates for the product.

Rotate your Credentials

Proactively rotate any credentials that may have been accessible to your Coder deployment, in particular your workspace provisioners. This includes API keys related to your cloud infrastructure, AI tooling, CI/CD credentials, and any other similar credentials that may either be deployed as environment variables, included in your configuration files, or simply available in your terminal history.

Effects of Malicious Packages

There are two scenarios for when the affected registry modules would have run.

First is when a template is uploaded, updated or a dryrun of a template change is made. In this scenario the provisor does not have any user secrets or information passed into it. The risk in this scenario is leaking of environmental variables and secrets on the provisioner itself.

The second scenario is when a workspace build was run, this includes three additional secrets that are passed to the provisoner, the user’s OIDC token, a user ssh-key if ssh-key is configured for the user, and any external auth provider which is configured for the affected templates use, single time tokens, no refresh tokens are included.

Additionally, if you are running the provisioner as part of coderd and not as a separate service this likely also leaked coder configuration variables such as your database password, external auth providers and other configurations

To identify potential cases of data loss, review firewall, proxy, DNS, and VPC flow logs for outbound traffic to the untrusted domain coder-infra.com.

References

Type Value
Domain www[.]coder-infra[.]com (reported registered 2026-08-28)
IP Address 199.91.220[.]205
URL http://www[.]coder-infra[.]com/cli/check
HTTP header X-CLI-Token: your-secret-token
File dlp-docker.sh — SHA-256 7190a17c593276d7fd71c4863a4bc0b6c957ed14249288e6f64c5540e2c49398
File dlp.sh (common) — SHA-256 a7f4fa5f7e33b2a6f6488cf28444584caa449144d246b083de919162f5514247
File dlp.sh (aider) — SHA-256 414d01f6072fbf05bef513e277f4c2b504a413c8e2aa5bae133a5cbc0cda9dc1
File dlp.sh (rstudio-server) — SHA-256 a64ce3038f2a501c9735abf6a1f9f04cbddbad53371cd68bec0f7510365c8ffa
File dlp.sh (windows-rdp) — SHA-256 ebbe0d2ed8cfaf9e19edb38ce44d6b407f9771b5c0813a7add27c05f66e89596
File dlp.sh (zed) — SHA-256 7ef6b8c3c976fb60b3fa22e9e294ba548d9b532e060c1323a0124a3a7a647f13
Terraform data "external" "telemetry" block invoking ${path.module}/dlp-docker.sh

Change Log

This advisory has been updated to provide clarity and additional details. Below is the change log for major updates.

Date Change
2026-09-01 19:56 GMT A third detection sql query was added that captures template build dry runs and templates which have the module cache explicitly disabled
2026-09-02 00:34 GMT Details on the type of data and scenarios in which data exfiltration could occur were added
2026-09-24 18:00 GMT Change log added

Severity

Critical

CVSS overall score

This score calculates overall vulnerability severity from 0 to 10 and is based on the Common Vulnerability Scoring System (CVSS).
/ 10

CVSS v4 base metrics

Exploitability Metrics
Attack Vector Network
Attack Complexity High
Attack Requirements None
Privileges Required None
User interaction Passive
Vulnerable System Impact Metrics
Confidentiality High
Integrity High
Availability High
Subsequent System Impact Metrics
Confidentiality High
Integrity High
Availability High

CVSS v4 base metrics

Exploitability Metrics
Attack Vector: This metric reflects the context by which vulnerability exploitation is possible. This metric value (and consequently the resulting severity) will be larger the more remote (logically, and physically) an attacker can be in order to exploit the vulnerable system. The assumption is that the number of potential attackers for a vulnerability that could be exploited from across a network is larger than the number of potential attackers that could exploit a vulnerability requiring physical access to a device, and therefore warrants a greater severity.
Attack Complexity: This metric captures measurable actions that must be taken by the attacker to actively evade or circumvent existing built-in security-enhancing conditions in order to obtain a working exploit. These are conditions whose primary purpose is to increase security and/or increase exploit engineering complexity. A vulnerability exploitable without a target-specific variable has a lower complexity than a vulnerability that would require non-trivial customization. This metric is meant to capture security mechanisms utilized by the vulnerable system.
Attack Requirements: This metric captures the prerequisite deployment and execution conditions or variables of the vulnerable system that enable the attack. These differ from security-enhancing techniques/technologies (ref Attack Complexity) as the primary purpose of these conditions is not to explicitly mitigate attacks, but rather, emerge naturally as a consequence of the deployment and execution of the vulnerable system.
Privileges Required: This metric describes the level of privileges an attacker must possess prior to successfully exploiting the vulnerability. The method by which the attacker obtains privileged credentials prior to the attack (e.g., free trial accounts), is outside the scope of this metric. Generally, self-service provisioned accounts do not constitute a privilege requirement if the attacker can grant themselves privileges as part of the attack.
User interaction: This metric captures the requirement for a human user, other than the attacker, to participate in the successful compromise of the vulnerable system. This metric determines whether the vulnerability can be exploited solely at the will of the attacker, or whether a separate user (or user-initiated process) must participate in some manner.
Vulnerable System Impact Metrics
Confidentiality: This metric measures the impact to the confidentiality of the information managed by the VULNERABLE SYSTEM due to a successfully exploited vulnerability. Confidentiality refers to limiting information access and disclosure to only authorized users, as well as preventing access by, or disclosure to, unauthorized ones.
Integrity: This metric measures the impact to integrity of a successfully exploited vulnerability. Integrity refers to the trustworthiness and veracity of information. Integrity of the VULNERABLE SYSTEM is impacted when an attacker makes unauthorized modification of system data. Integrity is also impacted when a system user can repudiate critical actions taken in the context of the system (e.g. due to insufficient logging).
Availability: This metric measures the impact to the availability of the VULNERABLE SYSTEM resulting from a successfully exploited vulnerability. While the Confidentiality and Integrity impact metrics apply to the loss of confidentiality or integrity of data (e.g., information, files) used by the system, this metric refers to the loss of availability of the impacted system itself, such as a networked service (e.g., web, database, email). Since availability refers to the accessibility of information resources, attacks that consume network bandwidth, processor cycles, or disk space all impact the availability of a system.
Subsequent System Impact Metrics
Confidentiality: This metric measures the impact to the confidentiality of the information managed by the SUBSEQUENT SYSTEM due to a successfully exploited vulnerability. Confidentiality refers to limiting information access and disclosure to only authorized users, as well as preventing access by, or disclosure to, unauthorized ones.
Integrity: This metric measures the impact to integrity of a successfully exploited vulnerability. Integrity refers to the trustworthiness and veracity of information. Integrity of the SUBSEQUENT SYSTEM is impacted when an attacker makes unauthorized modification of system data. Integrity is also impacted when a system user can repudiate critical actions taken in the context of the system (e.g. due to insufficient logging).
Availability: This metric measures the impact to the availability of the SUBSEQUENT SYSTEM resulting from a successfully exploited vulnerability. While the Confidentiality and Integrity impact metrics apply to the loss of confidentiality or integrity of data (e.g., information, files) used by the system, this metric refers to the loss of availability of the impacted system itself, such as a networked service (e.g., web, database, email). Since availability refers to the accessibility of information resources, attacks that consume network bandwidth, processor cycles, or disk space all impact the availability of a system.
CVSS:4.0/AV:N/AC:H/AT:N/PR:N/UI:P/VC:H/VI:H/VA:H/SC:H/SI:H/SA:H

CVE ID

No known CVE

Weaknesses

No CWEs