LastPass 正则表达式漏洞的关键代码处我没看懂,请问怎么解释?

2016-07-29 10:48:35 +08:00
 llbbzh

前情回顾:

7 月 27 日,谷歌 Project Zero 成员 Tavis Ormandy 发现了几个 LastPass 的安全漏洞。

其中一个漏洞,出现在密码自动填充功能上。当访问一个精心构造的网址,比如http://avlidienbrunn.se/@twitter.com/@hehe.php的时候, LastPass 扩展会把当前域名认为是 twitter.com ,从而给攻击者的页面填入推特密码。

其中漏洞点:

var fixedURL = URL.match(/^(.*:\/\/[^\/]+\/.*)@/);
fixedURL && (url = url.substring(0, fixedURL[1].length) + url.substring(fixedURL[1].length).replace(/@/g, "%40"));

我的想法

一开始我认为这段正则表达式用来匹配域名。但是我发现根本匹配不出什么东西。

后来我认为它用于处理网址中包含用户名和密码的情况,如 http://123:abc@example.com/ ,然后第二行用于在遇到这类情况时处理之。然而还是匹配不出任何东西。

测试:

请问一下这段代码到底是干什么的呢?

1319 次点击
所在节点    问与答
2 条回复
tony1016
2016-07-29 13:07:49 +08:00
有意思,关注一下
xxxyyy
2016-07-29 13:54:05 +08:00
你只要找出那个 URL 变量从哪里来的,就应该清楚了。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/295708

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX