Skip to main content

CTFd Terraform Provider CVE-2026-116683

| EUVDEUVD-2026-111358 HIGH
Insufficiently Protected Credentials (CWE-522)
2026-10-27 GitHub_M GHSA-vg84-c5mg-76xh
7.1
CVSS 4.0 · Vendor: GitHub_M
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Gain read access to Terraform state
  2. Delivery
    Locate ctfd_team resource entries
  3. Exploit
    Read plaintext password attribute
  4. Execution
    Authenticate to CTFd as the team
  5. Impact
    Access or tamper with team data

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A06:2025 - Insecure Design
ASVS 5.0
V6 - Authentication Credential protection in transit/storage
Exploitation Conditions

Requires that the attacker can already read the Terraform state produced by the CTFd provider (versions 0.1.5 through before 2.8.2) for configurations that define ctfd_team resources with a password attribute - e.g. a local terraform.tfstate on a shared/compromised host, a state file committed to version control or leaked in CI logs, or a misconfigured/exposed remote backend. Because the password is stored as a non-sensitive value, no state-decryption password or additional step is needed to read it. The exploitation-limiting factors are: the attacker must have prior access to the state (PR:L, not an anonymous remote read), only team passwords are exposed, and the vendor states there is no workaround other than restricting who can access state and upgrading to 2.8.2; local-only state makes the vector effectively local rather than network.

Impact

This is a credential-exposure flaw (CWE-522) with moderate, access-gated real-world risk rather than a wormable emergency. The only CVSS vector supplied is CVSS 4.0 (7.1, AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:N/VA:N/SI:L); PR:L correctly signals that exploitation is not possible without some level of authorized access - specifically access to the Terraform state. The high confidentiality rating (VC:H) is appropriate because recovered team passwords are reusable credentials, but the AV:N rating is only meaningful where state is kept in a network-reachable backend; for purely local state the effective vector is local. No EPSS score was provided and the CVE is not on the CISA KEV list, so there is no signal of active or widespread exploitation. No SSVC exploitation/automatable fields were supplied beyond the vuln.today priority of 'this_week', which, combined with an available vendor patch and the lack of KEV/EPSS, is consistent with a prompt-but-not-emergency remediation. The key missing data points are EPSS and any independent exploitation telemetry; the key limiting factor - prior access to Terraform state - is confirmed by the vendor advisory and is the dominant risk modifier here.

Exploit ScenarioDerived

An attacker who can read a team's Terraform state (for example a CI job with state access, a state file accidentally committed to a repository, or an exposed/misconfigured remote backend such as an S3 bucket) opens the state and reads the ctfd_team.password value directly, because it is stored as a non-sensitive attribute requiring no decryption. They then reuse that plaintext password to log into CTFd as the affected team. No public working exploit is needed, since the value is plainly readable in the state file.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available 0.4% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Oct 28, 2026

The CTFd Terraform Provider (ctfer-io/terraform-provider-ctfd) writes the ctfd_team.password attribute into Terraform state as a non-sensitive value in versions 0.1.5 through 2.8.1, so anyone who can read that state file obtains the CTFd team password directly, without needing the state encryption password or any further decryption step. The exposure is access-gated rather than anonymous: the attacker must already be able to read the state (a shared or compromised host, a state file committed to version control or leaked through CI logs, or an exposed remote backend), which is reflected in the assessed vector CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N and a confidentiality-only impact limited to team passwords. The vendor addressed it in v2.8.2 by marking the schema attribute Sensitive, states that no workaround exists, and no public exploit code has been identified at time of analysis.

RemediationAI

