llbbzh
V2EX  ›  问与答

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

  •  
  •   llbbzh · Jul 29, 2016 · 1672 views
    This topic created in 3612 days ago, the information mentioned may be changed or developed.

    前情回顾:

    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 replies    2016-07-29 13:54:05 +08:00
    tony1016
        1
    tony1016  
       Jul 29, 2016
    有意思,关注一下
    xxxyyy
        2
    xxxyyy  
       Jul 29, 2016 via Android
    你只要找出那个 URL 变量从哪里来的,就应该清楚了。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   838 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 21:46 · PVG 05:46 · LAX 14:46 · JFK 17:46
    ♥ Do have faith in what you're doing.