CWE-484: Omitted Break Statement in Switch(switch省略break)_cwe484_plstudio1的博客-程序员信息网

技术标签: 漏洞扫描  break弱点  漏洞检查  缺少break  静态分析  省略break  

 ID: 484

类型:基础
结构:简单

状态:草稿

描述

程序省略了switch或类似构造中的break语句,导致执行与多个条件相关联的代码。当程序员只打算执行与一个条件相关联的代码时,这可能会导致问题。

扩展描述

这可能导致关键代码在不应该执行的情况下执行。

相关试图

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

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

引入模式

阶段

说明

实现

 

应用平台

语言

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

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

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

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

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

后果

范围

冲击

可能性

其它

技术冲击: 修改执行逻辑

这个弱点会导致执行意外的逻辑和其他意外的应用程序行为。

 

被利用的可能性:

一般

示例

例1

在这两个示例中,将根据传递给函数的月份打印消息:

(问题代码)

Example Language: Java 

public void printMessage(int month){

switch (month) {


case 1: print("January");
case 2: print("February");
case 3: print("March");
case 4: print("April");
case 5: print("May");
case 6: print("June");
case 7: print("July");
case 8: print("August");
case 9: print("September");
case 10: print("October");
case 11: print("November");
case 12: print("December");

}
println(" is a great month");

}

(问题代码)

Example Language:

void printMessage(int month){

switch (month) {


case 1: printf("January");
case 2: printf("February");
case 3: printf("March");
case 4: printf("April");
case 5: printff("May");
case 6: printf("June");
case 7: printf("July");
case 8: printf("August");
case 9: printf("September");
case 10: printf("October");
case 11: printf("November");
case 12: printf("December");

}
printf(" is a great month");

}

这两个示例都不在每个案例后使用break语句,这会导致意外的贯穿行为。例如,调用“printmessage(10)”将导致文本“OctoberNovermberDecember is a great month”被打印。

应对措施

阶段: 实现

省略break语句以使一个可能失败的语句通常与错误不可区分,因此应该避免。如果需要使用贯穿能力,请确保在switch语句中清楚地记录了这一点,并确保已经检查了所有逻辑可能性。

阶段: 实现

省略break语句的功能可以用if语句来澄清。这种方法更安全。

种属

关系

类型

ID

名称

属于

884

CWE Cross-section

属于

962

SFP Secondary Cluster: Unchecked Status Condition

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/plstudio1/article/details/90166237

智能推荐

Linux系统 学习笔记(3):Vi_hao2ik的博客-程序员信息网

vi的三种模式:命令模式、插入模式、末行模式vi三种启动方式:vi 新文件:创建新文件 vi 已有文件:打开已存在的文件 vi:退出vi的时候w后面加新文件名保存文件,q退出vi的退出方式:要回到末行模式才能退出w:保存 w 文件名:另存为 wq:保存退出 q!:不保存退出 q:如果文件没修改q退出,修改不能退出用vi编辑一个文件,让该文件可执行案例:vi命令模式常用命令:1.从命令模式进入进入输入模式:i:在光标当前位置插入 a:在光标后面...

Echarts数据可视化echarts实例的相关操作,开发全解+完美注释_腾讯数据架构师的博客-程序员信息网

全栈工程师开发手册 (作者:栾鹏)Echarts数据可视化开发代码注释全解 Echarts数据可视化开发参数配置全解6大公共组件详解(点击进入): title详解、 tooltip详解、toolbox详解、legend详解、dataZoom详解、visualMap全解 5大坐标系详解(点击进入): 地理坐标系geo详解、grid直角坐标系(xAxis、yAxis)详解、parallel平行

论文阅读笔记:An End-to-End Trainable Neural Network Model with Belief Tracking for Task-Oriented Dialog_BoCong-Deng的博客-程序员信息网

我们提出了面向任务的对话系统的新型端到端可训练神经网络模型,该模型能够跟踪对话状态,基于知识(KB)的API调用,并将结构化的KB查询结果合并到系统响应中,从而成功完成面向任务的对话。通过在对话历史上的进行belief tracking和KB结果处理,进而模型产生结构良好的系统响应。我们使用从第二个Dialog State Tracking Challenge(DSTC2)语料库转换而来的数据集在饭店搜索域中评估模型。实验结果表明,在给定对话历史记录的情况下,该模型可以很好地跟踪对话状态。此外,我们的模型在

