Settings

Theme

Signal's TLS Proxy Failed to Be Probing Resistant

github.com

114 points by rrryougi 5 years ago · 45 comments

Reader

bahorn 5 years ago

While the authors of this definitely didn't handle this well, I'd argue it's a pretty severe weakness and the tool shouldn't have been released in this state. Active probing has been observed in the wild [1] and pretty much all tooling in the space handles it in their threat model [2], so its naive to not consider it.

I get why the signal team wanted something to use HTTPS, even networks with completely insane firewalls accept it and they get to reuse existing domain fronting code, but existing tools continues to viable in Iran and would have made much more sense in the circumstances.

[1] https://blog.torproject.org/learning-more-about-gfws-active-...

[2] https://github.com/Yawning/obfs4/blob/master/doc/obfs4-spec....

schoolornot 5 years ago

Moxie deserves an ACM award for his contributions to crypto but he shouldn't be leading the project. Maybe posting on the Discourse forum was the right thing to do here. I just see a lot of hostility between Signal employees and those wishing to make the project a little bit better.

tarkin2 5 years ago

How long did he wait for the signal forum to approve his account? The guy, or girl, seems rather aggressive. It's mentioned they've not slept in a while...

  • dwohnitmok 5 years ago

    The issue mentions time from reporting to this new GH issue to be just 4 hours. So it has to be less than that.

  • godelski 5 years ago

    It got approved fairly quickly. It was a false positive (see my link in main thread) with their spam detection (DuckSoft copy pasted the post so flagged as "type too fast").

    • realducksoft 5 years ago

      -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA256

      I am DuckSoft on GitHub and I prove my identity by GPG signing this message.

      I am not typing too fast, nor pasting all my stuffs into the comment area. I just put a link to the GitHub issue. The discussion board even automatically extracted title and abstract for me, where I thought, 'pretty cool huh'.

      Then I got banned. -----BEGIN PGP SIGNATURE-----

      iQEzBAEBCAAdFiEE2H0QtOEy/6QN7CMrejqfpuT9So0FAmAdx9IACgkQejqfpuT9 So1KrQf+M8VzJBj4FgNZB/KZZ/suxNBF9DEkcfR66mwf/YzGGK9Gf2QDBqNoHUJs jJGvRai4ygqtZE3oX3GZmkjRT8LzEiNgmOM+B39SehL7F9rhMGz4lHMrRV5ZnSxp w5ALHSs3L6Gyg5hwNOQV73+STg9Vc2TsWSCS+Xr+BuNYbbLwiKWV9M1pxOynaWx0 J5+JswXaZkEONcKyGKbwc2FrgH1EXRgv+TipHucAkz+1HVMRd9NZ5W38vjASWEwO dEXXmCWyH8rQ69rLU+M7lXiKY0IBVrvVirzC97TpS22A74FDTdEG4xpGHSzPaDFp 3DRJvymGOlHDqhlotR8ox1ndFPzR9A== =ib+f -----END PGP SIGNATURE-----

meibo 5 years ago

My experience with the Signal team in issues and their community has been about the same.

They're generally dismissive, especially so about design problems that cause a big amount of bugs that are strewn throughout Signal, like their handling of message timestamps/sync and dismissal of the IME concerns.

exabrial 5 years ago

Man I feel bad for the signal devs. Keep fighting the good fight, and thank you!

bawolff 5 years ago

Wow this guy seems like he's an asshole.

Although i do wonder why signal didn't reuse the work tor did with obfuscated bridges.

godelski 5 years ago

For people curious, it looks like they are discussing it in the community but only the mod is involved and I don't think they (Herohtar) are an employee. While the block was unintentional this doesn't seem like the right way to handle the situation and Moxie should have been clearer and that would have avoided the issue. It is easy to interpret the response given as being brushed off.

TLDR: DuckSoft got autobanned because they typed too fast (copy pasted their post into the forum) and had a false positive from spam detection. No comment yet from devs on issue.

Edit: removed my personal preference that seems to be being confused as saying Signal should use GitHub. Signal can do what they want, that's fine. But be clear.

