Skip to content

security: migrate Redis session serialization from pickle to standard json - #4570

Open
james7132 wants to merge 47 commits into
magfest:mainfrom
TouhouFest:feat/json-redis-session
Open

security: migrate Redis session serialization from pickle to standard json#4570
james7132 wants to merge 47 commits into
magfest:mainfrom
TouhouFest:feat/json-redis-session

Conversation

@james7132

Copy link
Copy Markdown
Contributor

pickle is essentially serialized Python bytecode, and can be used as an arbitrary code execution (ACE) vector. While everything touching Redis is controlled by Ubersystem and the risk of remote code, it's ideal if pickle was replaced with a more standard serialization format to minimize that risk.

This PR changes pickle out for json. This cannot be deployed to an existing Ubersystem instance without breaking existing user sessions.

kitsuta and others added 30 commits May 2, 2025 19:38
Rolling back a change from MFF that breaks our existing servers.
Rename emergency procedures for West/Stock
Fix shifts item on volunteer checklist (West and Stock)
This helps us display extra add-ons in plugins.
This is what is need to make the printable schedule for MAGStock. Also fixes a long-standing bug in the XML schedule file where the start time wouldn't print.
This was also affecting all other automated receipt changes... yikes.
I realized that the last change would prevent attendees from saving their own forms, AND that admins can override attendee staff status during at-con mode anyway, so we're taking it out.
Using multi-platform docker builds
There was a bug where, even if a group didn't have Rock Island enabled in the system config, the server would tell them they needed to select whether or not they wanted a Rock Island Meet N Greet. This fixse that and also fixes a couple minor display issues with other steps on the band checklist.
Group leaders could be in a phantom state where they weren't shown as leaders, and if you moved someone out of a group they could still be the leader. This meant that, if you moved the only badge in a group to another group and then deleted the group, the badge would also get deleted.

This commit is also for our older servers, so lacks an alpine integration -- that'll be in the next commit.
There's a breaking change that I Do Not Want To Deal With right now
We were asserting that no email were registered twice, but... that shouldn't actually do anything bad, and in fact should let us override emails in event plugins. So it's gone now.
Fixes an infinite recursion error in presave adjustments (whoops)
Requested via Slack. We won't need to bring this into the main plugin because of other changes we made for Panels.
I missed that all PanelAppEmail fixtures were excluding guests, and not just the one email I saw doing it separately.
We were still displaying panel events with 30-minute increments, leading to emails claiming that panels were 30+ hours long.
Somehow, we did not have this??
@james7132
james7132 force-pushed the feat/json-redis-session branch from 04ebc38 to 1773b7c Compare July 20, 2026 04:14
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants