程式碼安全測試第九期:Switch中省略了break語句導致的程式碼缺陷漏洞

zktq2021發表於2021-05-28

1、什麼是Switch中省略了break語句導致的程式碼缺陷?

break語句通常用在迴圈語句和switch語句中。當break用於switch語句中時,可使程式跳出switch而執行switch以後的語句;如果沒有break語句,則會從滿足條件的地方(即與switch(表示式)括號中表示式匹配的case)開始執行,直到switch結構結束。

如果程式在switch或類似構造中省略了break語句,則會導致多個條件相關聯的程式碼被執行。當程式設計師只打算執行與一個條件相關的程式碼時,這可能會引起問題,可能導致關鍵程式碼在不該執行的情況下執行。

2、Switch中省略了break語句導致的程式碼缺陷構成條件有哪些?

①switch語句的catch塊中沒有break指令。

3、Switch中省略了break語句導致的程式碼缺陷會造成哪些後果?

關鍵字:改變執行邏輯

可能導致執行意外的輯和其他意外的應用程式行為。

4、Switch中省略了break語句導致的缺陷防範和修補方法有哪些?

省略一個break語句會導致使用者無法區分是忘記編寫break語句還是開發人員故意為之。如果確認是故意使兩種情況以上使用同一種處理邏輯,確保邏輯正確。

②使用if語句替代該功能,這更安全。

5、Switch中缺少default導致的漏洞樣例:

靜態程式碼檢測分析可以發現程式碼中存在著switch中省略了break語句的缺陷,如下圖:

switch中省略了break語句在CWE中被編號為CWE-484: Omitted Break Statement in Switch


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70000012/viewspace-2774397/,如需轉載,請註明出處,否則將追究法律責任。

相關文章