Repository navigation
Remove malicious postcss payload; Node 26, pnpm 12, deps - #2023
Merged
Merged
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
Coverage Report
File Coverage
|
||||||||||||||||||||||||||||||||||||||
Member
Author
|
Do not merge: main contains a malicious payload in postcss.config.js (introduced via hijacked PR #2020). Cleaning main first. |
This branch was successfully deployed
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.
What: Remove a malicious payload from
postcss.config.jsonmain, and move the toolchain to Node 26.12.1, pnpm 12.15.0, the latest GitHub Action majors, and the latest version of every dependency except TypeScript.Why: On Oct 8,
talbshoamforce-pushed the dependabot branch behind #2020 with an unsigned commit that still claims dependabot as author (committerdavidvicos1). That commit appended obfuscated JS after a long run of whitespace on line 5 ofpostcss.config.js. The code reads a pointer from Ethereum transactions, XOR-decodes a script stored in BSC transaction data, andevals it withrequireaccess, so every build, dev server, and Storybook run since then has executed remote code. Linting never saw it:lint:cionly coveredsrc/, and the ESLint project service rejected root config files. Separately, Node and pnpm both shipped security releases this week. TypeScript stays on 6.0 becausetypescript-eslintpeerstypescript <6.1.0.Fix: Restore the original 5-line
postcss.config.js, let ESLint's project service cover root*.config.{js,mjs}, and changelint:citoeslint .so a payload like this fails CI..nvmrcpins 26.12.1 andpackageManagerpins pnpm 12.15.0 (pnpm/action-setup@v6,setup-node@v7). Dependency majors that needed code changes: Sentry 11 movedwithSentryConfigto@sentry/nextjs/config, jest-dom 7 needs its/vitestentry, andno-barrel-files2 renamed its flat config. SVG snapshots changed only because the test-onlyvite-plugin-magical-svg1.10 swaps viewBox for width/height. Awebpack-dev-middlewareoverride clears a high audit advisory. Sentry 11 also reports Vercel environments asproduction/previewinstead ofvercel-production/vercel-preview. Merging this does not undo the exposure: rotate every Vercel env var and Actions secret, and review repo write access.