<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Michael M</title>
    <description>The latest articles on Forem by Michael M (@longblade).</description>
    <link>https://forem.com/longblade</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F110606%2Ff21c4445-4ba9-49f1-9589-b360623cb36a.png</url>
      <title>Forem: Michael M</title>
      <link>https://forem.com/longblade</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/longblade"/>
    <language>en</language>
    <item>
      <title>I Was Given a “Job Assignment” That Installed Malware</title>
      <dc:creator>Michael M</dc:creator>
      <pubDate>Mon, 10 Nov 2025 20:56:51 +0000</pubDate>
      <link>https://forem.com/longblade/i-was-given-a-job-assignment-that-installed-malware-26e2</link>
      <guid>https://forem.com/longblade/i-was-given-a-job-assignment-that-installed-malware-26e2</guid>
      <description>&lt;h3&gt;
  
  
  Here’s What Happened and What I Did To Handle It
&lt;/h3&gt;

&lt;p&gt;A few days ago, a supposed recruiter contacted me on LinkedIn for a “Web3 Full Stack Developer” role. Everything seemed normal; the messages were professional, the challenge looked legit, and they shared a Bitbucket link to a Node.js project for a take-home assignment.&lt;br&gt;
The PDF instructions looked like a typical coding test:&lt;br&gt;
Add wallet connection functionality&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Build a simple Notes CRUD API&lt;/li&gt;
&lt;li&gt;Show a demo video via Loom&lt;/li&gt;
&lt;li&gt;Nothing suspicious; until I ran npm install.&lt;/li&gt;
&lt;/ul&gt;


&lt;h3&gt;
  
  
  What Happened After Running &lt;code&gt;npm install&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;Almost instantly, I noticed abnormal activity:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Multiple Node processes started in the background&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;nethogs&lt;/code&gt; showed outbound traffic even after closing my terminal&lt;/li&gt;
&lt;li&gt;CPU usage from &lt;code&gt;/home/michael/Development/poc_v2394&lt;/code&gt; kept increasing&lt;/li&gt;
&lt;li&gt;A script named &lt;code&gt;mainThreadFallback.js&lt;/code&gt; was loaded unexpectedly&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;After digging deeper, I discovered a malicious script that was quietly &lt;strong&gt;searching for sensitive files&lt;/strong&gt; like .env, SSH keys, and browser tokens….. then attempting to exfiltrate them to a remote cloud server.&lt;/p&gt;

&lt;p&gt;It mimicked legitimate dependencies but ran &lt;strong&gt;post-install hooks&lt;/strong&gt; through a hidden script, making it look like part of the build process.&lt;br&gt;
Once confirmed, I immediately isolated the directory, stopped all related Node processes, and scanned for lingering connections using:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;ss &lt;span class="nt"&gt;-tnp&lt;/span&gt;
ps &lt;span class="nt"&gt;-ef&lt;/span&gt; | &lt;span class="nb"&gt;grep &lt;/span&gt;node
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Every malicious PID was tied to that project path.&lt;/p&gt;

&lt;h3&gt;
  
  
  What I Did Next
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Killed every suspicious process&lt;/strong&gt;: &lt;code&gt;pkill -f poc_v2394&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Removed the infected folder entirely.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Revoked and regenerated SSH keys&lt;/strong&gt; (both personal and server-side).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Reset tokens&lt;/strong&gt; from GitHub, servers, and cloud services.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Audited network connections&lt;/strong&gt; (ss, lsof, netstat,nethogs ) for hidden Node instances.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cleaned global npm&lt;/strong&gt; cache and removed possible global infections:
&lt;code&gt;npm cache clean --force&lt;/code&gt; &amp;amp; &lt;code&gt;sudo rm -rf ~/.npm ~/.cache&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Rebooted&lt;/em&gt; and verified all background processes&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;em&gt;What do you think? Should I have take more, additional steps?&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Aftermath
&lt;/h3&gt;

&lt;p&gt;When I told the “recruiter” that his project contained malware, he &lt;strong&gt;immediately blocked me&lt;/strong&gt;. That was the final confirmation that it was bad news.&lt;/p&gt;

