一、什么是从finally块中return?
Java中的finally一般与try一起使用,在程序进入try块之后,无论程序是因为异常而中止或其它方式返回终止的,finally块的内容一定会被执行。
代码在finally块中有一个return语句,这将导致try块中的任何抛出异常被丢弃。
二、从finally块中return漏洞构成条件有哪些?
满足以下条件,就构成了一个该类型的安全漏洞:
1、代码在finally块中有一个return语句。try块中的异常因finally块中的return无法到达exit块被抛出。
三、从finally块中return漏洞会造成哪些后果?
关键词:改变执行逻辑;
本该抛出的异常或其它处理由于finally块中的return先行执行而被丢弃,所以导致上层程序无法执行对应的代码,产生问题。
四、从finally块中return漏洞的防范和修补方法有哪些?
不要在finally块中使用return语句。finally块应该有“cleanup”代码。
五、从finally块中return漏洞样例:
用悟空 静态代码检测工具分析上述程序代码,则可以发现代码中存在着“从finally块中return非正常退出” 导致的 代码缺陷,如下图:
从finally块中return在CWE中被编号为CWE-584: Return Inside Finally Block
本文作者:中科天齐软件安全
本文为安全脉搏专栏作者发布,转载请注明:https://www.secpulse.com/archives/169910.html