Xh4H/Loki

GitHub: Xh4H/Loki

针对 Node.js 项目的依赖混淆漏洞扫描与自动化利用工具,帮助识别和缓解供应链攻击风险。

Stars: 37 | Forks: 0

Loki

npm version downloads Known Vulnerabilities Responsible Disclosure Policy License
## 关于 **Loki** 有助于识别易受 **Dependency Confusion supply chain** 攻击的 `NodeJS` 项目。 创建 **Loki** 的目的是帮助开发者扫描他们的项目,并识别可能利用依赖供应链漏洞的潜在攻击媒介。 **Loki** 是北欧神话中的神。在其他能力中,他是一位精通变形和冒充他人的大师。 ## 免责声明 **Loki** 是一款防御性工具。攻击模式仅插入 payload 并开启监听服务,允许开发者连接到受损的依赖项,其唯一目的是展示配置错误的模块所造成的影响。 ## 何时可能发生 Dependency Confusion 供应链攻击? 如果出现以下情况,可能会发生 **Dependency Confusion** 攻击: * 公司使用混合方法,即从内部仓库和公共仓库下载依赖项。 * 开发者未正确配置项目的 `npm` registry。可以配置轻量级的私有 npm 代理 registry,例如 [Verdaccio](https://verdaccio.org/)。 * 依赖项名称中的拼写错误可能导致从错误的仓库下载不受信任的依赖项。这通常被称为 typosquatting。 * `package.json` 文件中指定的依赖项版本允许下载更新版本。拥有类似 `"loki-this-dependency-does-not-exist": "^1.1.0"` 的依赖项允许下载从 `1.1.0` 到(但不包括)`2.0.0` 的最新版本依赖项。使用 `tilde` `~` 也会发生类似的情况。如果项目采用混合设置,并且公共仓库(例如 `npmjs.org`)包含比私有仓库更高的版本,则会下载公共仓库中的版本。 * 包名与导入名不同。如果初级开发者在阅读代码时,期望仓库中使用的包的安装名称与 `import` 名称相同。例如,我们可以看看 Python 图像处理库 `OpenCV`,其导入名称是 `cv2`,但安装它的正确 `pip install` 命令是 `pip install opencv-python`。 ## 缓解措施 * 通过配置私有仓库进行严格的内部依赖管理,当其不包含所需依赖项时,绝不越界(访问公共领域)。如前所述,[Verdaccio](https://verdaccio.org/) 是实现此目标的绝佳工具。 * 使用依赖范围(scopes)或命名空间来避免 typosquatting。 * 使用版本固定。这种技术不会索引您当前的依赖项是否已受损,但它会阻止下载新的不受信任版本。 * 完整性检查。 ## 功能 * 依赖扫描 * npmjs 包发布 * 可配置的 reverse shell 生成 * 在易受攻击的项目中注入 payload * 攻击模式(成功注入 payload 后的 PoC) * Inspector 模式(如果要扫描的目录是 git 仓库,则显示引入易受攻击包的 commit 哈希) ## 使用说明 ### 前置条件 要使用此工具,您的环境中应具备以下条件: - 稳定且较新版本的 Node.js 和 npm - 路径中可用的 Git 二进制文件 ### 如果从仓库下载: ``` $ node bin/loki.js [options] ``` ### 使用 npx: ``` $ npx @xh4h/loki [options] ``` ### 选项 ``` Options --directory -d Path to directory to scan --entrypoint -e Path to file to execute if directory is vulnerable (defaults to index.js) --inspect -i Enable inspector mode --accesstoken -a Access token for npmjs.com --attack Whether to attack the project --host Host IP where the reverse shell listener is running (defaults to localhost) --port Port where the reverse shell listener is running (defaults to 1456) ``` ## 许可证 [MIT](LICENSE) ## 致谢 非常感谢 [Snyk](https://snyk.io/) 团队在 [snync](https://github.com/snyk-labs/snync) 上的工作,因为 **Loki** 使用了他们工具的修改版本。
标签:Cilium, MITM代理, NodeJS 安全, NPM, PFX证书, TLS, 供应链攻击, 依赖混淆, 加密, 包劫持, 攻击检测, 数据可视化, 文档安全, 暗色界面, 漏洞扫描器, 网络安全, 网络安全研究, 自动利用, 自定义脚本, 自定义脚本, 软件开发工具包, 防御工具, 隐私保护