了解网络安全防御工作的人即使不是技术背景,都会知道 SQL 注入漏洞的常见程度以及这种漏洞危害的严重性。按行内普遍共识,SQL 注入漏洞和弱密码漏洞一样,都是属于不可原谅的漏洞。
笔者:国际认证信息系统审计师、软考系统分析师
为啥 SQL 注入漏洞(以下简称 SQLi)如此常见?归根到底还是因为网络安全防御整体就是反人性的。人的自由意志产生了随意性,所以随意性是与生俱来的人性。网络安全攻防双方的焦点实际就是落在对随意性的控制上。
而 SQLi 之所以不可原谅,是因为这早就有了各种有效的控制措施,只要在软件开发阶段严格执行这些控制措施,SQLi 就能得到避免。但时至今日仍然在软件中出现此类漏洞,要么是疏忽,要么是懒惰,所以都是人性。
去年软件 MOVEit 的 SQLi:CVE-2023-34362[1],令到美国多级政府部门、各类企业产生大规模数据泄漏,影响深重。幸好是该软件在我国内用得不多,未构成大规模影响,不然后果也是不堪设想。
有鉴于此,在2024年3月,美国网络安全与基础设施安全局发布了题为《Secure by Design Alert: Eliminating SQL Injection Vulnerabilities in Software 》的网络安全指引[2],要求软件行业从根本上推进解决软件中存在的 SQLi 问题。
指引内容不多,但就让我想起来自己碰到过的那个糟糕的实例,到处都是 SQLi,全靠一些临时措施凑合应付眼前的危机。
顺带一提,该系统的开发商从未能在设计的高危漏洞响应时间内给出补丁,从情况估计,系统的客制化没有做好版本和分支的管理,那么其软件工程质量情况也就可想而知了。