Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Direct Sockets API #548

Closed
1 task done
ewilligers opened this issue Aug 19, 2020 · 5 comments
Closed
1 task done

Direct Sockets API #548

ewilligers opened this issue Aug 19, 2020 · 5 comments
Assignees
Labels
Resolution: timed out The TAG has requesed additional information but has not received it Review type: CG early review An early review of general direction from a Community Group

Comments

@ewilligers
Copy link

ewilligers commented Aug 19, 2020

Saluton TAG!

I'm requesting a TAG review of Direct Sockets API (renamed from Raw Sockets API).

The API's motivation is to support creating a web app that talks to servers and devices that have their own protocols incompatible with what’s available on the web. The web app will be able to talk to a legacy system over TCP or UDP, without requiring users to change or replace that system.

Further details:

  • I have reviewed the TAG's API Design Principles
  • The group where the incubation/design work on this is being done (or is intended to be done in the future): WICG
  • The group where standardization of this work is intended to be done: unknown
  • Existing major pieces of multi-stakeholder review or discussion of this design: github reviews
  • Major unresolved issues with or opposition to this design: This API is unavoidably controversial in providing network access.
  • This work is being funded by: Google Inc.

We'd prefer the TAG provide feedback as:
🐛 open issues in our GitHub repo for each point of feedback

@ewilligers ewilligers added Progress: untriaged Review type: CG early review An early review of general direction from a Community Group labels Aug 19, 2020
@marcoscaceres
Copy link
Contributor

(just clarifying that I'm not an editor, just an independent interested party)

@hadleybeeman hadleybeeman self-assigned this Aug 19, 2020
@hober hober self-assigned this Aug 24, 2020
@plinss plinss self-assigned this Aug 24, 2020
@plinss plinss added this to the 2020-08-31-week milestone Aug 24, 2020
@lknik
Copy link
Member

lknik commented Sep 1, 2020

This one looks as if having rather exciting security/privacy properties.

@plinss
Copy link
Member

plinss commented Sep 23, 2020

Reviewed at our "Cork" virtual F2F, by myself, @hadleybeeman, @atanassov and @ylafon.

We have strong concerns about this API and all the associated risks to users.

While we accept the use cases, it's unclear that the proposed mitigations would be sufficient by any reasonable measure. It's extremely difficult to explain to an average user what the associated risks are in a way they can understand without requiring them to have a strong foundation in low-level internet networking and all the associated attack vectors.

The user needs for protection from abuse have to be put before the author needs for having these capabilities in the browser.

A better approach would be to expose higher-level APIs encompassing the real user needs, e.g. in order to make a web mail client that can talk directly to an IMAP server, rather than exposing a raw socket, we could have IMAP/SMTP APIs that provide the appropriate domain-specific user protections. Similarly we could have an IRC API, expose remote desktop as a media stream, etc.

We expect these APIs would still require user permissions, but since the capabilities are much more narrow, the appropriate explanation can be given to the user, e.g. "allow this web page to access your email? / send email on your behalf? / connect to the desktop of this computer?"

We also understand that a low-level socket API would enable these higher-level APIs to be polyfilled, but that could be achieved by gating the low-level APIs behind a "Dangerous-Do-Not-Use-Developer-Only" switch that could be buried 5 levels deep in UA menus rather than exposed directly to any user by a permission prompt.

@plinss plinss added Progress: pending external feedback The TAG is waiting on response to comments/questions asked by the TAG during the review and removed Progress: in progress labels Sep 23, 2020
@plinss plinss removed this from the 2020-09-21-F2F-Cork milestone Oct 14, 2020
@plinss
Copy link
Member

plinss commented Sep 13, 2021

@hober and I took another look at this today in our F2F and it seems we're still waiting on updates, here or in WICG/direct-sockets#1. We're going to close this; please let us know when you're ready for us to take another look and we'll reopen it.

@plinss plinss closed this as completed Sep 13, 2021
@torgo torgo added Resolution: timed out The TAG has requesed additional information but has not received it and removed Progress: pending external feedback The TAG is waiting on response to comments/questions asked by the TAG during the review labels Sep 17, 2021
@ewilligers ewilligers changed the title Raw Sockets API Direct Sockets API Dec 22, 2021
@robertsdotpm
Copy link

@plinss

Disagree. "This web page is requesting access to your internal network. If you don't trust this web page you may decline. [accept] [decline]." Seems fine to me. Social engineering will always be a part of cyber attacks so I think that falls outside of our scope. It's also not feasible to have protocol-level APIs for every possible protocol in the browser (past and future.) That greatly increases attack surface more than adding a solid socket design, IMO.

@reillyeon reillyeon mentioned this issue May 6, 2023
1 task
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Resolution: timed out The TAG has requesed additional information but has not received it Review type: CG early review An early review of general direction from a Community Group
Projects
None yet
Development

No branches or pull requests

8 participants