CWE

常见的弱点枚举

一个由社区开发的软件&硬件缺陷类型的列表

2021 CWE最重要的硬件的弱点
CWE最危险的弱点
>CWE列表> CWE -个人字典定义(4.10)
ID

cwe - 89:不当中和一个SQL命令中使用的特殊元素(SQL注入)

弱点ID: 89
抽象:基地
结构:简单的
视图定制的信息:
+描述
产品构造SQL命令的所有或部分使用externally-influenced输入从一个上游组件,但这并不中和或错误地中和特殊元素时,可以修改SQL命令发送到下游组件。
+扩展描述

没有足够的移除或引用用户可控输入的SQL语法生成的SQL查询可能会导致那些被视为输入SQL代替普通用户数据。这可以用来改变查询逻辑绕过安全检查,或者插入额外的语句修改后端数据库,其中可能包括执行系统命令。

SQL注入与数据库驱动的网站已经成为一个常见的问题。缺陷是容易检查出来的,很容易利用,这样,任何网站或产品包连最小的用户群可能是这种企图攻击。这一缺陷取决于这一事实SQL没有实际控制和数据平面之间的区别。

+的关系
部分帮助此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
+相关的视图”研究概念”(cwe - 1000)
自然 类型 ID 的名字
ChildOf 类类——一个弱点,描述的是一个非常抽象的时尚,通常独立于任何特定的语言或技术。更具体的比一个支柱的弱点,但更普遍的基本的弱点。类级别的弱点通常描述问题的1或2以下维度:行为、财产和资源。 943年 不当中和特殊元素的数据查询逻辑
ParentOf 变体变体——一个弱点与某种类型的产品,通常涉及到一个特定的语言或技术。更具体的比基本的弱点。变异水平弱点通常描述问题的3到5以下维度:行为、财产、技术、语言,和资源。 564年 SQL注入:冬眠
光束 变体变体——一个弱点与某种类型的产品,通常涉及到一个特定的语言或技术。更具体的比基本的弱点。变异水平弱点通常描述问题的3到5以下维度:行为、财产、技术、语言,和资源。 456年 失踪的初始化一个变量
部分帮助此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
+相关观点“软件开发”(cwe - 699)
自然 类型 ID 的名字
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 137年 数据中和问题
部分帮助此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
+简化映射的相关视图”缺点漏洞发布”(cwe - 1003)
自然 类型 ID 的名字
ChildOf 类类——一个弱点,描述的是一个非常抽象的时尚,通常独立于任何特定的语言或技术。更具体的比一个支柱的弱点,但更普遍的基本的弱点。类级别的弱点通常描述问题的1或2以下维度:行为、财产和资源。 74年 不当中和下游组件使用的特殊元素的输出(注射)
部分帮助此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
+相关视图”架构概念”(cwe - 1008)
自然 类型 ID 的名字
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 1019年 验证输入
部分帮助此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
+相关的视图”方案及质量的措施(2020)”(CWE-1305)
自然 类型 ID 的名字
ParentOf 变体变体——一个弱点与某种类型的产品,通常涉及到一个特定的语言或技术。更具体的比基本的弱点。变异水平弱点通常描述问题的3到5以下维度:行为、财产、技术、语言,和资源。 564年 SQL注入:冬眠
部分帮助此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
+相关的视图”中的弱点OWASP十大(2013)”(CWE-928)
自然 类型 ID 的名字
ParentOf 变体变体——一个弱点与某种类型的产品,通常涉及到一个特定的语言或技术。更具体的比基本的弱点。变异水平弱点通常描述问题的3到5以下维度:行为、财产、技术、语言,和资源。 564年 SQL注入:冬眠
+模式的介绍
部分帮助不同模式的引入提供了信息如何以及何时可以纳入这一弱点。生命周期的阶段识别点的介绍可能发生,而相关的报告提供了一个典型的场景介绍在给定的阶段。
阶段 请注意
架构和设计 这个弱点通常出现在丰富的数据在数据库中保存用户输入的应用程序。
实现 实现:造成这一弱点在建筑安全策略的实施。
+适用的平台
部分帮助该清单显示了给定的弱点可以可能的地区出现。这些可能是为特定命名的语言,操作系统,架构、模式、技术、或一个类这样的平台。列出的平台是随着频率的出现疲态实例。

