Hello Eric, We're reaching out privately first on what we think could be classified as a security issue in Unicorn. Since there may be other similarly impacted users, this is out of an abundance of caution before sending it to the public Unicorn mailing list. The issue at hand is that the environment sharing and reuse between requests in Unicorn, combined with other non thread safe code, resulted in a security vulnerability where a very small number of user sessions tracked through cookies got misrouted. For this reason, we logged everyone out of GitHub, see also https://github.blog/2021-03-08-github-security-update-a-bug-related-to-handling-of-authenticated-sessions/. The unsafe background thread code we had ended up triggering an exception at rare times and the exception tracking logic was using a deferred block executed through a Ruby Proc to gather information, including things from the request at the time the logic started. That thread captured something from the cookie jar among other things, and the following code in Rack memoized that into the (shared) environment. From https://github.com/rack/rack/blob/2.1.4/lib/rack/request.rb#L219-L229 def cookies hash = fetch_header(RACK_REQUEST_COOKIE_HASH) do |k| set_header(k, {}) end string = get_header HTTP_COOKIE return hash if string == get_header(RACK_REQUEST_COOKIE_STRING) hash.replace Utils.parse_cookies_header string set_header(RACK_REQUEST_COOKIE_STRING, string) hash end Because of the environment sharing, the memoization ended up overriding what would be memoized (with the RACK_REQUEST_COOKIE_STRING key) for the new request and because a specific session cookie was bumped then with a new timeout on each request, the wrong session cookie was serialized. While we understand and appreciate that Unicorn is not a multi-threaded web server, it feels like using the same `Hash` object between requests introduces the chance that a dependency like an external gem may use threads and thus potentially leak information between requests. For the sake of transparency to our users, we plan on publishing a public post next week on how this was part of the larger series of bugs that had a security impact at GitHub. We've also attached a suggested patch that removes the environment sharing, which is what we're running right now to reduce the risk of this ever happening again. We hope you're open to collaborating on a fix prior to any public detailed disclosure of how this request environment sharing could lead to security issues, if you feel that is desired. I’ve added John & Kevin here on the CC since they’ve also worked on this and that way we have some better timezone spread on our side if needed. Cheers, Dirkjan Bussink