{"action":"created","issue":{"url":"https://api.github.com/repos/sparkle-project/Sparkle/issues/363","labels_url":"https://api.github.com/repos/sparkle-project/Sparkle/issues/363/labels{/name}","comments_url":"https://api.github.com/repos/sparkle-project/Sparkle/issues/363/comments","events_url":"https://api.github.com/repos/sparkle-project/Sparkle/issues/363/events","html_url":"https://github.com/sparkle-project/Sparkle/issues/363","id":36945601,"number":363,"title":"Secure architecture for updating in a sandboxed environment","user":{"login":"pornel","id":72159,"avatar_url":"https://avatars.githubusercontent.com/u/72159?v=3","gravatar_id":"","url":"https://api.github.com/users/pornel","html_url":"https://github.com/pornel","followers_url":"https://api.github.com/users/pornel/followers","following_url":"https://api.github.com/users/pornel/following{/other_user}","gists_url":"https://api.github.com/users/pornel/gists{/gist_id}","starred_url":"https://api.github.com/users/pornel/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pornel/subscriptions","organizations_url":"https://api.github.com/users/pornel/orgs","repos_url":"https://api.github.com/users/pornel/repos","events_url":"https://api.github.com/users/pornel/events{/privacy}","received_events_url":"https://api.github.com/users/pornel/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":{"url":"https://api.github.com/repos/sparkle-project/Sparkle/milestones/2","html_url":"https://github.com/sparkle-project/Sparkle/milestones/2.0","labels_url":"https://api.github.com/repos/sparkle-project/Sparkle/milestones/2/labels","id":935983,"number":2,"title":"2.0","description":null,"creator":{"login":"pornel","id":72159,"avatar_url":"https://avatars.githubusercontent.com/u/72159?v=3","gravatar_id":"","url":"https://api.github.com/users/pornel","html_url":"https://github.com/pornel","followers_url":"https://api.github.com/users/pornel/followers","following_url":"https://api.github.com/users/pornel/following{/other_user}","gists_url":"https://api.github.com/users/pornel/gists{/gist_id}","starred_url":"https://api.github.com/users/pornel/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pornel/subscriptions","organizations_url":"https://api.github.com/users/pornel/orgs","repos_url":"https://api.github.com/users/pornel/repos","events_url":"https://api.github.com/users/pornel/events{/privacy}","received_events_url":"https://api.github.com/users/pornel/received_events","type":"User","site_admin":false},"open_issues":2,"closed_issues":0,"state":"open","created_at":"2015-01-14T23:13:39Z","updated_at":"2015-07-27T18:35:03Z","due_on":null,"closed_at":null},"comments":112,"created_at":"2014-07-02T01:33:07Z","updated_at":"2015-12-04T18:16:14Z","closed_at":null,"body":"For some Sparkle users sandboxing is very high on priority list.\r\n\r\nThere has been one branch with a sandbox support, but Andy has [rejected it](https://github.com/sparkle-project/Sparkle/pull/165#issuecomment-13295505) due to unresolved security issues.\r\n\r\nSo I'm opening an issue here to start a discussion how we can support sandboxed applications in Sparkle while keeping the sandbox as tight as possible.\r\n\r\nI think minimal requirements are:\r\n\r\n* The XPC helper *must not* trust the host app at all, so it *must* verify integrity of downloaded update and unpack it by itself. The current approach of telling XPC helper \"hey, install this path, I've unpacked it and checked it's ok\" can't be secure.\r\n* the XPC can't trust the host to supply a valid DSA key (a compromised host could give a valid and signed update, but signed by the wrong person). The XPC helper *must* find the trusted DSA key by itself (i.e. find the app's path and read Info.plist from there) and refuse to update any other path. \r\n* Apple Code Signing verification code needs to be refactored (or not supported in sandboxed environment), because the host app checks against its own signature, but the host app is not supposed to be doing the checking.\r\n\r\n"},"comment":{"url":"https://api.github.com/repos/sparkle-project/Sparkle/issues/comments/162039317","html_url":"https://github.com/sparkle-project/Sparkle/issues/363#issuecomment-162039317","issue_url":"https://api.github.com/repos/sparkle-project/Sparkle/issues/363","id":162039317,"user":{"login":"danielfe","id":4665144,"avatar_url":"https://avatars.githubusercontent.com/u/4665144?v=3","gravatar_id":"","url":"https://api.github.com/users/danielfe","html_url":"https://github.com/danielfe","followers_url":"https://api.github.com/users/danielfe/followers","following_url":"https://api.github.com/users/danielfe/following{/other_user}","gists_url":"https://api.github.com/users/danielfe/gists{/gist_id}","starred_url":"https://api.github.com/users/danielfe/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/danielfe/subscriptions","organizations_url":"https://api.github.com/users/danielfe/orgs","repos_url":"https://api.github.com/users/danielfe/repos","events_url":"https://api.github.com/users/danielfe/events{/privacy}","received_events_url":"https://api.github.com/users/danielfe/received_events","type":"User","site_admin":false},"created_at":"2015-12-04T18:16:14Z","updated_at":"2015-12-04T18:16:14Z","body":"I also had trouble. Please report back if you figure it out! \n\n> On Dec 4, 2015, at 1:25 AM, SweetPPro <notifications@github.com> wrote:\n> \n> its strange, cause i have an older version of the xpc branch working in a different app within the sandbox.I must have some build flags set somewhere to allow it to work. If I can't get the newest version working, ill just roll back to the working framework.\n> \n> —\n> Reply to this email directly or view it on GitHub <https://github.com/sparkle-project/Sparkle/issues/363#issuecomment-161917949>.\n> \n\n"}}