https://community.signalusers.org/t/tls-proxy-server-unable-...

  • kelnos 5 years ago

    > Also, honestly, why not use GitHub issues. I find issues useful.

    Some people would prefer to use their own issue tracker or discussion forum. I don't see that as strange at all, given that with GH issues you don't have full control over the data or experience.

    • erikbye 5 years ago

      You could mirror, making your project accessible while not risking data loss.

  • bawolff 5 years ago

    People who run the project get to pick the bug tracker. Its really next level entitlement to not let maintainers choose the place they track bugs.

    • godelski 5 years ago

      That's fine. I'm not sure why that means they shouldn't be more clear. The GH comment was a preference. The problem here is that the message Signal sent sounds generic and can easily be interpreted as brushing the person off. They clearly interpreted it that way.

      • bawolff 5 years ago

        Why shouldn't people who post in the wrong place get a generic message?

        Afaict, its not like they are reporting a drop everything issue. Did anyone actually think that a determined adversary would not be able to distinguish between one of their proxies and a generic TLS server, given sufficient resources?

        • godelski 5 years ago

          > Why shouldn't people who post in the wrong place get a generic message?

          Because people aren't clairvoyant and it is reasonable to assume that people that post stuff on GitHub accept issues, just like the main Signal account does. The generic message, without original clarity in how to note an issue, is easy to interpret as being ignored. Especially as they had a false positive ban being flagged as spam. I understand Signal's pov and I understand DuckSoft's. I think Signal has the higher responsibility in clarity than some random person trying to note a flaw they found.

          Look, you can like Signal and still think they made the wrong move. I've used it every day for years and converted the majority of my friends. No one expects Signal to be perfect.

          • bawolff 5 years ago

            > Because people aren't clairvoyant

            Luckily they have a generic message to read. No clairvoyancey required.

            I'm not defending signal here because i just like signal. Almost any other open source project would have responded the same way. Many would probably have been less polite about it. If you send a personalized note to everyone who reports a bug incorretly, you won't have any time to actually fix bugs.

            Edit: i agree though that the false positive spam ban is a bit unfortunate. Shit happens sometimes. I maintain the generic message was totally reasonable and they should not do anything different in that regard if they could do it over again. The spam ban however was understandable but obviously should not have happened.

      • kreetx 5 years ago

        The GH issue poster was overreacting in multiple steps: first by getting the generic reply, then thinking that making issues was disabled to "get rid of him" (or what not). He/she should get some sleep.

    • erikbye 5 years ago

      It is their choice, but everyone knows a project not on GH gets less visibility and fewer reports and contributors because of that decision. I know some projects do it to minimize public interaction, they feel raising the barrier improves the quality ratio of issues.

inshadows 5 years ago

What is that PoC in the issue doing? They check e which is not set after first line in the function:

    func send(addr, server, sni string) int {
     c0, e := net.Dial("tcp", addr)
     if e != nil {
      log.Fatal(e)
     }
    
     c1 := tls.Client(c0, &tls.Config{
      ServerName:         server,
      InsecureSkipVerify: true,
     })
    
     c2 := tls.Client(c1, &tls.Config{
      ServerName:         sni,
      InsecureSkipVerify: true,
     })
     c2.SetDeadline(time.Now().Add(2 * time.Minute))
     s := fmt.Sprintf("GET / HTTP/1.1\r\nHost: %s\r\nUser-Agent: curl/7.68.0\r\n\r\n", sni)
     //b := make([]byte, 4096)
     l, _ := c2.Write([]byte(s))
     log.Println(l)
     if e != nil {
      return 0
     }
     log.Printf("%s->%s->%s\n", addr, server, sni)
     return l
    }
LinuxBender 5 years ago

I still think they should have used layer 4 CDN endpoints that use generic names on several of the CDN providers that support L4. It would be endless whack-a-mole to block that. Not perfect, but not perfect is probably useful enough for those impacted by blocks as it would mean periodic latency vs. being locked out entirely. Moxie, if you are reading this, to mitigate some of the probing or fingerprinting, consider borrowing some of the code from sslh [1] and I acknowledge this would be an endless arms race.

[1] - https://github.com/yrutschle/sslh

kevincox 5 years ago

This seems like a relatively easy issue to fix. If they included a "password" to the proxy (and stuck it on the share URL) then the proxy can reject requests unless the password authentication passed. This way it would look like any other HTTPS site that was password protected. Only if you know the password would you get proof that the other end was connected to Signal.

realducksoft 5 years ago

Things has been updated. Signal banned @studentmain and @ducksoft from their GitHub organzation.

Keyboard Shortcuts

j
Next item
k
Previous item
o / Enter
Open selected item
?
Show this help
Esc
Close modal / clear selection