快速检查多个包管理系统中的依赖混淆漏洞

枫少@KillBoy
枫少@KillBoy
管理员
219
文章
0
粉丝
资源分享837,001字数 820阅读2分44秒阅读模式
AI智能摘要
你的私有代码包可能正面临被劫持的风险!依赖混淆漏洞正成为供应链攻击的新温床,攻击者只需在公共仓库发布同名恶意包,就能轻松入侵你的开发环境。这款开源工具能一键扫描Python、JavaScript、PHP、Java项目的依赖配置文件,精准识别未在公共仓库注册的私有包,并支持白名单机制排除误报。三行命令完成安装,立即为你的代码仓库筑起安全防线。
— AI 生成的文章内容摘要

快速检查多个包管理系统中的依赖混淆漏洞

关于Confused

Confused是一款功能强大的依赖混淆漏洞检测工具,广大研究人员可以使用Confused跨多个包管理器检测其中存在的依赖混淆漏洞。Confused能够检测Python(pypi) requirements.txt、JavaScript (npm) package.json、PHP (composer) composer.json或MVN (maven) pom.xml等依赖配置文件中引用的私有包名称和命名空间,并帮助检测潜在的依赖混淆漏洞。

解释工具输出

Confused只会读取应用程序的依赖项定义文件,并检查公共包存储库中该文件中的每个依赖项条目。除此之外,它还会继续报告在公共存储库中找不到的所有包名—这种状态意味着包可能容易受到此类攻击,而此向量尚未被利用。

然而,这并不意味着应用程序没有受到攻击,或仍然是安全的。如果你发现你的应用程序正在使用私有包存储库,则应该确保你的私有包的命名空间已由受信任的一方(通常是你自己或你的公司)声明。

已知假阳性

一些包存储库生态系统(比如说npm)都会有一种名为“范围”的概念,也就是说其中的代码包可以是私有的也可以是公共的。简而言之,它意味着一个命名空间会有一个更高的级别-范围。这些作用域本质上不是公开可见的,这意味着Confused无法可靠地检测目标代码包是否已声明。如果应用程序使用作用域内的包名称,则应确保受信任方已在公共存储库中声明了作用域名称。

工具安装

广大研究人员可以选择访问该项目的【Releases页面】来下载预编译好的项目代码,然后解压并运行即可。

或者,你也可以在本地安装并配置好Go语言环境,然后使用Go编译器来进行安装(安装和更新命令相同):

go get -u github.com/visma-prodsec/confused

除此之外,广大研究人员也可以使用下列命令将该项目源码克隆至本地,然后使用Go命令进行代码编译和构建:

git clone https://github.com/visma-prodsec/confused  cd confused  go get  go build

工具使用

Usage:   ./confused [-l LANGUAGENAME] depfilename.ext     Usage of ./confused:    -l string          代码包存储库系统,可选的值有:"pip", "npm", "composer", "mvn" (默认为"npm")    -s string          已知安全的命名空间,提供以逗号分隔的列表,支持通配符    -v    Verbose模式输出

工具使用样例

Python(PyPI)

./confused -l pip requirements.txt     Issues found, the following packages are not available in public package repositories:   [!] internal_package1

JavaScript(npm)

./confused -l npm package.json     Issues found, the following packages are not available in public package repositories:   [!] internal_package1   [!] @mycompany/internal_package1   [!] @mycompany/internal_package2     # Example when @mycompany private scope has been registered in npm, using -s  ./confused -l npm -s '@mycompany/*' package.json     Issues found, the following packages are not available in public package repositories:   [!] internal_package1

Maven(mvn)

./confused -l mvn pom.xml     Issues found, the following packages are not available in public package repositories:   [!] internal   [!] internal/package1   [!] internal/_package2

项目地址

Confused:【GitHub传送门

参考资料

https://medium.com/@alex.birsan/dependency-confusion-4a5d60fec610

https://azure.microsoft.com/en-gb/resources/3-ways-to-mitigate-risk-using-private-package-feeds/

https://github.com/visma-prodsec/confused/releases/latest

