Repository navigation
fix(security): remove injected api.js loader and revert its dev-script wiring - #1
Open
polylane[bot] wants to merge 1 commit into
Open
polylane[bot] wants to merge 1 commit into
polylane[bot] wants to merge 1 commit into
Conversation
…t wiring Co-authored-by: polylane[bot] <277585245+polylane[bot]@users.noreply.github.com>
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.
Fixes: Obfuscated loader wired into phoenixdahdev/executor's dev script and marketing build
Developer and CI machines that ran this public fork's documented development command first executed an obfuscated program, which also ran during the marketing site's build. The program had access to environment secrets on those machines, and anyone could clone the repository. After this merges, both commands run only the project's own code.
Detection evidence
Affected:
int_1321d6e42001abbn5dq5um86Why this fix
The injected commit is the decisive evidence: it does not exist upstream, it adopts upstream pull request UsefulSoftwareCo#1763's message and author, and it wires the payload into the commands a developer or the deploy workflow runs. The payload decodes with the same accessor name and dynamic-execution construct as the campaign's other copies. Restoring the three touched files to their pre-injection state and deleting the payload closes every entry point on the default branch. The injector is still unidentified, so re-infection and the credentials already exposed on any machine that ran these commands remain open. Exact times, blobs, and references are in the linked investigation.
Fix walkthrough
Watch the fix explained (2:35). Recorded for commit
a73d75c07d49a4474a5eabea61bbdb80221d0f54.Causal chain
node api.jsbefore turbo, and the deploy workflow builds the marketing app, so the loader executes when a developer runsbun run devor the marketing build runs on push to main. Both files carry the same accessor name F$FsRLfhVq_nVmBU and dynamic-execution construct as the campaign's tracked payload.devscript (documented in README.md and RUNNING.md asbun run dev); .github/workflows/deploy.yml deploy-marketing job runsbun run --cwd apps/marketing buildbun run devand the CI build credentials for the marketing deploy; the repository is public, so any clone is exposed.4 files changed (+2/-9)
.gitignore: modified, +0/-3api.js: removed, +0/-1apps/marketing/astro.config.mjs: modified, +1/-4package.json: modified, +1/-1Generated by Polylane. You can ask follow-ups by mentioning @polylane in a comment.