语言

类:不是特定于语言的患病率(待定)

技术

数据库服务器患病率(待定)

+常见的后果
部分帮助这个表指定不同的个人相关后果的弱点。标识应用程序范围的安全领域侵犯,而影响了负面的技术影响,如果敌人成功利用这个弱点。可能提供的信息如何可能的具体结果预计将看到列表中相对于其它后果。例如,可能会有高可能性,缺点将被利用来实现一定的影响,但较低的可能性,它将被利用来实现不同的影响。
范围 影响 可能性
保密

技术的影响:读取应用程序数据

因为SQL数据库通常保存敏感数据、保密与SQL注入漏洞是一个频繁的问题。
访问控制

技术的影响:旁路保护机制

如果贫穷的SQL命令是用来检查用户名和密码,可以连接到一个系统作为另一个用户没有以前知识的密码。
访问控制

技术的影响:旁路保护机制

如果授权信息保存在一个SQL数据库,它可能会改变这些信息通过成功开发SQL注入漏洞。
完整性

技术的影响:修改应用程序数据

就像它可能会读取敏感信息,也可以修改甚至删除这个信息与SQL注入攻击。
+利用的可能性
+示范例子

示例1

2008年,大量的web服务器使用相同的SQL注入攻击入侵了字符串。这一个字符串对许多不同的程序工作。SQL注入被用来修改网站恶意代码。

示例2

下面的代码动态地构造和执行一个SQL查询,搜索条目匹配指定的名字。查询限制的物品显示给那些老板匹配当前认证的用户的用户名。

(坏的代码)
例如语言:c#

字符串的用户名= ctx.getAuthenticatedUserName ();
字符串查询= " SELECT *从项目所有者= " +用户名+”和itemname = " + itemname。文本+“”;
康涅狄格州sda = new SqlDataAdapter(查询);
DataTable dt = new DataTable ();
sda.Fill (dt);

这段代码的查询执行计划如下:

(信息)
SELECT *从项目业主= <用户名>和itemname = < itemname >;

然而,因为查询构造动态连接一个常数基本查询字符串和用户输入字符串时,只查询正确的行为如果itemName不包含单引号字符。如果攻击者的用户名威利进入字符串:

(攻击代码)
名称”或“一个‘=’

itemName,然后查询变成如下:

(攻击代码)
SELECT *从项目业主=“威利”和itemname =“名称”或“a”=“a”;

添加:

(攻击代码)
或' a ' = '

条件导致WHERE子句总是评估为true,所以查询变成了逻辑上等价于更简单的查询:

(攻击代码)
从项目选择*;

这种简化查询允许攻击者绕过查询只返回项的要求身份验证的用户所拥有的;现在查询返回所有条目存储在项目表,不管他们的指定的所有者。

示例3

这个示例检查的影响不同的恶意值传递到查询构造和执行在前面的例子。

如果攻击者的用户名威利进入字符串:

(攻击代码)
的名称;从项目删除;- - -

itemName,然后查询就以下两个查询:

(攻击代码)
例如语言:SQL
SELECT *从项目业主=“威利”和itemname =“名称”;
从项目删除;
——”

许多数据库服务器,包括Microsoft SQL Server 2000 (R),允许多个执行SQL语句用分号分隔。虽然这种攻击字符串结果在Oracle和其他数据库服务器上的一个错误,不允许批次执行的语句用分号分隔,在数据库,允许批量执行,这种类型的攻击使攻击者可以对数据库执行任意命令。

注意到拖着双连字符(——),它指定大多数数据库服务器,其余的语句是被视为一个评论,不执行。在这种情况下,评论人物用来删除修改查询剩下的单引号。数据库上的评论是不允许以这种方式使用,一般的攻击仍然可以做出有效的使用技巧类似于前面的示例所示。

如果攻击者进入字符串

(攻击代码)
的名称;从项目删除;SELECT * FROM a =一个物品

然后将创建下列三个有效语句:

(攻击代码)
SELECT *从项目业主=“威利”和itemname =“名称”;
从项目删除;
SELECT *从物品' a ' = ' a ';

