开放原子开源基金会网站上的开源项目Opns存在缓冲区溢出缺陷

最近在开放原子开源基金会网站上,看到一些开源项目,之前分析出华为的鸿蒙操作系统代码,没有发现有价值的安全漏洞。现在,下载上面的Onps开源网络协议栈,既然是通讯所使用的软件,其质量应该值得信任呢?下载源代码分析看看

Opns开源网络协议栈是完全自研、百分百原创的tcp/ip协议栈。代码主要是C语言和C++语言,总共115个文件,34490行。可执行代码行25473行,空行4334行,代码注释率16.10%,有两块代码具有重复块。

经过检测,发现里面多处存在数组越界问题,这些数组越界会导致缓冲区溢出,有可能会被恶意攻击者所利用。下面我拿出其中一处问题进行简单分析。

这个数组越界的触发点在pppd.cpp文件的1603行,第(1603)行数组[l_staIPCPNegoHandler]下标[i]的值可能是[10],超出了数组[l_staIPCPNegoHandler]的定义范围。

那我们分析这个缺陷产生的源在哪里?首先查看l_staIPCPNegoHandler数组是哪里定义的,是否有长度限制。经过分析,找到在当前文件的302行,定义该数组,该数组长度是一个宏 IPCPCODE_NUM,向上看296行定义了该宏的值为5 ,所以l_staIPCPNegoHandler数组声明时长度是5。

而在1603行和1604行都使用了该数组,数组下标是取的for循环中变量i,i在是for语句中由初值0递增,递增的边界为CPCODE_NUM,该宏是在88行声明的。

则i的最大值为10,所以导致超过l_staIPCPNegoHandler数组的最大下标4,导致数组越界,产生缓冲区溢出。如果该数组中的数据可以注入,则会导致难以预料的问题。

因为该软件为通讯协议栈,代码中的这类缺陷会带给软件不可预料的风险。

希望国内的开源软件注重软件质量。

(结束)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

manok

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值