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

news/2024/9/29 1:21:32/

最近在开放原子开源基金会网站上,看到一些开源项目,之前分析出华为的鸿蒙操作系统代码,没有发现有价值的安全漏洞。现在,下载上面的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,导致数组越界,产生缓冲区溢出。如果该数组中的数据可以注入,则会导致难以预料的问题。

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

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

(结束)


http://www.ppmy.cn/news/1530618.html

相关文章

Web APIs 4:事件流、事件委托

Web APIs 3(事件流、事件委托) 1.事件流 事件流:事件完整执行过程中的流动路径捕获阶段:从DOM根元素开始去执行对应的事件(从外到里) DOM.addEventListener(事件类型,事件处理函数&#xff0…

C#_封装详解

封装 封装 被定义为"把一个或多个项目封闭在一个物理的或者逻辑的包中"。在面向对象程序设计方法论中,封装是为了防止对实现细节的访问。 抽象和封装是面向对象程序设计的相关特性。抽象允许相关信息可视化,封装则使程序员实现所需级别的抽象…

PHP 中传值与传引用的区别

在 PHP 中,理解传值与传引用的区别对于编写高效、可维护的代码至关重要。 一、基础概念 1. 传值(Pass by Value) 在 PHP 中,默认情况下,参数是通过值传递的。这意味着函数内部对参数所做的任何修改都不会影响到函数…

【Java数据结构】 ---对象的比较

乐观学习,乐观生活,才能不断前进啊!!! 我的主页:optimistic_chen 我的专栏:c语言 ,Java 欢迎大家访问~ 创作不易,大佬们点赞鼓励下吧~ 前言 上图中,线性表、堆…

cisp-pte多少钱考一次?cisp-pte报考费用及报考条件一次说清楚!

CISP-PTE即注册信息安全专业人员-渗透测试工程师,是目前被业界认可的主流专业攻防领域的资质认证,很多小伙伴都在问:CISP-PTE报考条件是什么?cisp-pte报考费用要多少钱?今天一文给大家说清楚! 一、CISP-PT…

智能点餐:Spring Boot 技术实现

第一章 绪 论 1.1背景及意义 系统管理也都将通过计算机进行整体智能化操作,对于网上点餐系统所牵扯的管理及数据保存都是非常多的,例如管理员;首页、个人中心、用户管理、美食店管理、美食分类管理、美食信息管理、美食订单管理、美食评价管理…

java之斗地主部分功能的实现

今天我们要实现斗地主中发牌和洗牌这两个功能,该如何去实现呢? 1.创建牌类:52张牌每一张牌包含两个属性:牌的大小和牌的花色。 故我们优先创建一个牌的类(Card):包含大小和花色。 public class Card { //单张牌的大小及类型/…

Linux标准IO(二)-打开、读写、定位文件

1.打开文件fopen 在前面所介绍的文件 I/O 中&#xff0c;使用 open()系统调用打开或创建文件&#xff0c;而在标准 I/O 中&#xff0c;我们将使用库函数fopen()打开或创建文件&#xff0c;fopen()函数原型如下所示&#xff1a; #include <stdio.h>FILE *fopen(const ch…