ITPub博客

首页 > IT基础架构 > 网络安全 > 代码安全测试第八期:Switch中缺少default导致的代码缺陷

代码安全测试第八期:Switch中缺少default导致的代码缺陷

原创 网络安全 作者:zktq2021 时间:2021-05-27 11:16:51 0 删除 编辑

1、什么是Switch中缺少default导致的代码缺陷?

switch用在编程中,如C语言中它经常跟case一起使用,是一个判断选择逻辑结构。其功能就是控制流程流转。switch语句的语法如下(switch,case,break和default是关键字):

switch ( 变量表达式 )
{
case 常量1 :语句;break;
case 常量2 :语句;break;
case 常量3 :语句;break;
...
case 常量n:语句;break;
default :语句;break;
}

当变量表达式所表达的量与其中一个case语句中的常量相符时,就执行此case语句后面的语句,并依次下去执行后面所有case语句中的语句,遇到break则中断并跳出当前case分支执行语句。如果常量表达式的量与所有case语句的常量值都不相符,则执行default语句中的语句。

那代码在switch语句中没有default语句,这可能会导致复杂的逻辑问题并由此产生安全隐患。此缺陷代表了软件开发中的常见问题,其中并非所有可能的变量值都由给定过程考虑或处理。因此,根据不良信息做出进一步的决策,并导致级联故障。这种级联故障可能会导致许多安全问题,并构成系统中的重大故障。

2、Switch中缺少default导致的代码缺陷构成条件有哪些?

①switch语句没有default情况。

3、Switch中缺少default导致的代码缺陷会造成哪些后果?

关键字:改变程序执行逻辑;

①当switch中的逻辑进行数据检查等,攻击者可以注入不执行任何case分支的数据,则攻击者可以绕过安全检查,或导致程序处理逻辑上错误。

4、Switch中缺少default导致的缺陷防范和修补方法有哪些?

①switch语句中应该添加default标签;

②在一些情况下,default应该作为检查无效输入的情况,而不应该作为一个表示假定的选项。

5、Switch中缺少default导致的漏洞样例:

用静态代码检测分析上述程序代码,则可以发现代码中存在着case语句中没有default 语句的缺陷,如下图:

switch中缺少default在CWE中被编号为CWE-478: Missing Default Case inSwitch Statement


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70000012/viewspace-2774200/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
中科天齐软件源代码安全缺陷检测平台(WuKong)是一款B/S 架构的国产信创静态软件安全测试工具,为客户在软件开发过程中查找、识别、追踪绝大部分主流编码中的技术漏洞与逻辑漏洞,帮助用户提升抵御网络攻击、防止数据泄露等安全问题的能力。

注册时间:2021-05-14

  • 博文量
    533
  • 访问量
    358824