6 ms·
Imagine if every webpage (JavaScript) could open sockets to any location and port - sounds like a significant security issue.
by QasimK 9y ago
Imagine if every webpage (JavaScript) could open sockets to any location and port - sounds like a significant security issue.
- misterbowfinger 9y agoI just don't get how that's different than anything that's not a webapp
- slrz 9y agoYou probably don't run arbitrary untrusted applications on your computer but you execute arbitrary untrusted Javascript all day when visiting web sites. To make this seemingly crazy thing work at all, some restrictions have to be imposed on that untrusted JS code.
- banachtarski 9y agoThey essentially can via the WebRTC api, albeit in a more cumbersome way. There's nothing inherently insecure about it and the onus rests on the serving party and the browser itself to ensure no foul play is happening.
- lmz 9y agoDoesn't WebRTC have a handshake protocol to ensure that the other end expects the WebRTC media stream?
- banachtarski 9y agoIf you allow a browser to open sockets to random places, it's the exact same principle! The onus is on the listener to ensure that the people communicating respect the agreed upon protocol.
- tokenizerrr 9y agoThen every browser could be used to send spam. It would be horrible. Imagine that every person who visits a compromised page immediately started sending spam emails over smtp. Or spam irc messages.
- roblabla 9y agoFlash could do that, and yet I've never heard of it as a problem.
- jhgg 9y agoGenerally is not a problem, as Flash needs to check a file called "crossdomain.xml" that is served from the destination server, which specifies how Flash can communicate with it. http://www.adobe.com/devnet/articles/crossdomain_policy_file_spec.html http://www.adobe.com/devnet/articles/crossdomain_policy_file...
- Paul-ish 9y agoWebRTC uses DTLS, not TLS, so I don't think it would be useful for determining TLS compatibility.
- banachtarski 9y agoYes I'm aware (WebRTC actually uses DTLS, SCTP, RTP, RTCP, ICE, STUN, etc depending on what it's doing). My point is about the objection against being able to "open sockets" in the post I'm responding to...
- tialaramex 9y agoBeing able to "open a socket" kind of implies you actually get the socket, not just "Oh, if the far end negotiates the protocol we've pre-agreed then you can also send bytes over it". Web sockets "open a socket" in the sense WebRTC does too, but of course that isn't what you want either. Only Flash actually has an API like BSD sockets where you can do make TCP connection and send an arbitrary protocol over it. Hence, since they want to test protocol compatibility, they used Flash. Doubtless if Flash didn't exist they would provide a handy Python program or something, and 99% of visitors would never run it.
- Franciscouzo 9y agoThe obvious solution would be to ask the user for permission before opening the socket.
- deleted 9y ago[deleted]
- Paul-ish 9y agoThis is always the proposed answer whenever someone wants to introduce X potentially insecure API. It is lazy IMO. It requires the potentially uninformed user to make a critical decision. Plus, if we introduced every insecure-but-we-prompt API proposed, the user would be inundated with prompts and it would reduce their productivity.
- MertsA 9y agoForget impacting their productivity, we've already seen what happens when you defer these questions to the user. They always hit yes or okay. It's like it's not even there, people would view mindlessly accepting prompts like that's just how you're meant to use a computer.
- ascorbic 9y agoMore important than reducing productivity is the problem that prompt-overload conditions people to just blindly click accept.
- dom96 9y agoAnd yet Flash allows this and it hasn't been a problem for years?
- kbuck 9y agoFlash requires you to install a socket policy daemon[1] that typically listens on port 843 (which is why the MITM test requires that port 843 be open). When you request a raw socket, Flash first connects to port 843 and requests the policy file, which will tell it whether it's allowed to use raw sockets with that server. I've set one of these up before, and I'm not really a fan. [1]: http://www.adobe.com/devnet/flashplayer/articles/socket_policy_files.html http://www.adobe.com/devnet/flashplayer/articles/socket_poli...