想象一下,你开了一家火锅店,生意兴隆。为了做出最地道的锅底,你从一家信誉良好的供应商那里采购了现成的底料包。你只需要加水煮沸,就能端给顾客。这时候,如果有人偷偷在底料包里加了点“料”,比如巴豆粉,那你的顾客吃完就会集体拉肚子,你的店也就完了。
软件供应链攻击的原理,和这个火锅店的故事一模一样。现代软件开发很少从零开始,而是大量使用第三方的开源代码、库和框架。npm(Node Package Manager)就是最大的JavaScript“食材市场”,开发者们会从这里“采购”各种现成的功能模块,加到自己的应用里。
攻击者不直接攻击你的软件,而是攻击这个“食材市场”。他们通过恶意手段,在npm等平台上植入含有恶意代码的“食材”。一旦有开发者不小心“采购”了这些食材,整个应用就相当于被“投毒”了。最终,使用这个应用的终端用户,比如你我,就会成为受害者——可能会被窃取密码、银行卡信息,或者电脑变成攻击者的“肉鸡”。
攻击者在npm上“下毒”主要有三种手段,越来越隐蔽,防不胜防。
一旦你的软件中招,后果可能非常严重,远超你的想象。