CWE-908:使用非初始化资源
查看自定义信息:
该表显示了与该弱点相关的弱点和高级类别。这些关系定义为childof,parentof,ementof,并深入了解可能存在于较高和较低抽象水平的类似项目。此外,定义了诸如Peerof和Canalsobe之类的关系,以显示用户可能想要探索的类似弱点。
与观点“研究概念”相关(CWE-1000)
与“软件开发”视图相关(CWE-699)
与“简化已发表漏洞的简化映射”(CWE-1003)相关的视图相关(CWE-1003)
该清单显示了可能出现的弱点的可能区域。这些可能适用于特定的命名语言,操作系统,体系结构,范式,技术或一类此类平台。该平台与给定弱点出现在该实例的频率一起列出。
语言 班级:不是特定语言的(不确定的患病率)
该表指定与弱点相关的不同个人后果。该范围确定了违反的应用程序安全区域,而影响描述了如果对手成功利用这一弱点,就会产生负面的技术影响。其可能性提供了有关预期相对于列表中其他后果的特定后果的可能性的信息。例如,可能会利用弱点来实现一定的影响,但很可能会利用它来实现不同的影响。
示例1 在这里,咨询了布尔值初始化字段,以确保初始化任务仅完成一次。但是,该字段在静态初始化期间错误地设置为true,因此从未达到初始化代码。
(不良代码)
示例语言:爪哇
私人布尔初始化= true;
公共void somemethod(){
如果(!初始化){
//执行初始化任务 ... 初始化= true; 示例2 以下代码打算仅将某些操作限制在管理员身上。
(不良代码)
示例语言:珀尔
$ username = getCurrentuser();
$ state = getStatedata($ username); 如果(定义($ state)){
$ uid = extractUserid($ state); }# 做东西 如果($ uid == 0){
doadminthings(); }如果该应用程序无法提取状态信息 - 例如,由于数据库超时 - 将$ UID变量无法由程序员明确设置。这将导致$ UID被认为等于条件中的“ 0”,从而使原始用户可以执行管理员操作。即使攻击者无法直接影响状态数据,出乎意料的错误也可能导致不正确的特权仅出于意外而分配给用户。 示例3 以下代码打算将字符串连接到变量并打印字符串。
(不良代码)
示例语言:C
char str [20];
Strcat(Str,“ Hello World”); printf(“%s”,str); 这似乎是足够无辜的,但是STR并未初始化,因此它包含随机内存。结果,str [0]可能不包含空终结器,因此副本可能以其他0的偏移范围开始。后果可能会有所不同,具体取决于基础内存。 如果在str [8]之前发现了无效终结器,则将在“ Hello World”字符串之前打印一些随机垃圾。内存可能包含以前用途的敏感信息,例如密码(可能是由于CWE-14或者CWE-244)。在此示例中,这可能没什么大不了的,但是请考虑如果在发现空终止器之前将大量内存打印出来,可能会发生什么。 如果在str [8]之前找不到空终结器,则可能会发生缓冲区溢出,因为Strcat将首先查找Null终结器,然后复制从该位置开始的12个字节。或者,可能会发生缓冲区过度阅读(CWE-126)如果在到达内存段结束之前找不到零终端,则导致分割故障和崩溃。 示例4 当我与err_val相同时,此示例将使test_string处于未知条件下,因为test_string未初始化(CWE-456)。取决于该代码段出现的位置(例如在功能主体内),如果将其存储在堆或堆栈上,则可能是随机的。如果变量在静态内存中声明,则可能为零或null。编译器优化可能有助于该地址的不可预测性。
(不良代码)
示例语言:C
char *test_string;
如果(i!= err_val) {
test_string =“ Hello World!”; }printf(“%s”,test_string); 到达printf()时,test_string可能是一个意外的地址,因此printf可能会打印垃圾字符串(CWE-457)。 为了修复此代码,有几种方法可以确保Test_string在达到printf()后才正确设置。 一种解决方案是将test_string设置为有条件之前的可接受默认值:
(好代码)
示例语言:C
char *test_string =“开始完成”;
如果(i!= err_val) {
test_string =“ Hello World!”; }printf(“%s”,test_string); 另一个解决方案是确保条件的每个分支(包括默认分支)可以确保设置test_string:
(好代码)
示例语言:C
char *test_string;
如果(i!= err_val) {
test_string =“ Hello World!”; }别的 {
test_string =“在另一侧完成!”; }printf(“%s”,test_string);
此成员关系表显示了其他CWE类别和视图,将此弱点称为成员。该信息通常可用于理解弱点适合外部信息源的何处。
提供更多信息 - 请选择其他过滤器。
|
使用共同弱点枚举(CWE)和本网站的相关参考使用条款。CWE由美国国土安全部(DHS)网络安全和基础设施安全局(CISA),由国土安全系统工程和开发研究所(HSSEDI)由manbetx客户端首页(MITER)。版权所有©2006–2023,Miter Comanbetx客户端首页rporation。CWE,CWSS,CWRAF和CWE徽标是Miter Corporation的商标。manbetx客户端首页 |