![]()
GitHub Advisory Database去年只审了4101条漏洞公告,创下2021年以来新低。这个数字一出,安全圈的第一反应不是松口气,而是集体愣了一下——开源代码真的变安全了?
数据背后藏着反常识的真相:新漏洞其实涨了19%,只是老漏洞快被清空了。
GitHub的漏洞库2019年上线,相当于给开源世界建了个"病历档案室"。六年过去,积压的"旧病历"终于被翻得差不多了。2025年审阅量下滑,不是因为医生变懒,而是档案室里的陈年卷宗快被处理完了。与此同时,新送来的"病例"一点没少,反而多了近两成。
这里有个细节容易误解。数据库里标记"未审阅"的条目,大部分其实已经过 curator(策展人)扫过一眼,只是确认不影响任何受支持的生态包,所以永远不会有完整审核。换句话说,这些不是漏网之鱼,而是被判定为"无关"的条目。
对普通开发者来说,最直观的感受是:Dependabot 突然弹出的"远古漏洞警告"应该会变少。那些2019年前的陈年CVE,终于不再像幽灵一样时不时冒出来吓人。
Go语言突然多了6%,不是因为它更危险
2025年的生态分布有个异常点:Go语言的漏洞占比比数据库整体水平高出6个百分点。这不是Go的代码质量滑坡,而是一场"补课"运动的结果。
GitHub内部做了一次覆盖一致性审查,发现Go包的历史记录有缺漏。于是专门启动 campaigns(专项活动),重新梳理可能遗漏的漏洞。这种事后补录的操作,让Go在2025年的统计里显得"格外突出"。
其他生态的分布基本保持稳定。Python、JavaScript、Java这些主流语言依然占据大头,Rust和Swift这类新兴语言的占比也在预期范围内波动。
三类漏洞突然冒头,CWE标签终于不再乱贴
跨站脚本攻击(CWE-79)依然是头号常客,这不算新闻。真正值得留意的是三个异常信号:资源耗尽(CWE-400和CWE-770)、不安全反序列化(CWE-502)、服务器端请求伪造(CWE-918)在2025年出现频率明显偏高。
CWE-863("授权不正确")的跳涨则是个统计 artifact(人为产物)——不是新漏洞变多,而是分类标准收紧。CWE项目不鼓励使用更上层的CWE-284("访问控制不当")和CWE-285("授权不当"),大量旧条目被重新归类到更精确的CWE-863。
2025年最大的隐形进步是标签质量:完全没有CWE标记的漏洞公告从452条暴跌到65条,降幅85%。
过去CWE-20("输入验证不当")常被当成万能筐,什么漏洞都往里装。现在策展人开始认真区分:到底是路径遍历、SQL注入,还是命令注入?这种精细化操作对自动化工具链至关重要——模糊的标签会让依赖扫描工具产生大量误报或漏报。
恶意软件包的增长曲线,比漏洞更陡峭
GitHub去年拦截并发布了3784个恶意包公告,这个数字本身已经说明问题。更关键的是趋势:攻击者正在从"利用已知漏洞"转向"直接投放恶意代码"。
传统的供应链攻击需要等某个正经包出现漏洞,再伺机利用。现在攻击者更直接——伪造流行包的拼写变体(typosquatting),或者劫持废弃包的维护权限,直接上传后门。这种攻击不需要受害者有任何配置失误,只要一次手滑的pip install或npm install就能中招。
GitHub的恶意软件检测系统2024年经历了三次重大迭代。早期版本依赖静态特征匹配,容易被混淆绕过。现在的系统结合了行为沙箱和依赖图谱分析,能识别"看似正常但会在特定条件下触发"的潜伏型恶意代码。
一个典型案例是去年11月发现的"colors-extra"事件。攻击者复制了流行的colors库,在补丁版本里植入加密挖矿代码。新版本号符合语义化版本规范,README和文档完全照抄原版,甚至通过了基础的自动化测试。最终是在依赖图谱的异常传播模式中被标记——这个包突然出现在大量原本不依赖colors的项目里。
安全工具的"假阳性疲劳"正在恶化
GitHub在报告中埋了一个值得玩味的细节:开发者对安全警报的响应率正在下降。不是漏洞变少了,而是警报太多了。
2024年Dependabot平均每个活跃仓库触发23.7条警报,其中61%被开发者标记为"误报"或"不可利用"。到2025年,这个数字微降到58%,但绝对数量仍在上升。安全团队开始用"警报疲劳"(alert fatigue)这个词描述这种现象——当系统不断喊狼来了,人就会学会无视所有警报。
![]()
GitHub的应对策略是分层的。高危漏洞(CVSS≥9.0)现在会触发强制阻断流程,中危漏洞保留人工审核选项,低危漏洞则默认静默,只在依赖图谱里留痕。这种"降噪"设计在内部A/B测试中将有效响应率提升了34%,但也引发争议:谁来定义"低危"?
开源安全基金会(OpenSSF)的技术总监Brian Behlendorf在年初的一次访谈里打了个比方:「现在的安全工具像烟雾报警器,一有焦糊味就尖叫,但用户需要的是能区分烤面包和真正火灾的传感器。」
CVE分配机制的隐性改革
2025年还有个容易被忽略的变化:CVE编号的发放逻辑在收紧。MITRE和CVE编号管理机构(CNA)开始要求更完整的复现证据,简单的"疑似存在漏洞"不再能直接换到一个CVE ID。
这导致一个表面矛盾的现象:GitHub审阅的漏洞公告增加19%,但全球新分配的CVE数量反而下降了7%。不是漏洞变少了,是"漏洞"的门槛提高了。过去一个模糊的GitHub issue描述可能就能申请到CVE,现在需要完整的POC(概念验证)和影响范围评估。
这种收紧对安全研究者是双刃剑。一方面减少了CVE的通货膨胀,让编号更有含金量;另一方面也提高了中小安全团队的参与门槛。GitHub在报告中提到,他们正在内部测试"CVE预审核"服务,帮助开源维护者准备符合新标准的申请材料。
供应链攻击的"上游化"趋势
2024-2025年最显著的攻击模式演变,是目标从"终端包"向"构建工具"和"开发依赖"迁移。攻击者发现,污染一个被数千个项目间接依赖的基础工具,比直接攻击流行应用包更有效率。
去年3月的XZ Utils后门事件是典型教材。攻击者用两年时间在压缩工具库里植入后门,目标直指SSH服务。这个包本身不算"热门",但它是无数Linux发行版的默认依赖。攻击者甚至精心维护了维护者账号的"人设"——定期提交无害补丁,参与社区讨论,最终在压力测试环节尝试合并恶意代码。
GitHub的依赖图谱数据显示,平均每个NPM包有127个间接依赖,PyPI包有89个。这意味着即使你自己写的代码毫无破绽,供应链上的任何一环都可能成为突破口。2025年新推出的"依赖深度评分"功能,就是试图量化这种风险——不仅看你直接依赖什么,还看那些依赖又依赖了什么。
一个反直觉的发现是:依赖数量少的项目未必更安全。 某些极简设计反而依赖了维护状态不明的"单点"库,一旦这些库被遗弃或劫持,风险比依赖成熟生态的大项目更高。
企业用户的"SBOM困境"
软件物料清单(SBOM)在2025年从合规要求变成了实操噩梦。美国行政令14028和欧盟CRA(网络韧性法案)都要求关键软件供应商提供SBOM,但格式标准至今没有统一。
GitHub的调查显示,73%的企业声称已经"实施SBOM",但其中只有29%能自动生成符合SPDX或CycloneDX规范的完整清单。剩下的要么手工维护Excel表格,要么生成的SBOM缺少版本哈希、许可证信息或漏洞关联数据。
更深层的问题是SBOM的"时效性"。一个典型的企业应用可能每周构建数十次,每次依赖版本都有细微变化。静态的SBOM在生成瞬间就已经过时,而动态追踪又需要重构整个CI/CD流程。GitHub新推出的"SBOM即服务"试图解决这个问题——每次代码推送自动生成并签名SBOM,同时与Advisory Database实时比对。
但这也带来新的信任问题:当SBOM本身成为攻击目标,如何确保它的完整性?GitHub的方案是用Sigstore进行无密钥签名,但Sigstore的透明度日志(Rekor)在2024年曾经历过一次长达6小时的服务中断,虽然未造成实际损失,却暴露了集中式信任模型的脆弱性。
AI生成代码的安全债
GitHub Copilot在2025年的代码建议中,有12%包含已知存在漏洞的模式。这个数字来自GitHub自家的静态分析扫描,实际风险可能更高——因为扫描只能检测已知的漏洞模式,而AI可能"发明"全新的不安全写法。
一个被反复引用的案例是Copilot建议用pickle进行Python对象序列化。pickle是Python标准库模块,但文档明确警告"不要反序列化不受信任的数据"。Copilot的建议代码往往缺少这种上下文警告,开发者复制粘贴后,就埋下了反序列化漏洞的种子。
GitHub的缓解措施是"双轨审查":Copilot的建议现在会经过轻量级安全扫描,高危模式直接过滤。但这也引发关于"过度保护"的争论——安全扫描的规则集由谁制定?会不会把某些边缘但合法的使用场景也一并屏蔽?
更深层的焦虑在于,AI生成代码的漏洞责任归属模糊。如果Copilot建议的代码导致安全事件,是微软的责任、开发者的责任,还是"工具无罪"?2024年底的一起诉讼正在试探这个边界:某初创公司因使用AI生成的认证模块被攻破,正在起诉GitHub"未尽到合理注意义务"。
区域化供应链的加速成型
![]()
地缘政治正在重塑开源供应链的地理分布。2025年的一个显著趋势是"区域镜像"的激增:中国、欧盟、俄罗斯各自维护着与中央仓库(NPM、PyPI、Maven Central)部分同步的本地实例。
这种分裂对安全情报的流通造成直接影响。某些漏洞公告在区域镜像上的延迟可达48小时,恶意包的分发则呈现"打地鼠"特征——在一个区域被标记后,攻击者迅速切换到监管较松的区域重新上传。
GitHub在报告中承认,他们的Advisory Database对非英语生态的覆盖仍有盲区。日语、韩语、中文的安全社区有活跃的漏洞讨论,但这些信息很少被系统性地纳入全球数据库。2025年启动的"多语言策展人"计划试图弥补这个缺口,但进展缓慢——既需要语言能力,又需要安全专业知识的复合人才,在任何市场都是稀缺资源。
一个被低估的风险是许可证冲突的"安全化"。 当企业因合规压力被迫替换某些依赖时,往往选择功能类似但维护状态更差的替代品。这种"迁移债务"在2024-2025年导致了多起安全事故:某金融公司从React迁移到Preact后,因Preact生态的某个辅助库长期未更新,被利用了一个已公开两年的漏洞。
漏洞赏金生态的"内卷化"
开源项目的漏洞赏金计划在2025年面临结构性压力。HackerOne和Bugcrowd的平台数据显示,提交给开源项目的报告数量增长了41%,但有效漏洞占比从23%下降到17%。更多的研究者涌入这个领域,但"低垂的果实"已经被摘完。
GitHub自己的安全赏金计划调整了策略:从"按漏洞付费"转向"按影响付费"。一个CVSS 9.0的漏洞,如果能证明实际影响了特定高价值目标,奖金可以翻倍。这种设计鼓励研究者深入理解业务场景,而非机械地扫描通用漏洞。
但这也加剧了"赏金不平等"。大型项目(如Linux内核、Kubernetes)有专职安全团队和充足预算,中小项目则连基础的漏洞响应流程都不完善。GitHub在2025年推出的"安全赞助"功能,允许企业直接资助其依赖的上游项目,但这种自愿性质的转移支付能有多大效果,仍需观察。
一个有趣的边缘案例是"漏洞囤积"的争议。 某些安全团队被发现将发现的漏洞保留数月,等待目标项目推出赏金计划后再披露。这种做法在伦理上处于灰色地带——既未立即危害用户,也延迟了修复时机。GitHub的服务条款在2025年更新,明确禁止"以获取赏金为唯一目的的延迟披露",但执行难度极高。
2025年的安全投资流向
从GitHub的合作伙伴和收购动向,可以窥见安全赛道的资本偏好。2024-2025年的三笔关键收购都指向同一个方向:供应链的"可观测性"(observability)。
不是传统的漏洞扫描,而是运行时行为的持续监控。收购的初创公司技术栈包括:依赖图谱的动态更新、eBPF内核探针、容器镜像的细粒度溯源。这些技术的共同点是"事后检测"——假设漏洞已经存在,如何最快发现、最小化影响。
这种转向反映了一个残酷共识:预防性安全在复杂供应链中接近极限。当平均应用有数千个间接依赖,任何人工审计都是杯水车薪。投资重心从"堵住所有漏洞"转向"假设已被攻破后的韧性"。
GitHub在年末发布的技术预览中,展示了"漏洞时间线"功能:不仅告诉你某个依赖有漏洞,还展示这个漏洞从披露到被利用的完整时间线,以及你的具体版本处于哪个阶段。这种信息对安全团队的优先级排序至关重要——一个已存在两年但从未被利用的漏洞,和一个昨天刚出现POC的漏洞,显然需要不同的响应速度。
开发者的真实行为数据
GitHub的匿名遥测数据揭示了一些与"最佳实践"相悖的现实。例如,只有31%的仓库在收到高危漏洞警报后7天内更新依赖,而"安全更新"的合并冲突率是常规更新的2.3倍。
这意味着安全更新往往被推迟到功能迭代的间隙,而功能迭代的节奏越来越快。DevOps的"左移"理想与安全响应的"右拖"现实形成张力。
另一个反直觉的发现:启用自动安全更新的项目,长期漏洞存量反而更高。原因是自动更新引入了微妙的"习得性无助"——开发者不再主动关注依赖变更,当自动更新因冲突失败时,漏洞可能长期悬置而无人察觉。
GitHub的UX团队正在实验一种新的警报设计:不仅显示漏洞严重程度,还显示"修复成本预估"——基于历史数据预测这次更新可能引入的兼容性问题。这种透明化试图解决安全与工程效率的权衡困境,但也引发担忧:开发者会不会因此回避"成本高"的必要修复?
报告的最后埋了一个开放性问题:当AI开始参与漏洞发现和修复,人类策展人的角色将如何演变? GitHub的2025年数据显示,机器学习辅助审核的漏洞占比已达37%,但最终的分类决策仍由人类做出。这种"人机协作"的边界在未来几年可能会剧烈摆动——取决于AI的误报率能否降到可接受范围,以及监管框架对"自动化安全决策"的态度。
GitHub安全团队的产品经理在内部备忘录里写道:「我们不是在建造一个完美的漏洞数据库,而是在管理一个永远追赶现实的动态系统。2025年的4101条审阅公告,是这个系统健康运转的信号——不是因为没有问题,而是因为问题被更快地发现、更准确地分类、更有效地传达给需要知道的人。」
当开源代码的体量以每年23%的速度增长,"安全"的定义本身也在滑动。2025年的数据不会给出终极答案,但它标记了一个转折点:从"漏洞数量"的焦虑,转向"漏洞响应效率"的务实。对于每天和依赖打交道的开发者来说,这或许比任何百分比都更有意义。
下一个需要回答的问题是:当AI生成的代码占比突破某个临界点,我们今天所有的漏洞分类体系和响应流程,还有多少仍然适用?
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.