防止SQL注入攻击的一种传统方法是处理它们作为输入验证问题,要么只接受字符从一个allowlist安全值或识别和逃避denylist潜在的恶意的价值观。Allowlists可以非常有效的执行严格的输入确认规则,但参数化SQL语句只需要较少的维护,可以提供更多的保证安全。几乎总是如此,denylisting充斥着漏洞,使其无效防止SQL注入攻击。例如,攻击者可以:

  • 目标字段不引用
  • 想办法绕过某些逃元字符的必要性
  • 使用存储过程隐藏注入的元字符。

手动转义字符输入SQL查询可以帮助,但它不会使您的应用程序安全从SQL注入攻击。

另一个常见解决方案提出了处理SQL注入攻击是使用存储过程。虽然存储过程防止某些类型的SQL注入攻击,他们不防止许多其他人。例如,下面的PL / SQL过程容易受到相同的SQL注入攻击第一个示例所示。

(坏的代码)
过程get_item (itm_cv ItmCurTyp, usr varchar2、varchar2 itm)
itm_cv开放
“SELECT *从项目”| |“所有者= ' | | usr | |和itemname = | | itm | | ';
get_item结束;

存储过程通常有助于防止SQL注入攻击通过限制类型的语句,可以传递给它们的参数。然而,有很多方法的局限性和许多有趣的语句仍然可以传递给存储过程。存储过程可以防止一些攻击,但他们不会使您的应用程序安全对SQL注入攻击。

示例4

已建成一个MS SQL函数,使shell命令执行。一个SQL注入在这样一个背景下可能是灾难性的。例如,表单的查询:

(坏的代码)
选择项,价格从产品ITEM_CATEGORY = user_input美元的订单价格

在美元user_input取自一个不可信的来源。

如果用户提供的字符串:

(攻击代码)
”;执行主. .xp_cmdshell 'dir' --

查询将采取以下形式:

(攻击代码)
选择项目,从产品价格ITEM_CATEGORY = ";执行主. .xp_cmdshell 'dir' --' ORDER BY PRICE

现在,这个查询的方法可以分为:

  1. 第一个SQL查询:选择项目,从产品价格ITEM_CATEGORY = ";
  2. 第二个SQL查询,执行dir命令shell:执行主. .xp_cmdshell“dir”
  3. 一个MS SQL注释:——的订单价格

可以看到,恶意输入查询的语义变化到一个查询中,shell命令执行和评论。

示例5

这段代码将打印一个消息摘要消息ID。

(坏的代码)
例如语言:PHP
id = _COOKIE美元(“中期”);
mysql_query(“选择消息id,主题从消息消息id = $ id”);

程序员可能会跳过任何输入验证id美元假设攻击者不能修改饼干。然而,这是很容易与自定义客户机代码,甚至在web浏览器中。

虽然$ id是包裹在单引号中调用mysql_query(),攻击者可以简单地改变中期传入的饼干:

(攻击代码)
1432年'或' 1 ' = ' 1

这将产生结果查询:

(结果)
选择消息id,主题从消息消息id = ' 1432 '或' 1 ' = ' 1 '

这不仅可以检索消息编号为1432,它将检索所有其他消息。

在这种情况下,程序员可以将一个简单的修改应用到消除SQL注入的代码:

(好的代码)
例如语言:PHP
(id = intval中美元_COOKIE["中期"]);
mysql_query(“选择消息id,主题从消息消息id = $ id”);

然而,如果这段代码的目的是支持多个用户提供不同的消息框,代码可能还需要一个访问控制检查(cwe - 285),以确保应用程序允许用户看到这一信息。

例子6

这个例子试图采取一个姓由用户提供输入到数据库中。

(坏的代码)
例如语言:Perl
美元userKey = getUserID同名();
$ name = getUserInput ();

#确保只有字母,连字符和撇号是允许的
(name = allowList美元的名字,“^ a-zA-z’——美元”);
查询美元= "插入last_name值(“userKey的同名美元,美元的名字)”;

而程序员一个allowlist适用于用户输入,它的缺点。首先,用户仍可以提供连字符,用作评论结构的SQL。如果用户指定了”——“然后剩下的语句将被视为一个评论,这可能绕过安全逻辑。此外,allowlist允许撇号,也在SQL数据/命令分隔符。如果一个用户提供一个名称和一个撇号,他们也许能够改变整个语句的结构,甚至改变程序的控制流,可能访问机密信息或修改。在这种情况下,字符和撇号为姓,允许他们是合法的字符是必需的。相反,程序员可能想要使用一份事先准备好的声明中或日常编码应用于输入,以防止任何数据/指令误解。

+观察到的例子
参考 描述
SQL注入和计费软件,每中钢协KEV利用在野外。
SQL注入的文件传输系统通过一个精心设计的主机头,每中钢协KEV利用在野外。
SQL注入的防火墙产品的管理界面或用户门户,每中钢协KEV利用在野外。
一个自动化系统用包含一个容易受到SQL注入的API允许攻击者读取特权数据。
链:SQL注入在图书馆面向数据库的身份验证允许SQL注入和认证绕过。
SQL注入通过ID应该是数字。
SQL注入通过ID应该是数字。
SQL注入通过用户名。
SQL注入是通过用户名和密码字段。
SQL注入的安全产品,使用的组名。
SQL注入在验证库。
SQL注入漏洞管理和报告工具,使用的密码。
+潜在的缓解措施

阶段:体系结构和设计

策略:库或框架

使用审查库或框架不允许这个弱点发生或提供了结构,使这个弱点更容易避免的。

例如,考虑使用持久性层如Hibernate或Enterprise Java bean,它可以提供重要的防止SQL注入如果使用得当。

阶段:体系结构和设计

策略:参数化

如果可用,使用结构化机制自动执行数据和代码之间的分离。这些机制可以提供相关的引用,编码,自动验证,而不是依赖于开发人员提供此功能在每一个点生成输出。

过程使用预处理语句的SQL查询,参数化查询或存储过程。这些特性应该接受和支持强类型参数或变量。不能动态地构建和执行查询字符串中这些特性使用“执行”或类似的功能,因为这可能会再次引入SQL注入的可能性。(ref - 867]

阶段:体系结构和设计;操作

策略:环境硬化

使用所需的最低特权运行您的代码来完成必要的任务(ref - 76]。如果可能的话,创建独立帐户权限有限,只用于一个任务。这样,一个成功的攻击不会立即给攻击者访问其他软件或其环境。例如,数据库应用程序很少需要作为数据库管理员运行,特别是在日常操作。

具体来说,遵循最小特权原则在创建SQL数据库用户帐户。数据库用户应该只有必要的最低特权使用他们的帐户。如果系统的需求表明,用户可以阅读和修改自己的数据,然后限制他们的特权,所以他们不能读/写别人的数据。尽可能使用最严格的权限对所有数据库对象,例如execute-only存储过程。

阶段:体系结构和设计

对于任何一个在客户端执行安全检查,确保这些检查复制在服务器端,为了避免cwe - 602。攻击者可以绕过客户端检查通过修改值后,检查执行,或通过改变客户端完全删除客户端检查。然后,这些修改的值将被提交到服务器。

实施阶段:

策略:输出编码

虽然风险使用动态生成的查询字符串,代码,或命令,控制和数据混合在一起,有时它可能是不可避免的。正确引用参数和任何特殊字符转义在这些参数。最保守的方法是逃跑或者过滤不经过极其严格的allowlist的所有字符(如一切不是字母数字或空白)。如果仍然需要一些特殊字符,如空格,每个参数封装在引号转义后/过滤步骤。小心论证注入(cwe - 88)。

而不是建立一个新的实现,这些特性可用的数据库或编程语言。例如,Oracle DBMS_ASSERT包可以检查或强制参数有一定的属性,使他们更容易受到SQL注入。对于MySQL, mysql_real_escape_string () API函数可用于C和PHP。

实施阶段:

策略:输入验证

假设所有的输入是恶意的。使用一个“接受良好的“输入验证策略,即。,use a list of acceptable inputs that strictly conform to specifications. Reject any input that does not strictly conform to specifications, or transform it into something that does.

当执行输入验证,考虑所有可能相关的属性,包括长度,类型的输入,可接受的值的全系列,缺失或额外的输入,语法,一致性相关领域,符合业务规则。作为业务规则逻辑的一个例子,在语法上“船”可能是有效的,因为它只包含字母数字字符,但它不是有效的如果输入预计仅包含颜色,如“红”或“蓝色”。

不完全依赖寻找恶意或畸形的输入。这很可能错过至少有一个不受欢迎的输入,特别是如果代码的环境变化。这可以让攻击者有足够的空间绕过验证。然而,denylists可以用于检测潜在攻击或确定哪些输入是畸形的,应该直接驳回。

当构造SQL查询字符串,使用限制严格的allowlists字符集基于请求中的参数的期望值。这将间接限制的范围攻击,但这种技术没有适当的重要输出编码和逃避。

注意,适当的输出编码、逃避和引用防止SQL注入的是最有效的解决方案,尽管输入验证可能提供一些深度防护。这是因为它有效地限制了将出现在输出。输入验证不会总是阻止SQL注入,尤其是如果您需要支持自由格式的文本字段可以包含任意字符。例如,”O ' reilly”这个名字可能会通过验证步骤,因为它是一种常见的英语姓氏。但是,它不能直接插入到数据库,因为它包含了““撇号的角色,这将需要转义或以其他方式处理。在这种情况下,剥离撇号可能减少SQL注入的风险,但是它会产生不正确的行为,因为错误的名字将被记录下来。

在可行的情况下,它可能是最安全的完全禁止元字符,而不是逃避它们。这将提供一些深度防御。数据进入数据库后,后来过程可能忽视逃避元字符前使用,,你可能没有控制这些流程。

阶段:体系结构和设计

战略:执行的转换

组接受对象时,如文件名或url,是有限的或已知,从一组固定的输入值创建一个映射(比如数字id)实际的文件名或url,并拒绝所有其他输入。

实施阶段:

确保错误消息只包含最小的细节,目标受众是有用的,没有其他人。消息需要罢工之间的平衡过于神秘的(可以迷惑用户)或过于详细的(可能揭示超过预期)。不应该透露的消息的方法被用来确定错误。攻击者可以使用详细信息完善或优化他们最初的攻击,从而增加成功的机会。

如果必须捕捉到一些细节错误,记录在日志消息,但想想会发生什么,如果日志消息可以被攻击者。高度敏感的信息,如密码永远不应该被保存到日志文件中。

避免不一致的消息可能会意外地提示攻击者对内部状态,如是否存在一个用户帐户。

在SQL注入的情况下,错误消息显示SQL查询的结构可以帮助攻击者成功攻击裁缝字符串。

阶段:操作

防火墙策略:

使用应用程序防火墙,可以检测到攻击这个弱点。它可以是有益的情况下,代码不能固定(因为它是由第三方控制),作为一项紧急预防措施,更全面的软件保证措施被应用,或者提供深度防御。

有效性:温和

注意:应用程序防火墙不可能覆盖所有可能的输入向量。此外,攻击技术可能可以绕过保护机制,比如使用畸形的输入,仍然可以由组件接收处理这些输入。根据功能的不同,应用程序防火墙可能会无意中拒绝或修改合法请求。最后,一些手动工作可能需要定制。

阶段:操作;实现

策略:环境硬化

使用PHP时,配置应用程序,以便它不使用register_globals。在实现,开发应用程序,以便它不依赖于这个特性,但是小心实现register_globals的模拟等弱点cwe - 95,cwe - 621和类似的问题。
+检测方法

自动静态分析

这个弱点常常可以发现使用自动静态分析工具。许多现代工具使用数据流分析或基于技术来减少假阳性的数量。

自动静态分析可能无法识别在执行适当的输入验证时,导致假阳性——即。警告,没有任何安全后果或不需要任何代码更改。

自动静态分析可能无法检测的使用自定义的API函数或第三方库间接调用SQL命令,导致假阴性——特别是如果API /库代码不可用进行分析。

注意:这不是一个完美的解决方案,因为100%的准确率和覆盖率不可行。

自动动态分析

这个弱点能被探测到的使用动态交互的工具和技术的软件使用大型测试套件和许多不同的输入,如模糊测试(起毛)健壮性测试和故障注入。软件的操作可能慢下来,但它不应该成为不稳定,崩溃,或者产生不正确的结果。

