TL:DR – 出生日期或社会保险号码不是确保访问数据的好主意。
拼图 – 下面的两张图片有什么区别?
![](https://sp-ao.shortpixel.ai/client/to_auto,q_lossy,ret_img,w_647,h_324/https://my127001.pl/wp-content/uploads/2020/11/image-13.png)
![](https://sp-ao.shortpixel.ai/client/to_auto,q_lossy,ret_img,w_737,h_379/https://my127001.pl/wp-content/uploads/2020/11/image-12.png)
但是,让我们从头开始。 不幸的是,与 IT 世界通常的情况一样,便利性与安全性不齐。 我觉得这次差不多。 但是,有一组敏感数据不能做出妥协。 此类数据包括但不限于有关我们健康的信息。
我的朋友 Kacpra 发来一条关于如何获得实验室结果的消息,对此我感到震惊,因此我决定更详细地调查负责此问题的解决方案。
如上图所示 – 要通过"简化登录"功能访问您的结果,您需要两个信息:
- 订单 ID,后续订单数量正在增加:
- 订购人的出生日期[天=X=月]X=X]
根据某些假设,可分配到订单 ID 的出生日期组合数量仅为约 19,000 组合。 不难猜出,生成所有此类组合并检查它们是否与订单号匹配并不是一个大问题。
事实证明,我的假设是正确的,经过几百次列举后,设法匹配访问数据:
![列举入侵者](https://sp-ao.shortpixel.ai/client/to_auto,q_lossy,ret_img,w_953,h_534/https://my127001.pl/wp-content/uploads/2020/11/image-4.png)
这允许敏感的患者信息,如:
- 名字;
- 名称:
- 佩塞尔:
- 出生日期;
- 居住地址;
- 测试结果;
![冠状病毒测试结果](https://sp-ao.shortpixel.ai/client/to_auto,q_lossy,ret_img,w_580,h_186/https://my127001.pl/wp-content/uploads/2020/11/image-5-1024x330.png)
![冠状病毒测试结果](https://sp-ao.shortpixel.ai/client/to_auto,q_lossy,ret_img,w_604,h_384/https://my127001.pl/wp-content/uploads/2020/11/image-6.png)
成功列举尝试的另一个例子:
![列举打嗝入侵者](https://sp-ao.shortpixel.ai/client/to_auto,q_lossy,ret_img,w_1024,h_367/https://my127001.pl/wp-content/uploads/2020/11/image-7-1024x367.png)
![冠状病毒测试结果](https://sp-ao.shortpixel.ai/client/to_auto,q_lossy,ret_img,w_987,h_685/https://my127001.pl/wp-content/uploads/2020/11/image-11.png)
一旦我确认了我的易感性,我向负责的软件报告了此错误,以及维修建议:
![报告安全错误的电子邮件](https://sp-ao.shortpixel.ai/client/to_auto,q_lossy,ret_img,w_1024,h_162/https://my127001.pl/wp-content/uploads/2020/11/image-3-1024x162.png)
怎么办,怎么生活?
针对此类攻击最常见的安全措施之一是实施 captcha。 在几次(例如三次)访问订单数据的尝试失败后,应用程序的用户将被要求重写显示的 captcha 代码。 但是,请注意,实施这种机制只是(或直到)攻击者减速,在最简单的情况下,攻击者将能够使用OCR扫描仪或专用的captcha阅读服务进一步简化出生日期。
更好和推荐的安全功能是通过 一个足够长的随机密码访问订单结果,该密码将进入客户的电话号码。
幸运的是,通过从谷歌实施重新CAPTCHA机制,错误很快就修复了:
![](https://sp-ao.shortpixel.ai/client/to_auto,q_lossy,ret_img,w_1024,h_373/https://my127001.pl/wp-content/uploads/2020/11/image-2-1024x373.png)