Skip to content
Tech News
← Back to articles

A backdoor in a LinkedIn job offer

read original get Cybersecurity Privacy Toolkit → more articles
Why This Matters

This article highlights a sophisticated backdoor embedded within a seemingly benign GitHub repository linked to a LinkedIn job offer, demonstrating how malicious actors can exploit common development workflows to deploy malware. It underscores the importance for developers and companies to scrutinize code sources and understand the risks associated with automated dependency installation, especially in hiring or collaboration scenarios.

Key Takeaways

Last week, I got a LinkedIn message from a recruiter at a small crypto startup. We exchanged a few messages over a couple of days, she described a broken proof-of-concept they needed a lead engineer for, and then sent me a public GitHub repo to review. Specifically, she asked me to “check out the deprecated Node modules issue.”

It’s not uncommon to ask for a review of an existing codebase, but something felt off and raised an alarm in my head, so I decided to get a bit extra paranoid.

Instead of cloning and installing dependencies, I spun up a throwaway VPS on Hetzner, cloned the repo there, and pointed Pi at it in read-only mode, with only file-reading tools enabled:

pi --tools read,grep,find,ls

I asked the agent to review the codebase and flag anything suspicious. It stopped almost immediately at app/test/index.js .

The backdoor

The repo felt like a React frontend with a Node backend. The trap was in app/test/index.js , about 250 lines disguised as a test suite. Inside, a URL is assembled from fragments:

const protocol = "https" , domain = "store" , separator = "://" , path = "/icons/" , token = "77" , subdomain = "rest-icon-handler" , bearrtoken = "logo" ;

These combine into https://rest-icon-handler.store/icons/77 .

Then, buried between walls of commented-out tests, the payload runs anything the server sends back to your machine.

... continue reading