-
Notifications
You must be signed in to change notification settings - Fork 20
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
More secure loaner process #41
Comments
Thoughts:
I could imagine that:
If we do this, we should probably agree on how we formalize such conventions and document conventions like this, example of such conventions could be:
Note: the convention for live.log isn't perfect as we would want to rename the livelog artifact when supporting private log... So how would make a convention that works in such cases? |
I'm worried that more subtle things will happen, too. For example, it would be easy to build a pulse listener and login automatically and immediately to every loaner to add a keylogger or trojan the compiler. So not only should people not upload SSH keys, but they should not type anything secret, nor trust any of the binaries that come out of the loaner. Your suggestions to use scopes would ameliorate this, but I'm not sure how we would pick the scopes for Gecko: we would like an L1 user to be able to generate a loaner from an L3 task, but an L3 user probably wants a more limited set of shared users. If we leave loaners open and rely on them being difficult to find, I think we should warn about that at loaner startup. It could be phrased in a positive fashion like "The loaner requires no password to authenticate. You can share your loaner by sharing this taskId. Anyone with scope can use it." |
At the moment, anyone with a link to a loaner task and permission to read the loaner artifacts can connect. Users who create a loaner task probably expect that only they can login to the loaner, and might do things like put their SSH private key on it. let's make loaners specific to the user who created them.
Proposal: when creating a loaner, create a private key and stick it in the browser's LocalStorage, with the public key included in the task definition. Then, when connecting, use the private key to sign some piece of data and send it to the worker. If the signature checks out, the worker allows access. It shouldn't be too much work to make a nice copy-pastable string for this signature to share with command-line tools.
The text was updated successfully, but these errors were encountered: