CWE-125: Out-of-bounds Read(越界读取)

2023-11-09

 ID: 125

类型:基础
结构:简单

状态:草稿

+描述

软件读取缓冲区之前或者之后的数据。

+扩展描述

通常,这会允许攻击者从其它内存位置读取敏感信息或导致崩溃。假定存在用于停止读取操作(如字符串中的nul)的哨兵变量时,当代码读取可变数量的数据时候可能会发生崩溃。预期的哨兵可能不在越界内存边界之内,导致读取过多数据,引发“分段错误”或“缓冲区溢出”。软件可以修改索引或执行指针运算,该索引或运算结果指向缓冲区边界之外的内存位置。随后的读取操作将产生未定义或意外的结果。

+关联视图

+与“研究层面”视图(CWE-1000)相关

+同 "简化已发布漏洞映射的弱点" 视图CWE-1003)相关

+与“开发层面”视图(CWE-699)相关

+引入模式

阶段

说明

实现

 

+应用平台

语言

C (出现的可能性不确定)

C++ (出现的可能性不确定)

+后果

范围

冲击

可能性

保密性

技术冲击: 内存读取

 

+示例

例1

在下面的代码中,该方法从特定数组索引位置的数组中检索一个值,该值作为该方法的输入参数给定。

(问题代码)

Example Language:

int getValueFromArray(int *array, int len, int index) {


int value;

// check that the array index is less than the maximum

// length of the array
if (index < len) {


// get the value at the specified index of the array
value = array[index];

}
// if array index is invalid then output error message

// and return value indicating error
else {

printf("Value is: %d\n", array[index]);
value = -1;

}

return value;

}

但是,此方法只验证给定的数组索引是否小于数组的最大长度,但不检查最小值(CWE-839)。这将允许接受负值作为输入数组索引,这将导致越界读取(CWE-125),并允许访问敏感内存。应检查输入数组索引,以验证是否在数组所需的最大和最小范围内(CWE-129)。在这个例子中,if语句应该修改为包含一个最小范围检查,如下所示

(正确代码)

Example Language:


...

// check that the array index is within the correct