&lt;p&gt;The assignment was nothing but a &lt;strong&gt;social engineering trap&lt;/strong&gt; targeting devs; hiding data-stealing malware inside a fake “job challenge.” While not uncommon especially considering the uptick of DPRK driven exploits, this seemed to have caught me off guard.&lt;/p&gt;

&lt;p&gt;It was a modern, targeted attack on engineers who trust shared repositories from supposed employers.&lt;/p&gt;

&lt;h3&gt;
  
  
  Lessons for Developers
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Never run &lt;code&gt;npm install&lt;/code&gt; blindly on code you didn’t verify.&lt;/li&gt;
&lt;li&gt;Always inspect &lt;code&gt;package.json&lt;/code&gt; and look for &lt;strong&gt;suspicious postinstall scripts.&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Use &lt;code&gt;--ignore-scripts&lt;/code&gt; flag on unknown projects&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;em&gt;What else did I learn?&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Dark Times Ahead!!!
&lt;/h3&gt;

&lt;p&gt;This was a targeted exploitation of developer trust. Recruitment scams are very present and evolving: instead of phishing emails, they now use take-home tests to infect machines and extract credentials. And LinkedIn is their breeding ground.&lt;/p&gt;

&lt;p&gt;If you’re a developer, &lt;strong&gt;stay paranoid&lt;/strong&gt;, sandbox unknown projects, and never trust code just because it came from a “recruiter.”&lt;/p&gt;

</description>
      <category>security</category>
      <category>nodejs</category>
      <category>npm</category>
      <category>infosec</category>
    </item>
    <item>
      <title>The Art of Growing a Small Development Team: Lessons Learned</title>
      <dc:creator>Michael M</dc:creator>
      <pubDate>Mon, 10 Jun 2024 14:00:09 +0000</pubDate>
      <link>https://forem.com/longblade/the-art-of-growing-a-small-development-team-lessons-learned-3e7i</link>
      <guid>https://forem.com/longblade/the-art-of-growing-a-small-development-team-lessons-learned-3e7i</guid>
      <description>&lt;p&gt;As a tiny web dev team with just the two of us, we recently had to deal with the fun challenge of finding a new teamie. This whole deal really made us realize that throwing a bunch of new people into the mix right away isn't always the best move. It's like everyone thinks, "more peeps, less work, yay!" But, in reality, it can totally backfire.&lt;/p&gt;

&lt;p&gt;The thing is, when you go on a hiring spree and add a bunch of new folks too quickly, you're actually setting yourself up for more drama than a reality TV show. You've got more bureaucracy, a higher chance of miscommunication, and everyone leaning on each other like we're playing a giant game of Jenga. This can lead to projects turning into a hot mess and deadlines going out the window.&lt;/p&gt;

&lt;p&gt;Onboarding and getting everyone up to speed is obviously important, but it's not just about teaching the newbies the ropes. You've gotta make sure everyone's got their own stuff to do, so it's fair and the work gets done right. If you don't, you'll have some peeps bored out of their minds and others drowning in work, which is a total no-go for team vibes.&lt;/p&gt;

&lt;p&gt;For us, the struggle was real because I was basically the only one who could handle the training gig. My buddy, bless their heart, wasn't quite up to the task, which meant I had to juggle it all. This isn't ideal, because it puts a lot of pressure on me and might not give the new folks the best start.&lt;/p&gt;

&lt;p&gt;So, trying to get a bunch of new hires up and running at the same time, especially with the situation we had, is like trying to solve a Rubik's Cube blindfolded. It's way better to add just one new person at a time, get them all cozy and confident, and then let them help out with the next round of newbies. That way, everyone learns and grows together, and you don't end up with any weak links in the chain.&lt;/p&gt;

&lt;p&gt;Companies get all excited about growing super fast and hiring a ton of people, but that's like trying to build a house without a blueprint. It's bound to fall apart. What you really wanna do is take it slow, hire one dev at a time, and make sure they're fully ready to rock before you bring in the next one. That way, you build a solid team that actually works well together.&lt;/p&gt;

&lt;p&gt;In the end, it's not about adding a bunch of bodies to the team as quickly as you can. It's about growing in a way that makes everyone stronger, smarter, and ready to tackle whatever comes next. Each new person should be like a Lego block that fits just right and helps build a cooler castle. Do it carefully, and you'll end up with a team that's unstoppable.&lt;/p&gt;

