开放原子开源基金会网站上的开源项目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,导致数组越界,产生缓冲区溢出。如果该数组中的数据可以注入,则会导致难以预料的问题。

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

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

(结束)

相关推荐
晋丑丑1 个月前
报名开启|开放原子大赛“Rust数据结构与算法学习赛”
学习·rust·开放原子
TiDB_PingCAP2 个月前
平凯星辰亮相 2024开放原子开源生态大会,分享开源教育及社区治理经验
开源·开放原子
boonya3 个月前
开放原子开源基金会OPENATOM
开放原子·精选项目
manok3 个月前
开放原子开源基金会网站上的开源项目EasyBaaS存在内存泄露缺陷
开源·开放原子
DarrenPig4 个月前
常工院星闪节能团队参加悉尼大学设计交流项目
人工智能·学习·开源·github·开放原子·交流
组合缺一4 个月前
骨灵冷火!Solon Cloud Gateway 照面发布
java·gateway·开放原子·web·solon·应用开发框架
数据和云4 个月前
《数据库简史》推荐序:开放原子开源基金会熊伟《从历史中触摸未来的脉搏》...
数据库·开源·开放原子
DarrenPig6 个月前
DP读书:半导体物理考试重点
人工智能·经验分享·笔记·学习·开源·github·开放原子
DarrenPig7 个月前
DP读书:《半导体物理学(第八版)》(六)PN结 - 3 min 速通(载流子分布)
经验分享·笔记·考研·容器·架构·开放原子·学习方法