价值10800美元的拼写错误:一个点如何破坏Twitter的身份验证
在研究Web身份验证漏洞时,我遇到了一个引人入胜的案例研究,展示了微小的实现缺陷如何危及整个身份验证系统。这不是复杂的密码学破解——而是Twitter"使用Digits登录"功能中的一个简单正则表达式错误,导致了完全的账户接管。
漏洞:当一个点变成通配符时
问题出现在Twitter的Digits SDK中,具体是在验证身份验证服务与客户端网站之间的消息来源时。易受攻击的代码如下:
|
|
乍看之下,代码似乎在检查消息来源是否匹配https://www.digits.com。但JavaScript的String.prototype.search()工作方式存在关键缺陷。
细节中的魔鬼
search()将其参数转换为正则表达式- 在正则表达式中,点号(.)匹配任何单个字符
- 因此
"https://www.digits.com".search("www.d.gits.co")实际上会返回匹配位置…
创建账户以阅读完整故事。作者仅向Medium会员提供此故事。
如果您是Medium的新用户,请创建一个新账户来阅读此故事。