Vendor-released patch: v2.8.2, which sets Sensitive: true on the ctfd_team.password schema attribute (commit b4acaef1df23ea3ca36936fc2d8ef8d157a58e04, pull request https://github.com/ctfer-io/terraform-provider-ctfd/pull/376, release https://github.com/ctfer-io/terraform-provider-ctfd/releases/tag/v2.8.2); upgrade the provider constraint to 2.8.2 or later, and note that the Go metadata records no fixed version for the v1 module line (0.1.5 through 1.1.0), so users on v1 should move to the v2 provider. The vendor states no workaround exists and recommends keeping state in safe environments with a limited set of users who can access it; in practice that means tightening who and what can read the state backend, removing state files from version control and CI artifacts, and ensuring backend encryption at rest is enabled - with the trade-off that these only reduce exposure and do not stop the plaintext value from being present in state written by affected versions. Because state written before the upgrade still contains the password value, treat any previously written or distributed state as exposed and rotate the affected CTFd team passwords; the vendor advisory does not explicitly call for rotation, so treat this as a consequence of the plaintext storage rather than a documented vendor step.

Affected VersionsENISA

terraform-provider-ctfd 0.1.5, < 2.8.2

Affected Packages

go github.com/ctfer-io/terraform-provider-ctfd no fix
go github.com/ctfer-io/terraform-provider-ctfd/v2 fix: 2.8.2
euvd terraform_provider_ctfd fix: 2.8.2

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 3 packages in go, euvd

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

Terraform providers declare resource attributes in a schema, and Terraform uses schema flags to decide how values are handled and rendered. In this provider the team resource's password attribute was declared without the Sensitive flag, so the plaintext password was persisted in Terraform state as an ordinary value; the upstream fix in pull request #376 is a single-line schema change adding Sensitive: true to provider/team_resource.go. The root cause class is CWE-522 (Insufficiently Protected Credentials): a secret is stored in a location protected only by whatever access controls and at-rest encryption the state backend provides, so the secret is readable with no additional barrier once the state is obtained. The practical consequence is that state, which is routinely copied to CI runners, artifact stores, S3/GCS backends and developer machines, becomes a credential store for CTFd team accounts. The Go module data distinguishes two lines: go/github.com/ctfer-io/terraform-provider-ctfd (v1, vulnerable >= 0.1.5, <= 1.1.0) is listed without a fixed version, while go/github.com/ctfer-io/terraform-provider-ctfd/v2 is fixed in 2.8.2; only configurations that actually define ctfd_team resources with a password attribute produce the exposed value.

Know when Terraform Provider Ctfd gets its next vulnerability

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (GitHub_M) PRIMARY 7.1 HIGH
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:N/VA:N/SC:N/SI:L/SA:N
vuln.today AI 6.5 MEDIUM

Exploitation requires authorized access to the Terraform state (PR:L) but no further steps once obtained (AC:L); impact is disclosure of reusable team credentials (C:H) with no direct integrity or availability loss.

3.1 AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N
4.0 AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

Attack Vector
Network
Attack Complexity
Low
Attack Requirements
None
Privileges Required
Low
User Interaction
None
Vulnerable system: Confidentiality
High
Vulnerable system: Integrity
None
Vulnerable system: Availability
None
Subsequent system: Confidentiality
None
Subsequent system: Integrity
Low
Subsequent system: Availability
None

Lifecycle Timeline

2
Patch available
Oct 27, 2026 - 19:03 EUVD
CVE Published
Oct 27, 2026 - 18:25 cve.org
HIGH 7.1

DescriptionCVE.org

CTFer.io's CTFd Terraform Provider manages CTFd resources as code. From 0.1.5 until 2.8.2, ctfd_team.password is stored as a non-sensitive value in Terraform state. A local or remote user with access to that state can read the team password without an additional decryption step. This issue is fixed in 2.8.2.

Technical POC Analysis

CWE-522, Insufficiently Protected Credentials.

Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.

Executive ViewAI

Why It Matters

The CTFd Terraform Provider (ctfer-io) versions 0.1.5 through 2.8.1 store CTFd team passwords as plaintext in Terraform state, exposing them to anyone with read access to that state. This affects organizations using this provider for capture-the-flag infrastructure management, particularly where state files are shared, committed to version control, or stored in remote backends. Leadership should care because leaked team passwords could allow unauthorized access to CTFd instances, potentially compromising competition integrity or sensitive team data.

Business Impact: Medium
Compensating Controls

Apply vendor patch.

Threat Intelligence Overview

EPSS Score
0.4%
Top 68% exploitable
Prevalence
Low
niche CTF-platform infrastructure-as-code provider, limited deployment base
Threat Intel
1
1 source
Social Media
1
Sightings
Data Quality
5 sources
Confidence: Medium

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity HIGH
CISA KEV No
Public POC No
EPSS 0.4%
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation· derived
None
System Exposure· derived
Open
Automatable· derived
No
Human Impact
Medium

Priority Score

36
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +36
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy