SuperAPI AI 工具集

detecting-typosquatting-packages-in-npm-pypi

通用与其它

查看项目

更新于 10-16 06:49

技能介绍

用途:审计项目依赖中与热门库名称高度相似的包,主动扫描新发布的疑似仿冒包,排查误装拼错包导致的可疑供应链事件,并为关键依赖建立自动化监控与告警。

主要能力:按字符遗漏、相邻字符换位、键盘邻近键替换、插入字符、连字符/下划线等分隔符变形、添加常见前后缀等方式生成候选名称;用 Levenshtein 距离等字符串度量比对;查询 PyPI JSON API(https://pypi.org/pypi/<package>/json)和 npm 注册表 API(https://registry.npmjs.org/<package>)判断候选是否真实存在,并提取作者、版本、创建时间、下载量、描述与仓库地址等元数据;结合名称距离、发布时间新近度、下载量差距、作者与描述差异、版本数等信号加权打分,按 HIGH/MEDIUM/LOW 分级并生成可直接用于包管理器拒绝名单或 CI/CD 策略的报告。

使用方式:需 Python 3.9+ 及 requests 与 python-Levenshtein(或 rapidfuzz),具备访问上述两个注册表 API 的网络权限,并准备热门或关键包清单(如 PyPI 前 1000 或组织依赖列表)。先归一化名称(PyPI 按 PEP 503 将连字符、下划线、点视为等价),再生成候选、查询注册表、打分排序。查询注意限速,npm 返回 429 时用指数退避,较大候选列表可用连接池并限制并发。

适用场景:依赖审计、疑似拼错安装的溯源调查、关键依赖的定期自动监控、引入陌生包前的风险画像。

限制:名称相似不能单独证明包具恶意性,不能仅凭结果做批量下架;未经授权不得用于私有注册表。报告示例与部分统计数据来自资料原文,实际阈值与权重需结合自身环境调整。