CWE-483 不正确的代码块分界

admin 2021年12月16日16:31:29评论57 views字数 2221阅读7分24秒阅读模式

CWE-483 不正确的代码块分界

Incorrect Block Delimitation

结构: Simple

Abstraction: Variant

状态: Draft

被利用可能性: Low

基本描述

The code does not explicitly delimit a block that is intended to contain 2 or more statements, creating a logic error.

扩展描述

In some languages, braces (or other delimiters) are optional for blocks. When the delimiter is omitted, it is possible to insert a logic error in which a statement is thought to be in a block but is not. In some cases, the logic error can have security implications.

相关缺陷

  • cwe_Nature: ChildOf cwe_CWE_ID: 670 cwe_View_ID: 1000 cwe_Ordinal: Primary

适用平台

Language: [{'cwe_Name': 'C', 'cwe_Prevalence': 'Sometimes'}, {'cwe_Name': 'C++', 'cwe_Prevalence': 'Sometimes'}]

常见的影响

范围 影响 注释
['Confidentiality', 'Integrity', 'Availability'] Alter Execution Logic This is a general logic error which will often lead to obviously-incorrect behaviors that are quickly noticed and fixed. In lightly tested or untested code, this error may be introduced it into a production environment and provide additional attack vectors by creating a control flow path leading to an unexpected state in the application. The consequences will depend on the types of behaviors that are being incorrectly executed.

可能的缓解方案

Implementation

策略:

Always use explicit block delimitation and use static-analysis technologies to enforce this practice.

示例代码

In this example, the programmer has indented the statements to call Do_X() and Do_Y(), as if the intention is that these functions are only called when the condition is true. However, because there are no braces to signify the block, Do_Y() will always be executed, even if the condition is false.

bad C

if (condition==true)

Do_X();
Do_Y();

This might not be what the programmer intended. When the condition is critical for security, such as in making a security decision or detecting a critical error, this may produce a vulnerability.

In this example, the programmer has indented the Do_Y() statement as if the intention is that the function should be associated with the preceding conditional and should only be called when the condition is true. However, because Do_X() was called on the same line as the conditional and there are no braces to signify the block, Do_Y() will always be executed, even if the condition is false.

bad C

if (condition==true) Do_X();

Do_Y();

This might not be what the programmer intended. When the condition is critical for security, such as in making a security decision or detecting a critical error, this may produce a vulnerability.

分析过的案例

标识 说明 链接

分类映射

映射的分类名 ImNode ID Fit Mapped Node Name
CLASP Incorrect block delimitation

文章来源于互联网:scap中文网

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2021年12月16日16:31:29
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   CWE-483 不正确的代码块分界http://cn-sec.com/archives/612988.html

发表评论

匿名网友 填写信息