</description>
      <category>onboarding</category>
      <category>teams</category>
      <category>growth</category>
      <category>training</category>
    </item>
    <item>
      <title>Why Core Knowledge in HTML, CSS, JavaScript, and PHP is Timeless</title>
      <dc:creator>Michael M</dc:creator>
      <pubDate>Fri, 07 Jun 2024 08:32:44 +0000</pubDate>
      <link>https://forem.com/longblade/the-timeless-skills-why-core-knowledge-in-html-css-javascript-and-php-matters-2l6i</link>
      <guid>https://forem.com/longblade/the-timeless-skills-why-core-knowledge-in-html-css-javascript-and-php-matters-2l6i</guid>
      <description>&lt;p&gt;Web development, man, it's like it's on some kind of fast-forward button! New stuff pops up all the time, saying it'll make our lives easier and work smoother. But here's the thing: there's a big difference between hopping on the latest bandwagon and really knowing your stuff when it comes to the tech that makes the internet tick. So, let me tell you a story about this developer buddy of mine, John. His career had some serious ups and downs because of this whole framework deal.&lt;/p&gt;

&lt;p&gt;John, he started out hot. Straight out of college, he scored a sweet gig at a big tech place. He knew this one framework like the back of his hand, and he was whipping out killer web apps like nobody's business. Dude was on fire, and he knew it.&lt;/p&gt;

&lt;p&gt;But time goes by, and tech changes faster than fashion trends. Those new frameworks come along, and suddenly the one John was all about isn't the cool kid anymore. The thing is, these new toys need you to get down with the nitty-gritty – HTML, CSS, JavaScript, PHP – all the stuff that's like the internet's building blocks. And John? He never really got that deep into it.&lt;/p&gt;

&lt;p&gt;So now, the company's got these young bucks coming in, and they're like sponges with these new frameworks because they actually get the core stuff. John's stuck trying to keep up, and let's just say it's not pretty. His mojo's gone because he's trying to use tools he doesn't really understand.&lt;/p&gt;

&lt;p&gt;Fast forward to now, and John's still there, but he's not the big shot anymore. His workmates respect his OG status, but they feel bad because he's stuck in the slow lane of tech. And it's all because he didn't wanna learn the boring stuff everyone thought was old news.&lt;/p&gt;

&lt;p&gt;So if you're in the game or looking to hire someone, take a page out of John's book, but learn from his mistakes. You wanna be the developer that's versatile, not the one who's left in the dust. Frameworks are cool, like the latest gadgets, but if you don't get the basics, you're gonna struggle when the next big thing hits.&lt;/p&gt;

&lt;p&gt;I've seen it with job seekers, too. They come in all flashy with their framework skills, but when it comes to the real McCoy – the stuff that actually makes the internet work – they're lost. The ones who get it, who can ride the wave of change because they know their HTML from their elbow, they're the ones that shine.&lt;/p&gt;

&lt;p&gt;So the moral of the story? If you're starting out in web dev or you're the boss man looking for fresh talent, remember John. Spend some quality time with the core tech – HTML, CSS, JavaScript, PHP – it's like your bread and butter. That way, you'll always be ready for whatever the tech world throws at you.&lt;/p&gt;

&lt;p&gt;And don't be John, you know? Get those basics down pat, and you'll be set for life. Frameworks are fun, but they're like fads. Knowledge of the core stuff? That's your golden ticket, buddy. It's what keeps you ahead of the game, no matter what.&lt;/p&gt;

</description>
      <category>technologytrends</category>
      <category>frameworks</category>
      <category>career</category>
      <category>hiring</category>
    </item>
    <item>
      <title>Learn HTML,CSS and JavaScript, This knowledge will never get stale,Unlike frameworks.</title>
      <dc:creator>Michael M</dc:creator>
      <pubDate>Sun, 28 Oct 2018 13:42:15 +0000</pubDate>
      <link>https://forem.com/longblade/learn-htmlcss-and-javascript-this-knowledge-will-never-get-staleunlike-frameworks-5hhc</link>
      <guid>https://forem.com/longblade/learn-htmlcss-and-javascript-this-knowledge-will-never-get-staleunlike-frameworks-5hhc</guid>
      <description></description>
      <category>beginners</category>
      <category>scala</category>
    </item>
  </channel>
</rss>
