OpenBSD修复已存在27年的PPP协议栈认证绕过漏洞

admin 2026-06-20 04:43:03 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: OpenBSD修复了PPP协议栈中已存在27年的认证绕过漏洞,该漏洞源于sppppapinput函数中bcmp比较逻辑缺陷,攻击者可通过设置PAP数据帧长度字段为0绕过身份验证,并可能造成内核堆越界读取。漏洞影响1999年7月至2026年6月14日所有版本,修复方案采用长度预检查机制阻止零长度绕过并消除内存读取问题。 综合评分: 82 文章分类: 漏洞分析,二进制安全,系统安全,网络安全,代码审计


cover_image

OpenBSD 修复已存在27年的 PPP 协议栈认证绕过漏洞

Sergiu Gatlan Sergiu Gatlan

代码卫士

2026年6月17日 11:51 北京

在小说阅读器读本章

去阅读

  聚焦源代码安全,网罗国内外最新资讯!

编译:代码卫士

OpenBSD修复PPP协议栈中已存在长达27年之久的身份验证绕过漏洞。该漏洞源于sppp_pap_input函数中用于PAP(密码认证协议)凭证验证的bcmp比较逻辑存在缺陷,可用于在无需任何凭证的情况下完成PPP认证,并可能造成内核堆内存越界读取。

该漏洞自1999年7月1日最初导入OpenBSD源代码树起便存在,影响此后所有版本的OpenBSD,直至2026年6月14日被修复。

漏洞简述

该漏洞源自一行代码,sppp_pap_input函数在验证PAP凭证时,直接使用来自传入PAP数据帧中攻击者可控制长度字段(name_len和passwd_len)作为bcmp比较的长度。当攻击者将这两个长度字段设为0时,bcmp比较会无条件返回0(因为比较长度为0),从而绕过用户名和密码的验证,直接通过PAP认证。此外,若攻击者提供的name_len大于实际配置凭证的分配长度,bcmp会读取堆对象之后的内存,导致内核堆越界读取。

漏洞影响

攻击者可在同一广播域内通过PPPoE数据路径,即pppoe_data_input → pppoeintr → sppp_input → sppp_pap_input,利用该漏洞,无需知晓任何凭证即可完成PPPoE握手全过程(包括发现、LCP协商、零长度PAP认证、IPCP协商),最终建立网络连接并劫持受害者的IP流量。

修复方案

修复方式参照了同一文件中CHAP处理程序已有的正确模式,使用精确长度预检查:

if (name_len != strlen(sp->hisauth.name) ||    passwd_len != strlen(sp->hisauth.secret) ||    bcmp(name, sp->hisauth.name, name_len) != 0 ||    bcmp(passwd, sp->hisauth.secret, passwd_len) != 0) {

该修复防范同时阻止了零长度绕过,并将bcmp的比较长度限定为存储凭证的确切大小,从而消除了越界读取问题。修复提交于2026年6月14日,提交ID为openbsd/src@076e2b1。

开源卫士试用地址:https://oss.qianxin.com/#/login

代码卫士试用地址:https://sast.qianxin.com/#/login


推荐阅读

开源操作系统 OpenBSD 被曝四个严重的认证绕过和提权漏洞(详情)

出于安全考虑,OpenBSD 禁用英特尔 CPU 超线程

phpBB 论坛软件修复已存在10年的认证绕过漏洞

PAN-OS GlobalProtect 认证绕过漏洞已遭活跃利用

原文链接

https://blog.argus-systems.ai/blog/openbsd-pap-27-year-auth-bypass.html

题图:Pixabay License

本文由奇安信编译,不代表奇安信观点。转载请注明“转自奇安信代码卫士 https://codesafe.qianxin.com”。

奇安信代码卫士 (codesafe)

国内首个专注于软件开发安全的产品线。

    觉得不错,就点个 “在看” 或 “赞” 吧~


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:代码卫士 Sergiu Gatlan Sergiu Gatlan《OpenBSD 修复已存在27年的 PPP 协议栈认证绕过漏洞》

评论:0   参与:  0