The Wire · Showcase
LANGUAGE TOOLS PATCHES SHELL INJECTION HOLE IN CI WORKFLOW
By RepoJournal · Filed · About Vue.js
A supply chain vulnerability in the auto-version GitHub Action could let malicious PR titles execute arbitrary commands during version bumps.
The vulnerability [1] lived in the `auto-version.yml` workflow, which pulled the PR title directly into a shell variable without sanitization. A PR title like `v3.0.0"; id; "` would execute as shell code despite existing regex checks, because GitHub Actions expands template variables before bash runs. The fix [2] now reads the PR title from environment variables instead, which bash treats as data not commands. This is the kind of supply chain risk that compounds quietly across thousands of repos using shared Actions. Update your local copy immediately if you fork language-tools.
Meanwhile, the VSCode extension got a fix [3] that restores TypeScript auto-imports in Vue files [4], closing a gap where IDE behavior diverged from standard TS. Vapor's compiler picked up two hydration fixes [5] [6] synced from core, addressing cursor tracking for nested insertions and useId evaluation order. Vue core shipped beta.13 [7] on the minor branch, so watch the changelog for what's coming next.
One email a day. Unsubscribe in one click.
Keep up with Vue.js in about 3 minutes a day: what actually shipped — the commits, pull requests, releases, and security advisories that matter.
One email a day. Unsubscribe in one click. Read a past issue →
Action items
- → Review and merge the auto-version workflow fix [ref:1] immediately if you maintain any shared Actions vuejs/language-tools [immediate]
- → Update language-tools to pick up the VSCode extension fix for TS auto-imports vuejs/language-tools [plan]
- → Monitor v3.6.0-beta.13 changelog for breaking changes before upgrading vuejs/core [monitor]
References
- [1] fix(ci): read PR title from env in `auto-version` workflow to prevent injection (#6074) vuejs/language-tools
- [2] fix(ci): read PR title from env in `auto-version` workflow to prevent injection ↗ vuejs/language-tools
- [3] fix(vscode): preserve TS auto imports behavior in Vue files (#6072) vuejs/language-tools
- [4] fix(vscode): preserve TS auto imports behavior in Vue files ↗ vuejs/language-tools
- [5] fix(compiler/vapor): preserve hydration cursor for nested insertions vuejs/vue-jsx-vapor
- [6] fix(compiler/vapor): preserve useId evaluation order before dynamic vuejs/vue-jsx-vapor
- [7] v3.6.0-beta.13 ↗ vuejs/core