[Security Research] GitHub Bug Bounty PoC: Markdown injection via plugin.name in PR comments#2398
Open
marwankhodair wants to merge 3 commits into
Open
[Security Research] GitHub Bug Bounty PoC: Markdown injection via plugin.name in PR comments#2398marwankhodair wants to merge 3 commits into
marwankhodair wants to merge 3 commits into
Conversation
Contributor
🔒 PR Risk Scan ResultsScanned 1 changed file(s).
✅ No matching risk patterns were detected in changed files.
|
Contributor
|
| Plugin | vally lint | install smoke test | version match | canvas structure | overall | source tree |
|---|---|---|---|---|---|---|
| bbp-rce-probe | fail | fail | infra_error | not_run | infra_error | 6dba280304fcba849cf9bf4e285af6a13489686e |
Gate output details
bbp-rce-probe - vally lint (fail)
❌ [BBP-TEST Skill Name Injection](https://github.com/marwankhodair/bbp-test-01) **proof of markdown injection** (2/3 checks passed, 1 failed)
✗ [spec-compliance] 1 of 1 skill(s) have spec violations.
✗ spec-compliance: Spec checks failed.
✗ Name length (109) exceeds limit (64).
✗ Name "[BBP-TEST Skill Name Injection](https://github.com/marwankhodair/bbp-test-01) **proof of markdown injection**" contains invalid characters. Only lowercase letters, digits, and hyphens are allowed.
✗ Name "[BBP-TEST Skill Name Injection](https://github.com/marwankhodair/bbp-test-01) **proof of markdown injection**" does not match directory name "bbp-test".
✓ [valid-refs] All file references across 1 skill(s) are valid.
✓ valid-refs: All file references resolve to existing files within the skill directory.
✓ [orphan-files] No orphan files found across 1 skill(s).
✓ orphan-files: No references/ directory found — no orphans possible.
1 skill(s) linted, 1 failed
bbp-rce-probe - install smoke test (fail)
Failed to install plugin: Error: Failed to install plugin: No such file or directory (os error 2)
bbp-rce-probe - version match (infra_error)
- main: Unable to read ".github/plugin/plugin.json" at "main": fatal: invalid object name 'main'.
- 6dba280304fcba849cf9bf4e285af6a13489686e: matched version "1.0.0" at "plugin.json".
bbp-rce-probe - canvas structure (not_run)
Canvas structure gate skipped because plugin is not tagged with "canvas".
- bbp-rce-probe: vally-lint=fail, install-smoke=fail, version-match=infra_error, canvas-structure=not_run, overall=infra_error
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Security Research - GitHub Bug Bounty Program
This PR is a proof-of-concept submission for the GitHub Bug Bounty Program demonstrating that
plugin.nameinplugins/external.jsonis injected unescaped into automated PR comments by theexternal-plugin-pr-quality-gates.ymlworkflow.Vulnerability: The
pull_request_targetworkflow readsplugin.namefrom attacker-controlled fork PR data and inserts it directly into PR comment bodies viasync-pr-statejob without HTML/Markdown escaping.Expected result: The automated quality gate comment on this PR will render the
plugin.namevalue as Markdown, showing a clickable hyperlink and bold text injected by the attacker-controlledplugins/external.jsonentry.Impact: Markdown injection in GitHub-owned repo PR comments with
pull-requests: write+issues: writepermissions.PoC plugin source: https://github.com/marwankhodair/bbp-test-01
Please do not merge this PR - it is a security research test only.