需要很好的类比:由于不同的编码人员以不同的方式为同一个应用程序实现相同的功能而导致的安全问题

信息安全 sql注入 编程 用户教育
2021-09-01 05:31:12

我必须向学校介绍Moodle 平台中发现的漏洞当然,它们仅适用于已修补的旧版本。

问题是演示文稿应该针对没有技术知识的观众。所以我不能用代码解释任何东西,但我应该给出一个解释,帮助观众理解问题,即使他们对技术的理解为零。

Moodle 的问题源于不同的贡献者以不同的方式实现相同的功能,从而产生了一些安全漏洞。仅其中一个漏洞不足以对系统造成相当大的破坏,但结合利用错误假设、对象注入、双重 SQL 注入和许可的管理员仪表板 RCE 成为可能。

我想用一栋最初是安全建造的房子来解释它,但由于在上面建造了一些额外的东西而变得不安全,但我正在寻找更具体的东西,或者可能是一些适合的真实世界历史场景。

我想也许你可能有更好的主意。

4个回答

这是一个我认为相当准确但通常可以理解的类比的想法:

银行需要两种形式的身份证才能获得贷款:驾照和出生证明。银行员工爱丽丝和鲍勃的懒惰方式不同:爱丽丝总是在不检查的情况下盖上“已验证的驾照”,而鲍勃总是在不检查的情况下盖上“已验证的出生证明”。

就个人而言,这很糟糕,但也不算太糟糕——任何使用伪造文件申请的人都会被员工仍在执行的一项检查中发现。但是有一天,Alice 迟到了,在一张表格上盖上“已验证的驾驶执照”,然后让 Bob 完成。Bob 看到表格,假设 Alice 确实验证了许可证,并在“出生证明已验证”上盖章,而不像往常一样检查。贷款被批准,没有任何一种形式的身份证被检查过。

这是一个完美的例子:火星气候轨道器的损失。 https://www.wired.com/2010/11/1110mars-climate-observer-report/

去引用:

NASA 审查委员会发现问题出在控制轨道器推进器的软件中。该软件计算了推进器需要施加的力,以磅为单位。假设数据采用公制单位:牛顿,则有一个单独的软件接收数据。

这导致了大约 4.5正确数量的分歧。卫星进入大气层太深,燃烧殆尽。

情况是:人们在没有协调的情况下独立工作,设计出在本地有用的功能,但当组合起来时,就会造成灾难。

想到的第一个历史参考资料:

两者都制作有趣的故事和令人兴奋的视觉效果。

两者的解决方案是中央监督和中央规划,这与开源失败的解决方案相同,就像 Moodle 所经历的那样。

这让人想起 1981 年凯悦酒店人行道倒塌。 TL;DR 建筑师规定了一种设计,制造商根据合同替换了他们自己的设计,随后出现了机械故障(和死亡)。对于工科学生来说,这是一个常见的案例研究。

资料来源:https ://en.wikipedia.org/wiki/Hyatt_Regency_walkway_collapse#Investigation

编辑以提供额外的清晰度:

记录在案的工程师将致命的设计缺陷归因于通信中断。他……把责任委托给负责每个项目的同事。

记录在案的工程师进一步争辩说,结构工程师将钢与钢连接的设计留给制造商是业内的普遍做法……

... 制造商 ... 将工作转包给外部细节设计人员。反过来,那个细部错误地认为……车间图纸已经设计好了,因此他自己没有对连接进行计算。

...记录在案的工程师在文件上盖章... [和] ...表示他没有亲自检查所有计算,而是依靠他的项目工程师和设计团队的工作。

资料来源:https ://www.asce.org/question-of-ethics-articles/jan-2007/

请注意,为了保持块引用的简短,已经减去了很多信息,但是通过全面分析,您真的可以感受到假设和误解的完美风暴,这些假设和错误沟通必须对齐才能完全实现机械故障。