CWE-562: Return of Stack Variable Address(返回堆棧變量地址)

 ID: 562

類型:基礎
結構:簡單

狀態:草稿

描述

函數返回堆棧變量的地址,這將導致意外的程序行爲,通常以崩潰的形式出現。

擴展描述

因爲局部變量是在堆棧上分配的,所以當程序返回指向局部變量的指針時,它將返回堆棧地址。隨後的函數調用可能會重複使用相同的堆棧地址,從而覆蓋指針的值,指針不再對應於同一個變量,因爲函數的堆棧幀在返回時無效。這最多會導致指針的值意外更改。在許多情況下,它會導致程序在下次取消指針引用時崩潰。

相關視圖

與“研究層面”視圖(CWE-1000)相關

與“開發層面”視圖(CWE-699)相關

引入模式

階段

說明

實現

 

應用平臺

語言

C (出現的可能性不確定)

C++ (出現的可能性不確定)

後果

範圍

衝擊

可能性

可利用性

技術衝擊: DoS: 崩潰、退出或重啓

 

示例

例1

一下函數返回地址堆棧.

(問題代碼)

Example Language:

char* getName() {

char name[STR_MAX];
fillInName(name);
return name;

}

應對措施

階段: 測試

使用靜態分析工具發現堆棧變量地址的返回

種屬

關係

類型

ID

名稱

屬於

748

CERT C Secure Coding Standard (2008) Appendix - POSIX (POS)

屬於

998

SFP Secondary Cluster: Glitch in Computation

屬於

1156

SEI CERT C Coding Standard - Guidelines 02. Declarations and Initialization (DCL)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章