有效性:温和

手动分析

手动分析寻找这个弱点可能是有用的,但它可能不会在有限时间内达到所需的代码覆盖约束。这是困难的缺点,必须考虑所有输入,因为攻击表面太大。

自动静态分析——二进制或字节码

根据飙升,以下检测技术可能是有用的:

高成本效益:
  • 字节码的弱点分析,包括反汇编程序+源代码弱点分析
  • 二进制弱点分析,包括反汇编程序+源代码弱点分析

有效性:高

动态分析与自动化的结果解释

根据飙升,以下检测技术可能是有用的:

高成本效益:
  • 数据库扫描仪
成本有效的部分报道:
  • Web应用程序扫描
  • Web服务的扫描仪

有效性:高

动态分析与人工解释结果

根据飙升,以下检测技术可能是有用的:

成本有效的部分报道:
  • 模糊测试
  • 基于框架Fuzzer

有效性:飙升部分

人工静态分析源代码

根据飙升,以下检测技术可能是有用的:

高成本效益:
  • 手工源代码审查(不检查)
成本有效的部分报道:
  • 关注人工抽查,手动分析来源

有效性:高

自动静态分析源代码

根据飙升,以下检测技术可能是有用的:

高成本效益:
  • 源代码缺陷分析仪
  • Context-configured源代码分析器

有效性:高

体系结构或设计审查

根据飙升,以下检测技术可能是有用的:

高成本效益:
  • 正式的方法/ Correct-By-Construction
成本有效的部分报道:
  • 检验(IEEE 1028标准)(适用于需求、设计、源代码,等等)。

有效性:高

+会员资格
部分帮助这MemberOf关系表显示额外CWE类别和视图引用这个弱点作为成员。这些信息通常是有用的在理解一个弱点符合外部信息源的上下文中。
自然 类型 ID 的名字
MemberOf 视图视图——CWE条目的一个子集,它提供了一种检查CWE的内容。两个主要视图结构片(列表)和图(包含条目之间的关系)。 635年 最初使用的弱点NVD从2008年到2016年
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 713年 OWASP十大2007类别A2 -注塑缺陷
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 722年 OWASP十大2004类别A1 -用户输入
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 727年 OWASP十大2004类别A6 -注塑缺陷
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 751年 2009年前25 -安全组件之间的交互
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 801年 2010年前25 -安全组件之间的交互
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 810年 OWASP十大2010类别A1 -注射
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 864年 2011年前25 -安全组件之间的交互
MemberOf 视图视图——CWE条目的一个子集,它提供了一种检查CWE的内容。两个主要视图结构片(列表)和图(包含条目之间的关系)。 884年 CWE横截面
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 929年 OWASP十大2013类别A1 -注射
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 990年 SFP二级集群:污染输入命令
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 1005年 7 pk -输入验证和代表性
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 1027年 OWASP十大2017类别A1 -注射
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 1131年 方案》(2016)——安全质量措施
MemberOf 视图视图——CWE条目的一个子集,它提供了一种检查CWE的内容。两个主要视图结构片(列表)和图(包含条目之间的关系)。 1200年 弱点在2019 CWE最危险的软件错误
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 1308年 方案及质量措施,安全
MemberOf 视图视图——CWE条目的一个子集,它提供了一种检查CWE的内容。两个主要视图结构片(列表)和图(包含条目之间的关系)。 1337年 2021 CWE最危险软件的弱点的弱点
MemberOf 视图视图——CWE条目的一个子集,它提供了一种检查CWE的内容。两个主要视图结构片(列表)和图(包含条目之间的关系)。 1340年 方案及数据保护措施
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 1347年 OWASP十大2021类别A03:2021 -注射
MemberOf 视图视图——CWE条目的一个子集,它提供了一种检查CWE的内容。两个主要视图结构片(列表)和图(包含条目之间的关系)。 1350年 2020 CWE最危险软件的弱点的弱点
MemberOf 视图视图——CWE条目的一个子集,它提供了一种检查CWE的内容。两个主要视图结构片(列表)和图(包含条目之间的关系)。 1387年 2022 CWE最危险软件的弱点的弱点
+笔记

的关系

