Skip to main content

Appwrite Templates CVE-2026-72861

| EUVDEUVD-2026-63579 MEDIUM
Improper Verification of Cryptographic Signature (CWE-347)
2026-08-20 VulnCheck GHSA-785c-v4m5-q4wg
6.9
CVSS 4.0 · Vendor: VulnCheck
View

Attack ChainAIDerived

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

  1. Access
    Identify publicly exposed github-issue-bot endpoint
  2. Delivery
    Send HTTP POST omitting X-Hub-Signature-256 header
  3. Exploit
    Inverted OR condition short-circuits HMAC check to success
  4. Execution
    Attacker-controlled repository and issue fields parsed from body
  5. Persist
    Deployment GITHUB_TOKEN authenticates to GitHub API
  6. Impact
    Unauthorized comment posted on target issue

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A04:2025 - Cryptographic Failures
ASVS 5.0
V11 - Cryptography Signature verification
Exploitation Conditions

The github-issue-bot template must be deployed as a publicly accessible function endpoint with a GITHUB_TOKEN configured with write access to at least one GitHub repository. The sole triggering condition is omitting the X-Hub-Signature-256 HTTP header - no authentication, no special tooling, and no account is required. Exploitation is limited to deployments using appwrite/templates ≤ 1.1.2; other Appwrite templates or Appwrite core are not affected by this issue. The blast radius is bounded by the permissions of the configured GITHUB_TOKEN: a token restricted to a single repository limits the attacker's ability to post comments to that repository only. No user interaction is required.

Impact

The CVSS 5.8 with vector AV:N/AC:L/PR:N/UI:N/S:C/C:N/I:L/A:N is appropriate: the attack is trivially executable over the network without credentials or complexity, and the Scope:Changed metric reflects that the configured GITHUB_TOKEN is leveraged to affect GitHub repositories outside the vulnerable application boundary. Real-world risk is bounded by deployment prevalence and GITHUB_TOKEN permissions - if the token is scoped narrowly, the attacker can only post comments on repositories where it holds write access. No EPSS data was provided and the vulnerability is not listed in CISA KEV, indicating no confirmed widespread exploitation. However, the zero-barrier attack (omit one HTTP header, craft a JSON body) means any exposed deployment is trivially abusable. The 'Jwt Attack' tag in the source intelligence is a miscategorization - this is an HMAC webhook bypass, not a JWT flaw. Confidentiality impact is correctly rated None; the only real-world consequence is unauthorized GitHub comment posting, which carries reputational and social-engineering risk (e.g., posting malicious links under the bot's identity) rather than data exfiltration.

Exploit ScenarioDerived

An attacker sends an HTTP POST to the publicly accessible github-issue-bot function endpoint, omitting the X-Hub-Signature-256 header and supplying a JSON body with attacker-chosen 'repository', 'issue', and 'sender.login' fields. The inverted condition in verifyWebhook returns true, main.js continues to postComment, and the deployment's GITHUB_TOKEN posts an attacker-crafted comment to the specified GitHub issue. The attacker can repeat this against any repository accessible by the token, for example to post phishing links or impersonate bot activity on public issues.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
No patch listed yet 0.2% exploitation probability (EPSS)

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

Alert me

AnalysisAIv1 – Aug 20, 2026

Webhook signature bypass in the appwrite/templates github-issue-bot (≤ 1.1.2) allows any unauthenticated network caller to invoke the bot's comment-posting functionality without a valid GitHub HMAC signature. An inverted boolean condition in verifyWebhook causes requests lacking the X-Hub-Signature-256 header to short-circuit to success, so the body is processed as if it were a legitimate GitHub event. With attacker-controlled repository, issue, and author fields passed directly to postComment, the deployment's GITHUB_TOKEN is used to post arbitrary comments on any accessible GitHub repository and issue. No public exploit code is identified at time of analysis.

RemediationAI

No vendor-released patched version is independently confirmed in the available data - the fix version must be verified by monitoring the upstream repository at https://github.com/appwrite/templates and the tracking issue at https://github.com/appwrite/templates/issues/350. The code fix requires inverting the verification logic so that an absent or non-string X-Hub-Signature-256 header causes verifyWebhook to return false (reject), not true; the corrected condition should be typeof signature === 'string' && (await verify(...)). As an immediate compensating control, restrict network ingress to the deployed github-issue-bot endpoint to GitHub's published webhook source IP ranges (available via the GitHub meta API at https://api.github.com/meta under the 'hooks' key) - this prevents arbitrary callers from reaching the vulnerable endpoint, though it does not fix the code defect. Additionally, audit the GITHUB_TOKEN in use: restrict it to the minimum required repository scope and rotate it if unauthorized comment activity is detected. Deployers who cannot apply network restrictions should consider disabling the github-issue-bot deployment until a patched release is confirmed.

Affected VersionsENISA

templates 0 ≤1.1.2

Affected Packages

euvd templates no fix

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 1 package in euvd

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

Technical ContextAI · show details

The flaw resides in verifyWebhook, implemented in both node/github-issue-bot/src/github.js and node-typescript/github-issue-bot/src/github.ts within the appwrite/templates repository (CPE: cpe:2.3:a:appwrite:templates:*:*:*:*:*:*:*:*). The expression typeof signature ! 'string' || (await verify(...)) inverts the intended guard: when the X-Hub-Signature-256 header is absent, typeof signature ! 'string' evaluates to true, short-circuiting the logical OR and returning true (success) before any HMAC check occurs. The correct intent requires rejecting absent or invalid signatures - achieved by separating the null-check as a rejection path or negating the condition. CWE-347 (Improper Verification of Cryptographic Signature) is the root cause class. The downstream handler main.js rejects requests only when verifyWebhook returns false, so the bypass is complete. The GITHUB_TOKEN scoped to the deployment is then exercised against the GitHub API using attacker-supplied repository and issue identifiers, with the issue author login interpolated from the request body into comment text.

Know when Templates 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 (VulnCheck) PRIMARY 6.9 MEDIUM
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:N/SC:N/SI:L/SA:N
vuln.today AI 5.8 MEDIUM

Network-reachable with no prerequisites; scope change because GITHUB_TOKEN affects external repositories; integrity limited to comment posting only.

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

Primary rating from Vendor (VulnCheck).

CVSS VectorVendor: VulnCheck

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

Lifecycle Timeline

1
CVSS changed
Aug 20, 2026 - 20:22 NVD
5.8 (MEDIUM) 6.9 (MEDIUM)

DescriptionCVE.org

The github-issue-bot templates in appwrite/templates verify the GitHub webhook signature with an inverted condition. verifyWebhook in node/github-issue-bot/src/github.js and in node-typescript/github-issue-bot/src/github.ts returns "typeof signature !== 'string' || (await verify(...))", so when the X-Hub-Signature-256 header is absent the first operand is true, the logical OR short-circuits, and the function reports success without performing any HMAC verification. main.js rejects a request only when verifyWebhook returns false, so an unauthenticated request carrying no signature passes the check. Processing then continues to postComment, which takes the repository and issue objects directly from the request body, letting the caller direct the deployed function to post a comment on a repository and issue of their choosing using the configured GITHUB_TOKEN, with the issue author login from the body interpolated into the comment text.

Threat Intelligence Overview

EPSS Score
0.2%
Top 90% exploitable
Prevalence
Low
niche serverless function template, limited production deployments expected
Data Quality
6 sources
Confidence: High

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 MEDIUM
CISA KEV No
Public POC No
EPSS 0.2%
Patch available No
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.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
None
System Exposure· derived
Open
Automatable
Yes
Human Impact· derived
Medium
Technical Impact
Partial

Priority Score

34
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +34
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