{"action":"created","issue":{"url":"https://api.github.com/repos/nodejs/LTS/issues/74","repository_url":"https://api.github.com/repos/nodejs/LTS","labels_url":"https://api.github.com/repos/nodejs/LTS/issues/74/labels{/name}","comments_url":"https://api.github.com/repos/nodejs/LTS/issues/74/comments","events_url":"https://api.github.com/repos/nodejs/LTS/issues/74/events","html_url":"https://github.com/nodejs/LTS/issues/74","id":131085512,"number":74,"title":"LTS - Breaking security issues","user":{"login":"mhdawson","id":9373002,"avatar_url":"https://avatars.githubusercontent.com/u/9373002?v=3","gravatar_id":"","url":"https://api.github.com/users/mhdawson","html_url":"https://github.com/mhdawson","followers_url":"https://api.github.com/users/mhdawson/followers","following_url":"https://api.github.com/users/mhdawson/following{/other_user}","gists_url":"https://api.github.com/users/mhdawson/gists{/gist_id}","starred_url":"https://api.github.com/users/mhdawson/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mhdawson/subscriptions","organizations_url":"https://api.github.com/users/mhdawson/orgs","repos_url":"https://api.github.com/users/mhdawson/repos","events_url":"https://api.github.com/users/mhdawson/events{/privacy}","received_events_url":"https://api.github.com/users/mhdawson/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":3,"created_at":"2016-02-03T16:53:10Z","updated_at":"2016-02-03T23:10:31Z","closed_at":null,"body":"More than a few times we've run into security issues which are \"breaking\" but are important enough that they need to be back ported to LTS.  The purpose of this issue is to discuss/agree on how we will handle these cases so that we don't need to discuss/decide for each one as they come up.\r\n\r\nThe starting proposal is (based on discussion with @jasnell) :\r\n\r\n* Secure by default.  Even though we try to avoid breaking changes in LTS, it is important that Node is secure by default so when we back port these changes they will be enabled by default.\r\n\r\n* When possible we will provide a command line flag to revert a breaking change that has been back ported.  \"possible\" will depend on where the changes are being made (for example in a dependency) and the performance impact of doing the check for the revert.\r\n\r\n* The flags to allow reversion will not be included in master or stable, and as such at each major release boundary the list of reverts for LTS will be reset to none.  This avoids building an ever growing set of possible reversions and ensures at least at major release boundaries users move to the best security stance.\r\n\r\n\r\nSeparately on the implementation side to simplify adding the revert flags we could add a new flag\r\n\r\n  --revert=\r\n\r\nwhich takes a list of comma separated names, each name being for a specific back port.  We should be able to come up with an implementation were we have something like an array which defines these names and the bit in integer that represents that back port.  Adding a new revert would then be simply adding the new name to that array and existing code would now add support for that name in the existing --revert= command line option and the existing code would set the bit when the name was present in the list provided.  When back porting the main additional work would then be to add the check of the bit in the existing integer.\r\n\r\n\r\n"},"comment":{"url":"https://api.github.com/repos/nodejs/LTS/issues/comments/179522443","html_url":"https://github.com/nodejs/LTS/issues/74#issuecomment-179522443","issue_url":"https://api.github.com/repos/nodejs/LTS/issues/74","id":179522443,"user":{"login":"Fishrock123","id":1093990,"avatar_url":"https://avatars.githubusercontent.com/u/1093990?v=3","gravatar_id":"","url":"https://api.github.com/users/Fishrock123","html_url":"https://github.com/Fishrock123","followers_url":"https://api.github.com/users/Fishrock123/followers","following_url":"https://api.github.com/users/Fishrock123/following{/other_user}","gists_url":"https://api.github.com/users/Fishrock123/gists{/gist_id}","starred_url":"https://api.github.com/users/Fishrock123/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Fishrock123/subscriptions","organizations_url":"https://api.github.com/users/Fishrock123/orgs","repos_url":"https://api.github.com/users/Fishrock123/repos","events_url":"https://api.github.com/users/Fishrock123/events{/privacy}","received_events_url":"https://api.github.com/users/Fishrock123/received_events","type":"User","site_admin":false},"created_at":"2016-02-03T23:10:31Z","updated_at":"2016-02-03T23:10:31Z","body":"Is there a reason we'd only have this flag in LTS?\r\n\r\nIt seems to be, the basic functionality should be landed in `master` and then used where necessary. I suspect it will also be useful to have this in Stable branches in case there are breaking security changes across the board."}}