https://www.freebuf.com/sectool/266930.html

 
枫少@KillBoy
评论  83  访客  82  作者  1
    • 记忆编码员
      记忆编码员 1

      这工具对npm项目挺管用的,刚试了下

      • 石匠朱
        石匠朱 1

        这工具对小团队挺实用,不用搭CI也能快速排查风险

        • 流浪的诗人
          流浪的诗人 0

          感觉还行,不过假阳性有点多吧?

            • 银甲飞骑
              银甲飞骑 1

              @ 流浪的诗人 假阳性确实有点烦,特别是 composer 里那些本地路径包

            • 碧海琉璃
              碧海琉璃 0

              求问pip环境下带私有源的requirements能准确识别吗?

                • 雷霆大法师
                  雷霆大法师 0

                  @ 碧海琉璃 pip私有源得配trusted-host和extra-index-url,不然confused可能读不到真实来源

                • 琴师吴
                  琴师吴 0

                  前几天刚搞完依赖混淆的事,确实得盯紧命名空间

                  • 古董钥匙
                    古董钥匙 1

                    @mycompany这种scope要是没注册就容易出事啊

                      • 永恒咒术师
                        永恒咒术师 1

                        @ 古董钥匙 scope没注册等于把门敞开,npm上随便谁都能抢注@mycompany/internal

                        • 火凤燎原
                          火凤燎原 0

                          @ 古董钥匙 scope没注册的风险确实大,我们项目就中过招

                        • 木匠周九
                          木匠周九 0

                          又是标题党?说“快速检查”结果还得手动配一堆参数🤔

                            • 纸匠陶
                              纸匠陶 1

                              @ 木匠周九 手动配参数是有点麻烦,但比写脚本自己查快多了,不算标题党吧

                            • 百合心愿
                              百合心愿 0

                              可以这样理解:只要私有包名没在公仓注册就有风险

                              • RoseQuartz
                                RoseQuartz 1

                                我之前也踩过这坑,内部包被恶意上传到pypi了

                                • 红绸飞舞
                                  红绸飞舞 0

                                  工具输出里那个-s参数具体咋写通配符?有人试过吗

                                  • 废柴少女
                                    废柴少女 0

                                    hhh 本地跑完发现一堆internal包,吓得赶紧去注册scope

                                      • 剑门子
                                        剑门子 0

                                        @ 废柴少女 -s 参数支持 * 通配符,比如 ‘@myteam/*’ 就行,亲测有效

                                      • 社恐小安全区
                                        社恐小安全区 1

                                        pip环境下私有源的包名要是带下划线会不会被误判?

                                        • 腾蛇乘雾
                                          腾蛇乘雾 1

                                          刚用这工具扫了我们项目,@internal 的 scope 没注册,吓出一身汗

                                          • 时光煮雨
                                            时光煮雨 0

                                            内部包命名最好加个统一前缀,不然真容易混

                                            • 冥界行者
                                              冥界行者 0

                                              npm 那块 scope 注册流程有人能说说吗?官方文档太绕了

                                              • 慢步向前
                                                慢步向前 1

                                                我司上周就中招了,有个 internal-util 被抢注,还好没上线

                                                • TurquoiseTide
                                                  TurquoiseTide 1

                                                  mvn 的 groupID 如果是 com.company.internal 这种会被报吗?

                                                  • 赛博信标
                                                    赛博信标 0

                                                    这玩意对小团队挺友好的,不用配 CI 也能快速扫一遍

                                                    • 嘟嘟奶昔
                                                      嘟嘟奶昔 0

                                                      composer.json 里 repo 类型是 vcs 的也会被当成私有包报出来,有点坑

                                                      • 冰霜旅者
                                                        冰霜旅者 0

                                                        internal-util这种通用名真的别用,我们之前也差点被撞包

                                                        • 龙魂战士
                                                          龙魂战士 0

                                                          刚跑完composer项目,报了一堆vcs repo的包,其实都是内部git,误报挺烦的

                                                            • 机敏过人
                                                              机敏过人 1

                                                              @ 龙魂战士 vcs repo误报问题确实头疼,有法子过滤不?

                                                            • 夜半歌者
                                                              夜半歌者 0

                                                              mvn的groupID要是com.xxx.internal这种,工具会当成私有包报出来吗?

                                                              • 月下琴魔
                                                                月下琴魔 0

                                                                感觉假阳性主要集中在带下划线或驼峰命名的包上,蛮那啥的

                                                                • 星空呓语
                                                                  星空呓语 0

                                                                  小团队用这个扫一遍确实省事,不用搭复杂流水线就能排查风险

                                                                    • 智联时代
                                                                      智联时代 0

                                                                      @ 星空呓语 对小团队太友好了,省了搭CI的麻烦

                                                                    • VelvetMoonbeam
                                                                      VelvetMoonbeam 1

                                                                      hhh 扫完发现三个没注册的scope,连夜去npm占坑了👍

                                                                      • 幽灵书记
                                                                        幽灵书记 1

                                                                        内部包统一加个公司缩写前缀吧,比如acme-internal-utils,安全点

                                                                        • 巨蟹月光
                                                                          巨蟹月光 1

                                                                          这工具对maven项目支持怎么样?

                                                                          • 隐形人设
                                                                            隐形人设 1

                                                                            npm scope那块解释得不够清楚啊

                                                                            • Cheeseburger Ninja
                                                                              Cheeseburger Ninja 0

                                                                              之前用类似的工具误报率太高了,这个准确吗?

                                                                              • 寒露凝霜
                                                                                寒露凝霜 1

                                                                                -s参数支持多个通配符吗?比如’@acme/*,@test/*’

                                                                                  • 果冻时间
                                                                                    果冻时间 0

                                                                                    @ 寒露凝霜 -s参数可以写多个通配符,用逗号分开就行

                                                                                    • SapphireSiren
                                                                                      SapphireSiren 1

                                                                                      @ 寒露凝霜 -s参数可以,我刚试了’@acme/*,@test/*’这种写法是支持的

                                                                                    • 纸巾
                                                                                      纸巾 0

                                                                                      我们内部包都加了公司前缀,扫出来全是安全命名空间

                                                                                        • MagentaPetal
                                                                                          MagentaPetal 0

                                                                                          @ 纸巾 加前缀这招稳,我们也是acme-打头,扫出来干净

                                                                                        • 当铺朝奉
                                                                                          当铺朝奉 0

                                                                                          composer的vcs类型被误报确实挺烦人的

                                                                                          • 暗铁苍狼
                                                                                            暗铁苍狼 0

                                                                                            刚试了下pip项目,requirements.txt里带私有源的包没报错

                                                                                              • 黄鹤楼畔
                                                                                                黄鹤楼畔 0

                                                                                                @ 暗铁苍狼 pip私有源的包没报错可能是因为工具默认只查公仓,没连你私有源吧

                                                                                              • 语速调节器
                                                                                                语速调节器 0

                                                                                                依赖混淆这事真的防不胜防

                                                                                                • 账房林
                                                                                                  账房林 0

                                                                                                  要是能集成到CI里自动扫描就好了

                                                                                                    • 窗台时光机
                                                                                                      窗台时光机 0

                                                                                                      @ 账房林 要是能集成到CI/CD流程里就完美了

                                                                                                    • 青瓷梦语
                                                                                                      青瓷梦语 0

                                                                                                      工具安装倒是挺简单的,go get就行

                                                                                                        • 嘚瑟的便利贴
                                                                                                          嘚瑟的便利贴 0

                                                                                                          @ 青瓷梦语 go get装是快,但得先配好GOPATH和代理,新手容易卡住

                                                                                                        • 薄荷初夏
                                                                                                          薄荷初夏 1

                                                                                                          这个工具对maven支持咋样?有人试过没?

                                                                                                          • 魔尊降临
                                                                                                            魔尊降临 0

                                                                                                            npm scope注册流程确实麻烦,官方文档绕来绕去的

                                                                                                            • 灵魂漫步者
                                                                                                              灵魂漫步者 0

                                                                                                              内部包命名加个统一前缀确实很重要,我们之前就吃过亏

                                                                                                              • 烛泪珠
                                                                                                                烛泪珠 0

                                                                                                                工具安装倒是挺简单的,go get直接搞定

                                                                                                                • 犀牛勇士
                                                                                                                  犀牛勇士 0

                                                                                                                  composer的vcs类型误报问题有办法解决吗?

                                                                                                                  • 沙漠风语者
                                                                                                                    沙漠风语者 0

                                                                                                                    pip环境下私有源支持得怎么样?

                                                                                                                    • 电子牧者
                                                                                                                      电子牧者 1

                                                                                                                      刚跑了下npm项目,发现两个没注册的scope,赶紧去补了

                                                                                                                        • 绣工董
                                                                                                                          绣工董 1

                                                                                                                          @ 电子牧者 npm scope没注册真危险,我上次漏了一个差点被抢注

                                                                                                                        • 猫薄荷时光
                                                                                                                          猫薄荷时光 1

                                                                                                                          npm scope没注册真的吓人,刚补完手还在抖

                                                                                                                          • 小熊软软
                                                                                                                            小熊软软 1

                                                                                                                            pip私有源带下划线的包会被误判吗?求试过的说说

                                                                                                                            • 梦回旧宅
                                                                                                                              梦回旧宅 1

                                                                                                                              internal-util这种名字千万别用,血泪教训啊

                                                                                                                              • 风筝追风人
                                                                                                                                风筝追风人 0

                                                                                                                                hhh 扫出两个未注册scope,立马去npm占坑了👍

                                                                                                                                • 幽灵风
                                                                                                                                  幽灵风 1

                                                                                                                                  mvn的com.xxx.internal会被报?有点慌

                                                                                                                                  • 墨色禅
                                                                                                                                    墨色禅 1

                                                                                                                                    工具假阳性集中在composer的vcs类型,能不能加个忽略选项?

                                                                                                                                    • 流萤梦
                                                                                                                                      流萤梦 0

                                                                                                                                      感觉还行,但-s通配符写法文档太模糊了

                                                                                                                                      • Dancing Potato
                                                                                                                                        Dancing Potato 0

                                                                                                                                        -s参数通配符写法文档太模糊了,试了几次才成功

                                                                                                                                        • 智能幽灵
                                                                                                                                          智能幽灵 0

                                                                                                                                          pip项目跑了下,带私有源的包好像没报,是忽略了吗?

                                                                                                                                          • 霓虹散
                                                                                                                                            霓虹散 0

                                                                                                                                            感觉这工具对composer项目支持不太好,误报一堆

                                                                                                                                            • 拇指姑娘
                                                                                                                                              拇指姑娘 0

                                                                                                                                              内部包统一加前缀这招确实管用,我们项目就没扫出问题

                                                                                                                                              • 奶香糯米
                                                                                                                                                奶香糯米 1

                                                                                                                                                刚试了mvn,com.company.internal这种会被报,得手动加到-s里排除

                                                                                                                                                • 山海行者
                                                                                                                                                  山海行者 0

                                                                                                                                                  这工具原理是啥?就是检查包名在不在公仓?

                                                                                                                                                  • 巧克力泡芙
                                                                                                                                                    巧克力泡芙 1

                                                                                                                                                    composer的vcs类型误报问题有办法解决吗?文章好像没说清楚

                                                                                                                                                    • 黄十
                                                                                                                                                      黄十 1

                                                                                                                                                      工具输出结果里带感叹号的是高危,没感叹号的算啥?

                                                                                                                                                      • FrostfireNymph
                                                                                                                                                        FrostfireNymph 0

                                                                                                                                                        内部包名带下划线的确实容易误报,我们扫出来好几个假的

                                                                                                                                                        • 躺平专家
                                                                                                                                                          躺平专家 0

                                                                                                                                                          mvn的com.xxx.internal这种groupID会被报,得加到-s里排除

                                                                                                                                                          • 宝玉梦游
                                                                                                                                                            宝玉梦游 0

                                                                                                                                                            composer的vcs repo误报能不能加个–ignore-vcs参数啊?

                                                                                                                                                            • 残月钩
                                                                                                                                                              残月钩 0

                                                                                                                                                              hhh 扫完发现@oldteam没注册,火速去npm占了坑👍

                                                                                                                                                              • 幽谷先知
                                                                                                                                                                幽谷先知 1

                                                                                                                                                                Python项目扫了下,误报比想象中多啊。

                                                                                                                                                                  • 草莓小奶龙
                                                                                                                                                                    草莓小奶龙 1

                                                                                                                                                                    @ 幽谷先知 试过加-s参数过滤私有命名空间吗?

                                                                                                                                                                  • MoonlitPsyche
                                                                                                                                                                    MoonlitPsyche 1

                                                                                                                                                                    Go版本装起来还挺快。

                                                                                                                                                                    • Hodgepodge
                                                                                                                                                                      Hodgepodge 1

                                                                                                                                                                      npm的范围包检测这块确实是个痛点。

                                                                                                                                                                      • 木匠刘八
                                                                                                                                                                        木匠刘八 1

                                                                                                                                                                        这工具能扫composer.json还挺方便。

                                                                                                                                                                          • 枫少@KillBoy
                                                                                                                                                                            枫少@KillBoy

                                                                                                                                                                            @ 木匠刘八 对,PHP项目也能直接扫了。

                                                                                                                                                                        匿名

                                                                                                                                                                        发表评论

                                                                                                                                                                        匿名网友

                                                                                                                                                                        拖动滑块以完成验证