// range of values for the array
if (index >= 0 && index < len) {

...

+种属

 

关系

类型

ID

名称

属于

970

SFP Secondary Cluster: Faulty Buffer Access

属于

1157

SEI CERT C Coding Standard - Guidelines 03. Expressions (EXP)

属于

1160

SEI CERT C Coding Standard - Guidelines 06. Arrays (ARR)

属于

1161

SEI CERT C Coding Standard - Guidelines 07. Characters and Strings (STR)

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

CWE-125: Out-of-bounds Read(越界读取) 的相关文章

  • 关于STM32串口烧录后程序正常运行,但是掉电或复位后程序不正常运行的可能解决方法。

    关于STM32串口烧录后程序正常运行 但是掉电或复位后程序不正常运行的可能解决方法 BOOT0 BOOT1 MODE 0 X FLASH 1 1 SRAM 1 0 ISP BOOT0置1 BOOT1置0 开启串口烧录模式 用FlyMcu烧录
  • 回首2021,展望2022

    律回春晖渐 万象始更新 2022年的曙光即将照射到这片平畴沃野 在这辞旧迎新的时刻 观成科技祝大家 新年快乐 吉祥如意 2021年 对于网络安全行业来说又是不平凡的一年 疫情反复 网络安全事件频发 网络安全的攻防对抗烈度和重视程度都达到了一
  • 区块链入门二:区块不可篡改

    区块链入门一 什么是区块链 在上一篇中 简单介绍了什么是区块链 这一篇主要介绍区块链的不可篡改的特性 首先我们来了解下哈希 Hash 算法 这是百度的描述 简单来说就是一种不可逆的摘要算法 哈希算法的目的就是为了验证原始数据是否被篡改 常用
  • 【满分】【华为OD机试真题2023 JAVA&JS】字母组合

    华为OD机试真题 2023年度机试题库全覆盖 刷题指南点这里 字母组合 知识点回溯 时间限制 1s 空间限制 256MB 限定语言 不限 题目描述 每个数字对应多个字母 对应关系如下 0 a b c 1 d e f 2 g h i 3 j
  • vue面试题汇总

    HTML篇 CSS篇 JS篇 TypeScript篇 React篇 微信小程序篇 前端面试题汇总大全 含答案超详细 HTML JS CSS汇总篇 持续更新 前端面试题汇总大全二 含答案超详细 Vue TypeScript React 微信小
  • MySQL索引底层:B+树详解

    前言 当我们发现SQL执行很慢的时候 自然而然想到的就是加索引 对于范围查询 索引的底层结构就是B 树 今天我们一起来学习一下B 树哈 Mysql有什么索引 索引模型是什么 树简介 树种类 B 树 B 树简介 B 树插入 B 树查找 B 树
  • python3 清除过滤emoji表情

    前段时间发现了一个 人工智能学习网站 通俗易懂 风趣幽默 分享一下给大家 学习链接 python3 清除过滤emoji表情 第一种方法 使用emoji处理库 安装emoji 使用 import emoji test str 服务周到 性价比
  • 汇编语言(王爽第三版)实验二

    实验二 题目预览 使用Debug 将下面的程序段写入程序 逐条进行 根据指令执行后的实际运行情况填空 仔细观察图3 19中的实验过程 然后分析 为什么2000 0 2000 F中的内容会发生改变 1 使用Debug 将下面的程序段写入程序
  • 目标跟踪整理(1)之MOSSE

    之前读过一遍MOSSE了 读完还是有一种懵懵的感觉 最近还需要入基于相关滤波的目标跟踪的坑 所以又屁颠屁颠跑来深入理解一下 毕竟是相关滤波的始祖啊 Visual Object Tracking using Adaptive Correlat
  • SpringMVC学习(一)——快速搭建SpringMVC开发环境(非注解方式)

    目录 1 开发环境准备 1 1 首先电脑需要安装JDK环境 略 1 2 准备一个以供开发的tomcat 1 3 准备Maven工具 1 4 准备IDE编译器 1 5 准备一个本地的数据库 2 搭建SpringMVC开发环境 2 1 创建we
  • Golang - restful-url的接口注册处理

    一 注册 根请求转到rootHandle 在rootHandle中为不同的url查找对应的处理接口并执行 1 tars业务端配置restful url与处理函数 指定url与对应的处理函数 type TarsHttpMux struct h
  • ubuntu20下安装配置x11vnc的步骤——多次亲测可用

    在Ubuntu 20 04中安装和配置x11vnc的步骤如下 打开终端并输入以下命令以安装x11vnc sudo apt get install x11vnc 安装完成后 输入以下命令以生成密码文件 sudo x11vnc storepas
  • 安徽大学研究生院计算机与科学,安徽大学研究生导师简介院系所计算机科学与技术学院姓名赵.doc...

    安徽大学研究生导师简介院系所计算机科学与技术学院姓名赵 安徽大学研究生导师简介 院 系 所 计算机科学与技术学院 姓名 赵姝 性别 女 出生年月 1979 10 导师类别 硕士生导师 技术职称 副教授 联系方式 zhaoshuzs2002
  • 数据预处理之重复值

    目录 0 前言 1 重复值的识别 1 1 DataFrame识别重复值 duplicated 1 2 Serier识别重复值 is unique 2 统计重复行的数量 duplicated sum 3 重复值的处理 0 前言 在实际数据采集
  • PYTHON飞机大战(第六天)

    OK 今天成功做出了多个外星人 代码来了 import sys import pygame from bullet import Bullet from alien import Alien def check keydown events
  • Java是动态语言吗?从《Java核心编程》探索真知

    目录 一 Java是动态语言吗 1 动态语言 2 静态类型 3 Java核心编程 中探索 为什么Java可以称之为 准动态语言 二 了解ClassLoader 1 类加载器 2 Bootstrap classLoader 3 URLClas

随机推荐

  • QT 添加背景图片,按钮不被覆盖

    QT设计窗体时 想添加背景图片 在设计器中 只需要右击窗体 gt 改变样式表 添加你想要的图片就可以了 不想覆盖按钮的话 主需要像上图那样就行了
  • LU分解的矩阵逆运算

    算法名称 矩阵求逆 基于LU分解法 LU分解算法评价 LU分解大约需要执行N3 3次内层循环 每次包括一次乘法和一次加法 这是求解一个 或少量几个 右端项时的运算次数 它要比Gauss Jordan消去法快三倍 比不计算逆矩阵的Gauss
  • Java菜鸟入门(20) Producer Consumer经典代码

    来自oracle官网 https docs oracle com javase 7 docs api java util concurrent locks Condition html class BoundedBuffer final L
  • U盘重装系统教程

    重装系统不管是U盘启动还是光盘启动 最终是否可以引导u盘装系统 很大取决于PE或者DOS系统能否识别出来U盘 一 准备工作 制作大白菜U盘启动盘 需要下载一个windows系统文件 就是win7系统 win10系统文件这类的 到U盘里 便可
  • 代理模式之静态代理

    一 什么是代理模式 代理模式 为其他对象提供一种代理 以控制对这个对象的访问 代理类的对象本身并不真正实现服务 我们在访问实际对象时 是通过代理对象来访问的 二 代理模式的分类 静态代理 代理和被代理之前都是确定的 都实现相同的接口或继承相
  • vue锚点定位(tab切换定位不同的div位置)

    1 效果演示 2 HTML部分 div class tabs div class info tit span class pointer css3 lang CN 集团简介 Group profile span span class poi
  • IntelliJ IDEA配置java环境以及解决IDEA不能直接运行单个JAVA文件

    写Java代码选择IEDA的原因是我之前用的Pycharm写python 而IEDA和pycharm几乎一模一样的用法 而且IEDE可以写Java Python等很多语言 只要安装了对应的插件 File gt Settings gt Plu
  • C语言 -- 链表(企业级,侵入式链表)

    目录 节点结构体的实现 初始化链表 插入链表 遍历链表 删除节点 销毁链表 用户test 侵入式链表 内核链表 普通单链表和侵入式单链表的区别在于 普通的单链表的结点指针域指向的是下一个结点的内存首地址 侵入式单链表的结点指针域指向的是下一
  • VUE设置Echarts Loading及样式

    1 先引入echarts import as echarts from echarts 2 利用Echart自带的loading方法 如果是动态数据应该放在请求之前开始loading 初始化 let charts echarts init
  • 前端工作怎么包装简历,需要掌握哪些知识项目

    要想找个好的工作 最少有几个项目实战拿的出来 Web前端岗位需要掌握的知识 一 前端相关概念建立 主要内容 浏览器的概念介绍 浏览器的作用 工作方式 浏览器的概念介绍 浏览器的作用 工作方式 HTTP协议 协议产生的原因 作用 及内容 页面
  • unbutu docker 添加日志

    新建的docker默认是没有日志的 如下展示 tail f var log cron log tail cannot open var log cron log for reading No such file or directory t
  • Windows terminal安装和配置

    Windows terminal终端比cmd强大许多 其中可以包含cmd和powershell甚至ubuntu子系统 同时还可以进行个性化 打造更精美的终端 安装 进入Windows自带的Microsoft Store 搜索Windows
  • 浏览器打开windows桌面应用

    场景需要在浏览器打开桌面安装的lis应用 这里用到注册表 注意 后面的 路径 两个斜杠 lis可以替换成其他需要打开的应用 lis reg 如下 保存双击执行下 Windows Registry Editor Version 5 00 HK
  • Android 集成 支付宝

    一 到支付宝官网https b alipay com order techService htm channel psl下载 快捷支付 无线 开发包 将alipay sdk common文件夹下的alipaysdk jar alipayse
  • 基本排序算法

    前言 该算法总结针对的是算法设计与分析课程所提到的算法 对于不同的人群可能获益有所不同 在叙述时会对一些较为简单的算法进行概性描述 目的是简单的告诉读者算法实现的基本原理 对一些较为复杂的算法则会付诸大量的笔墨 以求对算法的理解能够更加的透
  • 「转」plt.legend()简明使用教程

    原文链接https blog csdn net helunqu2017 article details 78641290 感谢作者辛勤付出 仅作笔记使用 侵删 1 图例legend基础语法及用法 legend语法参数如下 matplotli
  • 用一个程序员的角度来遐想第五代或第六代计算机

    提前申明 我对这一行了解的不够深入 或许是因为这才所以初生牛犊不怕虎 以至于对计算机有很多构想 我先来说一下当今计算机的发展历程 第一代 1946 1957年 是电子计算机 它的基本电子元件是电子管 内存储器采用水银延迟线 外存储器主要采用
  • TensorFlow2.1.0安装教程

    TensorFlow2 1 0安装教程 安装步骤 常用IDE安装 CUDA安装 CUDA软件安装 cuDNN神经网络加速库安装 配置环境变量 TensorFlow安装 更新 TensorFlow是一款优秀的深度学习框架 支持多种常见的操作系
  • 从0到1搭建 Rollup + TypeScript 模板工程

    哈喽 大家好 我是 SuperYing 今天我们来聊聊如何从 0 到 1 搭建一个 Rollup TypeScript 工具库模板工程 包括从创建文件夹开始 到依赖配置 打包编译等一整套内容 Rollup 是一个 JavaScript 模块
  • CWE-125: Out-of-bounds Read(越界读取)

    ID 125 类型 基础 结构 简单 状态 草稿 描述 软件读取缓冲区之前或者之后的数据 扩展描述 通常 这会允许攻击者从其它内存位置读取敏感信息或导致崩溃 假定存在用于停止读取操作 如字符串中的nul 的哨兵变量时 当代码读取可变数量的数