ContentProvider工作原理——独家秘方_contentprovider原理_<SuSu>的博客-程序员信息网

ContentProvider是一种内容共享型组件,实际上它是通过Binder向其它应用提供数据。当ContentProvider所在的进程启动时,ContentProvider会同时启动并被发布到AMS中,需要特别注意的是ContentProvider的onCreate方法要早于Application的onCreate方法执行。启动过程废话不多说先看源码,As we all known,每个进程的入口都是ActivityThread.main1.入口方法是ActivityThread的main方法,

gcc的警告提示信息_luciusvorenus的博客-程序员信息网

gcc包含完整的出错检查和警告提示功能。采用-pedantic选项,对于不符合ANSI/ISO标准的源代码会产生相应的警告信息。如:gcc -pedantic hello.c -o hello (main函数返回类型为int,且函数体内要有return 语句,一般为 return 0;) -pedantic不能保证被编译的程序与ANSI/ISO C语言标准的完全兼容,只能帮助Linux程序员离这...

EMQX SSL双向认证配置与编码实现【JAVA】_akieay的博客-程序员信息网

一准备工作在这里插入代码片yum install opensslyum install vim在opt目录下创建ssl目录用来临时存储生成的证书文件mkdir /opt/sslcd /opt/ssl/cp /etc/pki/tls/openssl.cnf ./rm -rf /etc/pki/CA/*.old生成证书索引库数据库文件touch /etc/pki/CA/index....

随便推点

重定义fputc函数到串口printf输出(代码 + 应用实例)_努力的小肥丸的博客-程序员信息网

文章目录前言一、重定义fputc函数写法1(我目前使用的)写法2(网上常见的)写法3(网上常见的)一起交流一下鸭~二、勾选Use MicroLib三、main函数中应用printf输出四、注意事项(问题现象:程序卡在fputc函数)五、小结前言芯片型号:STM32F103VCT6串口:USART1目的:重定义fputc函数到串口输出,实现printf一、重定义fputc函数写法1(我目前使用的)int fputc(int ch, FILE *f){ /* 发送一个字

UNIX系统V(System V)_unix system v_中杯的拿铁的博客-程序员信息网

目录概述信息摘要总览介绍AT&amp;T的支持与BSD的对抗竞争发布版SVR1SVR2SVR3SVR4SVR4.2 / UnixWareSVR5 / UnixWare 7SVR6 (取消)市场地位20世纪90年代在x86平台上的可用性蒙特利项目系统V和Unix市场占有情况OpenSolaris和illumos发行版系统V的兼容性概述Unix系统V(英文读作“System Five”,即“系统五”)是Unix操作系统.

欧拉计划[C++]_m0_54285007的博客-程序员信息网

02#include&lt;iostream&gt;using namespace std;int main(){ int first = 1, second = 2, temp = 0, sum = 2; while (temp &lt; 4000000) { temp = first + second; if (temp % 2 == 0 &amp;&amp;temp &lt; 4000000) { sum += temp; } first = second;

NOI题库答案 (1.7 字符串基础)(1-20)_Dunyb的博客-程序员信息网

 01:统计数字字符个数描述输入一行字符,统计出其中数字字符的个数。输入一行字符串,总长度不超过255。输出输出为1行,输出字符串里面数字字符的个数。样例输入Peking University is set up at 1898.样例输出4#include&amp;lt;bits/stdc++.h&amp;gt;using namespace std;in...

[概念] 激励理论-海兹伯格激励理论(Herzberg's theory of motivation)_jameszhouhvs的博客-程序员信息网

详见http://www.netmba.com/mgmt/ob/motivation/herzberg/Herzberg found that the factors causing job satisfaction (and presumably motivation) were different from those causing job dissatisfaction. He devel

陀螺产业区块链第十五季 | 基于区块链技术的一站式会展产业可信服务平台_陀螺财经的博客-程序员信息网

区块链,一种由多方共同维护、分布式储存的记账技术,可通过信任机制的重构拓宽协作关系的纵深度,在推动产业变革、创建数字经济等方面有着关键作用。目前,在全球范围内,已有多个国家政府表明将积极发...