SQL注入可以从特殊字符的管理不善,女仆或denylist / allowlist问题。它可以基本身份验证错误。
+分类法映射
映射分类名称 节点ID 适合 映射节点名
千鸟 SQL注入
7有害的王国 SQL注入
SQL注入
OWASP十大2007 A2 CWE更具体 注塑缺陷
OWASP十大2004 A1 CWE更具体 用户输入
OWASP十大2004 A6 CWE更具体 注塑缺陷
WASC 19 SQL注入
软件故障模式 SFP24 污染输入命令
OMG ASCSM ASCSM -cwe - 89
SEI CERT甲骨文Java编码标准 IDS00-J 确切的 防止SQL注入
+引用
迈克尔•霍华德(REF-44)大卫·勒布朗和Viega约翰。软件安全的“24宗罪”。“罪1:SQL注入。”Page 3. McGraw-Hill. 2010.
[REF-7]大卫迈克尔·霍华德和勒布朗。编写安全代码。第十二章,397页“数据库输入问题”。第二版。微软出版社。2002-12-04。<https://www.microsoftpressstore.com/store/writing -安全-代码- 9780735617223>。
OWASP (ref - 867)。“SQL注入预防备忘单”。<http://www.owasp.org/index.php/SQL_Injection_Prevention_Cheat_Sheet>。
[ref - 868]史蒂文fiedl的用于检查电子邮件地址。“通过示例SQL注入攻击”。2007-10-10。<http://www.unixwiz.net/techtips/sql-injection.html>。
[ref - 869] Ferruh Mavituna。“SQL注入备忘单”。2007-03-15。<http://ferruh.mavituna.com/sql-injection-cheatsheet-oku/>。
[ref - 870]大卫•Litchfield约翰克里斯•Anley Heasman和比尔Grindlay。“数据库黑客手册:维护数据库服务器”。威利。2005-07-14。
大卫Litchfield [ref - 871]。“甲骨文黑客手册:黑客和捍卫甲骨文”。威利。2007-01-30。
微软(ref - 872)。“SQL注入”。2008 - 12所示。<http://msdn.microsoft.com/en-us/library/ms161953.aspx>。
(ref - 873)微软安全漏洞研究和国防。“SQL注入攻击”。<http://blogs.technet.com/swi/archive/2008/05/29/sql-injection-attack.aspx>。
(ref - 874)迈克尔·霍华德。“给SQL注入应有的尊重”。2008-05-15。<http://blogs.msdn.com/sdl/archive/2008/05/15/giving-sql-injection-the-respect-it-deserves.aspx>。
(ref - 875)弗兰克·金。“前25系列-等级2 - SQL注入”。无软件安全研究所。2010-03-01。<http://blogs.sans.org/appsecstreetfighter/2010/03/01/top-25-series-rank-2-sql-injection/>。
(ref - 76)肖恩·巴纳姆和迈克尔Gegick。“最小特权”。2005-09-14。<https://www.cisa.gov/uscert/bsi/articles/knowledge/principles/least-privilege>。
(ref - 62)马克·多德约翰麦克唐纳和贾斯汀Schuh。“软件安全评估的艺术”。第八章,“SQL查询”,431页。1版。艾迪生卫斯理》2006。
(ref - 62)马克·多德约翰麦克唐纳和贾斯汀Schuh。“软件安全评估的艺术”。17章,“SQL注入”,1061页。1版。艾迪生卫斯理》2006。
(ref - 962)对象管理组织(OMG)。“自动源代码安全措施(ASCSM)”。ascsm - cwe - 89。2016 - 01。<http://www.omg.org/spec/ASCSM/1.0/>。
+内容的历史
+提交
提交日期 提交者 组织
2006-07-19 千鸟
+修改
修改日期 修饰符 组织
2008-07-01 Eric Dalci Cigital
更新Time_of_Introduction
2008-08-01 股的分析
添加/更新白盒定义
2008-08-15 Veracode
建议OWASP 2004年排名前十的映射
2008-09-08 CWE内容团队 主教法冠
更新Applicable_Platforms、Common_Consequences Modes_of_Introduction、名称、关系、Other_Notes, Relationship_Notes Taxonomy_Mappings
2008-10-14 CWE内容团队 主教法冠
更新描述
2008-11-24 CWE内容团队 主教法冠
更新Observed_Examples
2009-01-12 CWE内容团队 主教法冠
更新Demonstrative_Examples、描述Enabling_Factors_for_Exploitation Modes_of_Introduction,名字,Observed_Examples, Other_Notes Potential_Mitigations,引用关系
2009-03-10 CWE内容团队 主教法冠
更新Potential_Mitigations
2009-05-27 CWE内容团队 主教法冠
更新Demonstrative_Examples,名字,Related_Attack_Patterns
2009-07-17 股的分析
改善了White_Box_Definition
2009-07-27 CWE内容团队 主教法冠
更新描述,名称,White_Box_Definitions
2009-12-28 CWE内容团队 主教法冠
更新Potential_Mitigations
2010-02-16 CWE内容团队 主教法冠
更新Demonstrative_Examples、Detection_Factors Potential_Mitigations、引用关系,Taxonomy_Mappings
2010-04-05 CWE内容团队 主教法冠
更新Demonstrative_Examples Potential_Mitigations
2010-06-21 CWE内容团队 主教法冠
更新Common_Consequences Demonstrative_Examples,描述、Detection_Factors名字,Potential_Mitigations引用关系
2010-09-27 CWE内容团队 主教法冠
更新Potential_Mitigations
2011-03-29 CWE内容团队 主教法冠
更新Demonstrative_Examples
2011-06-01 CWE内容团队 主教法冠
更新Common_Consequences
2011-06-27 CWE内容团队 主教法冠
更新的关系
2011-09-13 CWE内容团队 主教法冠
更新Potential_Mitigations,引用
2012-05-11 CWE内容团队 主教法冠
更新Potential_Mitigations、引用Related_Attack_Patterns、人际关系
2012-10-30 CWE内容团队 主教法冠
更新Potential_Mitigations
2013-07-17 CWE内容团队 主教法冠
更新的关系
2014-06-23 CWE内容团队 主教法冠
更新的关系
2014-07-30 CWE内容团队 主教法冠
更新Detection_Factors、关系、Taxonomy_Mappings
2015-12-07 CWE内容团队 主教法冠
更新的关系
2017-05-03 CWE内容团队 主教法冠
更新的关系
2017-11-08 CWE内容团队 主教法冠
更新Applicable_Platforms、Demonstrative_Examples Enabling_Factors_for_Exploitation、Likelihood_of_Exploit Modes_of_Introduction, Observed_Examples,引用关系,White_Box_Definitions
2018-03-27 CWE内容团队 主教法冠
更新引用关系
2019-01-03 CWE内容团队 主教法冠
更新引用关系,Taxonomy_Mappings
2019-06-20 CWE内容团队 主教法冠
更新的关系
2019-09-19 CWE内容团队 主教法冠
更新的关系
2020-02-24 CWE内容团队 主教法冠
更新Potential_Mitigations、关系、Time_of_Introduction
2020-06-25 CWE内容团队 主教法冠
更新Demonstrative_Examples、Potential_Mitigations Relationship_Notes
2020-08-20 CWE内容团队 主教法冠
更新的关系
2020-12-10 CWE内容团队 主教法冠
更新Potential_Mitigations、人际关系
2021-07-20 CWE内容团队 主教法冠
更新的关系
2021-10-28 CWE内容团队 主教法冠
更新的关系
2022-06-28 CWE内容团队 主教法冠
更新Observed_Examples、人际关系
2022-10-13 CWE内容团队 主教法冠
更新Observed_Examples,引用
2023-01-31 CWE内容团队 主教法冠
更新Demonstrative_Examples、描述
+以前的条目名称
改变日期 以前的条目名称
2008-04-11 SQL注入
2008-09-09 数据未能清洁到SQL查询(又名“SQL注入”)
2009-01-12 未能清理数据的SQL查询(又名“SQL注入”)
2009-05-27 未能保存SQL查询结构(又名“SQL注入”)
2009-07-27 未能保存SQL查询结构(SQL注入)
2010-06-21 卫生处理不当的特殊元素中使用一个SQL命令(SQL注入)
更多的信息是可用的,请选择一个不同的过滤器。
页面最后更新:2023年1月31日