Earlier quoted context omitted.
A reason you are getting downvotes is that it’s not true that closed source software is unauditable. This is a common but untrue belief. It’s a fundamental axciom of software security that you can’t trust source, so you must diagnose the binary. Source may be helpful, but in the grand scheme of things lots of other properties are more important.
> It’s a fundamental axciom of software security that you can’t trust source, so you must diagnose the binary. What if you trust the build tool chain and can reproduce the binary from source?
Another flaw in Signal desktop app leaks chats in plaintext
191–200 of 232 posts
Re: Another flaw in Signal desktop app leaks chats in plaintext
#192Is there a native Signal client that isn’t an Electron abomination? It is clear at the point the Signal desktop people has no idea what they are doing and cannot be trusted to write a secure desktop application.
Re: Another flaw in Signal desktop app leaks chats in plaintext
#193Earlier quoted context omitted.
And we're back at "really good security is to inconvenient to use" :/
This is a rare case where things are inconvenient for nerds to use, but more convenient for ordinary people, who tend to be more comfortable doing stuff on mobile platforms than nerds are.
(as p49k alluded to, iPads help, but few professional users have them as the primary device)
Re: Another flaw in Signal desktop app leaks chats in plaintext
#194Earlier quoted context omitted.
None of this is caused because of them using a dynamic language. It's caused because the developers used a function literally called "dangerouslySetInnerHTML" that doesn't escape HTML. That's it. It's just lazy programming.
I may be wrong, but I think the Signal desktop app was written by like interns or new developers working for Signal. The Android app was written by Moxie, and I think it's the one about which Matthew Green said: After reading the code, I literally discovered a line of drool running down my face. It’s really nice. https://signal.org/
Re: Another flaw in Signal desktop app leaks chats in plaintext
#195Earlier quoted context omitted.
None of this is caused because of them using a dynamic language. It's caused because the developers used a function literally called "dangerouslySetInnerHTML" that doesn't escape HTML. That's it. It's just lazy programming.
Naive question: Are there functions analogous to `dangerouslySetInnerHTML` in non-JS GUI libraries (e.g. Qt) that will allow a similar attack?
Re: Another flaw in Signal desktop app leaks chats in plaintext
#196Earlier quoted context omitted.
As much as I'm not a fan of JavaScript, the problem is not so much the language but rather the choice of Electron and all that comes with it. Heck, even a web version or Chrome app would've successfully mitigated these attacks. Electron means you're one XSS away from remote code execution, and even worse, it makes it way harder to mitigate XSS through CSP (which Signal did utilize, but script-src 'self' can easily be…
While I agree that Electon offers a massive amount of footguns, neither Javascript nor Electon was the issue in this case. The issue was using innerHTML (or rather $.html()) with strings concatenated together from user input. Something you should never do. Could as well just call eval() directly on it, or pass the input to gcc, compile it and run the resulting binary. The Signal devs thought $.html() does some kind o…
Re: Another flaw in Signal desktop app leaks chats in plaintext
#197Earlier quoted context omitted.
>The Signal devs thought $.html() does some kind of escaping: Uhm... that's a really rookie mistake to make. Like, one of the very basics of jQuery usage. I'm not exactly sure what to think about it after seeing this commit you linked...
The worst part is that someone assumed something then removed the code that did the escaping without even doing the most basic of tests, like even in the browser just doing a quick foo.html(' alert("oh snap this is bad") ')
A mistake that seems like it could've been caught in a code review!
Re: Another flaw in Signal desktop app leaks chats in plaintext
#198Earlier quoted context omitted.
I don't know what the first iPhone to have an HSIC baseband was, but it has been awhile. I assume every iPhone anyone is really using today fits the description I gave. The iPhone 4 does. This is a really basic security design concern for mobile devices; you can assume that neither Apple nor Google (for their own Google-branded phones) ships products where a corrupted baseband can simply DMA its way into the AP. It i…
"It is a little weird to me that people on message boards assume they've outguessed the hardware security teams at both Apple and Google on one of the most obvious attack vectors for their phone designs; both companies spend huge amounts of money on this stuff." For what it's worth, that isn't the assumption people are making. The easy assumption to make is that the security teams were unable to convince product owne…
It's also not because they don't think it's 'worth the investment' or due to extra expense.
Re: Another flaw in Signal desktop app leaks chats in plaintext
#199Earlier quoted context omitted.
> don't use desktop secure messengers at all. Desktop applications are incredibly risky, far more so than iOS mobile apps are. It's risky to use an open source OS. If you are serious about security, use Android or iOS. Instead of direct ssl connection to XMPP server, it's much safer to send all your data with Google Cloud Messaging. /s Desktop computers are currently the most open sourced, least opaque, least spyware…
I'm pretty sure Signal doesn't send all your data through GCM. Edit: https://support.signal.org/hc/en-us/articles/217524107
Re: Another flaw in Signal desktop app leaks chats in plaintext
#200Earlier quoted context omitted.
Naive question: Are there functions analogous to `dangerouslySetInnerHTML` in non-JS GUI libraries (e.g. Qt) that will allow a similar attack?
I mean, in C++ "=" could be called "dangerouslySetAribtraryMemoryLocation" and it would be just as accurate. In native code, even trivial operations like concatenating two strings or setting a variable can cause arbitrary code to execute.