V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
llbbzh
V2EX  ›  问与答

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

  •  
  •   llbbzh · 2016-07-29 10:48:35 +08:00 · 1307 次点击
    这是一个创建于 2841 天前的主题,其中的信息可能已经有所发展或是发生改变。

    前情回顾:

    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:[email protected]/ ,然后第二行用于在遇到这类情况时处理之。然而还是匹配不出任何东西。

    测试:

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

    2 条回复    2016-07-29 13:54:05 +08:00
    tony1016
        1
    tony1016  
       2016-07-29 13:07:49 +08:00
    有意思,关注一下
    xxxyyy
        2
    xxxyyy  
       2016-07-29 13:54:05 +08:00 via Android
    你只要找出那个 URL 变量从哪里来的,就应该清楚了。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1222 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 18:21 · PVG 02:21 · LAX 11:21 · JFK 14:21
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.