HIGH 7.3

CVE-2026-48547: KanaDojo Command Injection in GitHub Actions Release Workflow

KanaDojo has a command injection vulnerability in its GitHub Actions release workflow. An attacker with pull request access can embed shell commands into specific fields of a configuration file (patchNotesData.json), which get executed without sanitization when the workflow runs. This allows arbitrary command execution on the GitHub Actions runner, which has write permissions to the repository and access to secrets. The attack requires the malicious pull request to be merged, making it a supply-chain risk for projects using this tool.

Source data · NVD / CISA · public domain

CVSS
3.1 · 7.3 HIGH · CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:U/C:H/I:H/A:N
Weaknesses (CWE)
CWE-78
Affected products
0 configuration(s)
Published / Modified
2026-06-11 / 2026-07-14

NVD description (verbatim)

KanaDojo contains a command injection vulnerability that allows an attacker with pull request access to execute arbitrary shell commands by inserting shell metacharacters into the version or changes fields of patchNotesData.json, which are interpolated unsanitized into a child_process.execSync() call in the release.yml workflow. Attackers can have a malicious pull request merged to trigger the GitHub Actions runner with contents write permissions and access to GITHUB_TOKEN.

2 reference(s) · View on NVD →

SEC.co analysis · AI-assisted, reviewed against source

Technical summary

The vulnerability exists in the release.yml GitHub Actions workflow where the 'version' and 'changes' fields from patchNotesData.json are passed unsanitized into child_process.execSync(). An attacker with pull request permissions can inject shell metacharacters (e.g., semicolons, pipes, backticks, command substitution syntax) into these fields. When the workflow executes during a release, the injected commands run in the context of the GitHub Actions runner with the GITHUB_TOKEN and repository write access. This is classified as CWE-78 (Improper Neutralization of Special Elements used in an OS Command).

Business impact

Successful exploitation compromises the integrity of software releases and the repository itself. An attacker could modify package contents, exfiltrate secrets stored in GitHub environment variables, alter release artifacts, or inject malware into published packages. For projects distributing KanaDojo or using it in automated release pipelines, this creates downstream supply-chain risk—any consumers of affected releases could be compromised. The attack requires trust in contributors (pull request merge approval), so it primarily affects projects with weaker code review practices or insider threats.

Affected systems

KanaDojo projects using the release.yml workflow with the vulnerable code pattern are affected. The vulnerability is present in the workflow configuration itself, not in all versions of KanaDojo uniformly—it depends on whether a project has this specific unsanitized interpolation pattern in their release automation. Any GitHub Actions workflow that passes user-controlled or merge-controlled input directly into shell execution commands without sanitization faces the same risk.

Exploitability

Exploitability is moderate-to-high. An attacker needs valid pull request access to the repository, but the barrier to obtaining that varies by project governance. Once access is obtained, injecting the payload is straightforward—simply including shell metacharacters in JSON fields requires no special tools. The attack only triggers if the malicious pull request is merged and the release workflow is invoked, introducing a human element (code reviewer approval). However, in projects with lax review or high contributor trust, this approval step may be routine. No user interaction beyond the merge is required.

Remediation

Sanitize all external inputs before passing them to shell commands. The proper fix is to either: (1) use parameterized execution (passing arguments as an array to execSync instead of string concatenation), (2) escape shell metacharacters using a library designed for this purpose, or (3) avoid shell execution entirely by using JavaScript APIs directly. For immediate protection, restrict pull request merge permissions to trusted maintainers and enforce mandatory code review of any changes to patchNotesData.json and release workflows.

Patch guidance

Consult the official KanaDojo repository and GitHub advisories for patched versions. The fix will involve updating the release.yml workflow to safely handle the version and changes fields—look for releases that switched to parameterized command execution or input validation. When patching, test the release workflow with intentionally malicious payloads in patchNotesData.json to confirm the injection is blocked. Update any GitHub Actions workflows in your own projects that follow the same anti-pattern.

Detection guidance

Search your GitHub repository for release.yml or similar workflow files that pass JSON file contents directly into execSync() or shell commands without escaping. Audit pull requests merged in the past 30 days to patchNotesData.json or related release configuration files for suspicious shell metacharacters (backticks, $(), semicolons, pipes, &&, ||). Enable GitHub Advanced Security to scan workflows for hardcoded secrets or suspicious command patterns. Monitor GitHub Actions logs for unexpected commands executed during release workflows. If using a SIEM, correlate repository modifications with unusual child process spawning on the runner.

Why prioritize this

This vulnerability warrants HIGH priority because it directly enables code execution on a trusted system (GitHub Actions runner) with elevated permissions. The attack path requires compromise of the development pipeline rather than end-user systems, making it attractive to sophisticated attackers targeting supply-chain integrity. Although it requires pull request access, many open-source projects accept external contributions, lowering the barrier. The potential to inject malware into published releases creates cascading risk for downstream consumers.

Risk score, explained

CVSS 3.1 score of 7.3 (HIGH) reflects: Network-accessible GitHub Actions (AV:N), low attack complexity (AC:L), requirement for pull request credentials (PR:L), user interaction needed for merge approval (UI:R), no scope change (S:U), high confidentiality and integrity impact (C:H/I:H), and no availability impact (A:N). The score appropriately captures the serious nature of arbitrary command execution in a privileged context, tempered by the requirement for legitimate access and merge approval. This is not critical (8.0+) because it does not affect availability and requires authenticated access, but it is solidly in the HIGH range.

Frequently asked questions

Can this vulnerability be exploited without pull request access?

No. The attacker must have pull request permissions to the affected repository. This is typically restricted to contributors or maintainers, though open-source projects may grant this to external contributors after initial vetting.

Does this affect released packages or only the repository?

Both. If a malicious pull request is merged and the release workflow is triggered, the attacker executes commands on the GitHub Actions runner with repository write access. This could result in modified release artifacts being published, secrets being exfiltrated, or the repository being sabotaged. End users consuming the poisoned release are at risk.

How do I know if my GitHub Actions workflows have this vulnerability?

Search your .github/workflows/ directory for any workflow that passes JSON, YAML, or environment variable contents into execSync() or shell commands without escaping or parameterization. If you see patterns like execSync(`command ${variable}`), that is a red flag. Use GitHub's workflow linter and security scanning tools to identify unsafe patterns.

Is this vulnerability in a widely-used version of KanaDojo?

Vulnerability details depend on the KanaDojo version you are using. Check the official KanaDojo repository and GitHub Security Advisory for confirmation of affected versions and available patches. If you maintain a fork or derivative with release automation, audit your own workflows regardless.

This analysis is provided for informational purposes only and does not constitute legal or professional security advice. The information herein is based on the CVE description and public advisories as of the publication date; threat landscape and patch availability may evolve. Organizations should independently verify patch status, test remediation in non-production environments, and consult with the KanaDojo maintainers and their own security team before deploying fixes. No liability is assumed for inaccuracy, incompleteness, or reliance on this information. Always follow your organization's change management and incident response procedures. Source: NVD (public-domain), retrieved 2026-07-20. Analysis generated by SEC.co (claude-haiku-4-5).