程式碼安全測試第七期:不安全的反射漏洞缺陷
1、 什麼是不安全的反射漏洞?
反射這一概念最早由程式設計開發人員Smith在1982年提出,主要指應用程式訪問、檢測、修改自身狀態與行為的能力。這一概念的提出立刻吸引了程式設計界的極大關注,各種研究工作隨之展開,隨之而來引發程式設計革命,出現了多種支援反射機制的物件導向程式語言。
在Java程式語言中,Java反射機制主要提供了以下功能:
·在執行時判斷任意一個物件所屬的類;
·在執行時構造任意一個類的物件;
·在執行時判斷任意一個類所具有的成員變數和方法;
·在執行時呼叫任意一個物件的方法;
·生成動態代理。
不安全的反射是指應用程式使用具有反射功能的外部輸入來選擇要使用的類或程式碼,可能被攻擊者利用而輸入或選擇不正確的類或程式碼。如果發生這種情況,那麼攻擊者可能會建立開發人員不想要的邏輯路徑。這些路徑可能會繞過身份驗證或訪問控制檢查,或者導致應用程式異常執行。執行未經授權的程式碼或命令、改變執行邏輯、崩潰、退出或重啟,讀取應用程式資料等。
2、不安全的反射漏洞的構成條件有哪些?
①不可靠的外部輸入進入程式;
②程式使用外部輸入進行例項化類並執行。
3、不安全的反射漏洞會造成哪些後果?
①攻擊者可能能夠執行攻擊者無法直接訪問的程式碼;
②攻擊者可以在錯誤的位置或錯誤的時間呼叫其它程式碼,這可能會更改關鍵的系統狀態。
③攻擊者能夠使用反射來呼叫錯誤的程式碼,使用違反API的意外引數,這可能導致應用程式退出或掛起。透過導致呼叫錯誤的程式碼,攻擊者可能能夠觸發執行時錯誤,從而洩露錯誤訊息中的敏感資訊。
4、如何防範修補不安全的反射漏洞?
①重構程式碼以避免使用反射;
②儘量避免使用使用者控制的輸入來選擇和載入類或程式碼。
5、不安全的反射漏洞樣例:
用靜態程式碼檢測分析上述程式程式碼,則可以發現程式碼中存在著不安全的反射 安全漏洞,如下圖:
不安全反射在CWE中被編號為CWE-470:Use of Externally-Controlled Input to Select Classes or Code('Unsafe Reflection'),中文意思是:使用外部控制的輸入來選擇類或程式碼(不安全反射)。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70000012/viewspace-2773970/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 程式碼安全測試第十六期:使用不安全的隨機值漏洞隨機
- 程式碼安全測試第二十八期:未使用的變數缺陷漏洞變數
- 程式碼安全測試第十九期:用不安全的授權建立臨時檔案漏洞
- 程式碼安全測試第九期:Switch中省略了break語句導致的程式碼缺陷漏洞
- 程式碼安全測試第二十九期:通用異常捕獲宣告缺陷漏洞
- 程式碼安全測試第二十五期:陣列宣告為public final static漏洞缺陷陣列
- 程式碼安全測試第八期:Switch中缺少default導致的程式碼缺陷
- 程式碼安全測試第十二期:LDAP注入漏洞LDA
- 程式碼安全測試第十五期:跨站指令碼漏洞指令碼
- 程式碼安全測試第三十期:丟擲通用異常缺陷
- 程式碼安全測試第六期:XPath注入漏洞
- 程式碼缺陷解讀:通用異常捕獲宣告缺陷漏洞
- 程式碼安全測試第五期:OS命令注入漏洞
- 程式碼安全測試第十八期:呼叫System.exit()存在安全漏洞
- 程式碼安全測試第十期:日誌偽造漏洞
- 程式碼安全測試第十一期:記憶體洩漏漏洞記憶體
- 程式碼安全測試第十三期:敏感資訊的明文傳輸漏洞
- 程式碼安全測試第四期:可逆的單向雜湊漏洞
- 使用不安全的隨機值漏洞隨機
- 程式碼安全測試第二期:URL重定向(跳轉)漏洞
- 程式碼安全測試第三期:路徑遍歷漏洞的防範與檢測
- 程式碼安全 兩種程式碼漏洞
- 瞭解下C# 不安全程式碼C#
- 程式碼安全測試第一期:什麼是SQL隱碼攻擊漏洞?SQL
- 程式碼安全測試第二十期:資源未關閉/釋放漏洞
- 程式碼安全測試第二十二期:HTTP響應拆分漏洞HTTP
- 靜態應用程式安全測試如何發現網路中看不見的缺陷
- 滲透測試之CSRF程式碼漏洞的檢測與加固方案
- 網站安全測試之APP滲透測試漏洞網站APP
- 程式碼安全測試第二十四期:數字型別的不正確轉換漏洞型別
- 【軟體測試】缺陷
- 程式碼安全測試第二十一期:從finally塊中return漏洞
- 網站滲透測試安全檢測漏洞網站
- 用不安全的授權建立臨時檔案漏洞
- 程式碼安全測試第十七期:物件只定義了Equals和Hashcode方法之一的漏洞物件
- 不安全的瀏覽器密碼瀏覽器密碼
- 網站漏洞測試php程式碼修復詳情網站PHP
- 網站滲透測試漏洞分析程式碼架構網站架構