Skip to content

release v1.3.1: security dependency upgrades - #785

Merged
syedsajjadkazmii merged 6 commits into
ulmo/rwaqfrom
ulmo/rwaq-dev
Oct 26, 2026
Merged

syedsajjadkazmii merged 6 commits into
ulmo/rwaqfrom
ulmo/rwaq-dev

Conversation

@syedsajjadkazmii

@syedsajjadkazmii syedsajjadkazmii commented Oct 26, 2026 •

Copy link
Copy Markdown

Summary

Brings the six security dependency fixes from ulmo/rwaq-dev into the prod line ulmo/rwaq. Earlier releases (#770, #772) used the same dev-to-prod PR. Merge with a merge commit, not squash, then tag the ulmo/rwaq tip rwaq_release_v1.3.1 for the prod pin in rwaq-configurations#72.

PR Change Advisory
#779 pillow 12.0.0 to 13.0.0 critical, code execution from a crafted image
#780 pyjwt 2.10.1 to 2.15.1 token verification, one critical
#781 openedx-forum 0.4.1 to 0.4.1.post1 critical, forum API open to anonymous users
#782 certifi 2026.10.19, urllib3 2.8.0, djangorestframework 3.18.2 compromised CA bundle, memory and TLS issues, CPU exhaustion
#783 oauthlib 3.3.1 to 4.0.0 revoke endpoint JSONP injection, PKCE timing
#784 social-auth-core 5.0.2, cryptography 46.0.7, requests 2.34.2, cryptography<46.0.0 cap removed session fixation, login CSRF

Ticket: EDLYCSRWAQ-354.

What is in this diff

Before these fixes ulmo/rwaq and ulmo/rwaq-dev had identical file content (only the history differed). The comparison now shows 10 files changed: the requirement files (requirements/edx/{base,development,testing,doc}.txt, requirements/edx-sandbox/base.txt, scripts/user_retirement/requirements/base.txt), requirements/constraints.txt, and three test files with updated expectations (openedx/core/lib/tests/test_jwt.py, openedx/core/djangoapps/oauth_dispatch/tests/test_views.py, openedx/core/djangoapps/user_api/accounts/tests/test_views.py). No code outside tests changes.

Known test failures

12 third_party_auth provider pipeline tests (Azure AD, Google, LinkedIn, Twitter) fail on social-auth-core 5.x. They are left failing on purpose. Rwaq prod has no social provider configured (checked read-only on 2026-10-26). Upstream has the same failures (openedx#38841).

Verification

Each PR was tested locally and described in its own PR. The dev line is deployed to stage first from rwaq-configurations#71 (rwaq_release_v1.3.1-rc1, same content as this PR) and checked with the stage checklist (S1 to S17) before prod.

Stage first

The same content is checked on stage from rwaq-configurations#71, including the Rwaq specific cases W1 to W4 (WordPress purchase with a test card, enrollment API, Orders and Payments CSV, program bulk enroll). Merge this after stage passes.

Release

After merge: tag rwaq_release_v1.3.1 on the ulmo/rwaq tip, then take rwaq-configurations#72 out of draft. No migrations.

…779)

Pillow 12.x is affected by critical advisories (for example GHSA-v9pv-5gc8-w2m6, GHSA-332p-7hrc-92wf, GHSA-5x8w-8jj5-q52h) that allow code execution from a crafted image such as a profile picture. 13.0.0 is the first patched release.
…780)

PyJWT 2.10.1 is affected by several advisories fixed between 2.14.0 and 2.15.0, including GHSA-ffc3-869f-jxw9 (critical, key-format check bypass in the HS/asymmetric confusion guard), GHSA-pxh4-856f-4h89 and GHSA-9j54-fg26-wv3r (HS256 accepted with an empty JWK key). 2.15.1 also accepts base64url padding that 2.15.0 rejected.

Tokens with extra characters now fail with DecodeError instead of InvalidSignatureError, so the two malformed token tests expect DecodeError. The only production caller, check_exam_access in the courseware views, catches every exception.
…d forum API (#781)

Security release of the forum app for GHSA-c6fp-f54c-6cv4 (critical): the forum HTTP API under /forum/api/ was open to anonymous users, allowing thread reads and deletes and username replacement. It is no longer routed unless FORUM_ENABLE_HTTP_API is set, and requires a staff caller when it is. Same change as upstream release/ulmo commit 9b58d04, including the relaxed cap in constraints.txt.
…ty advisories (#782)

certifi 2026.10.19 removes emSign root CAs with compromised intermediate keys (GHSA-6q48-6c7w-9gw2). urllib3 2.8.0 fixes an unbounded chunk buffer, an infinite loop in chunked deflate streaming and HTTPS proxy TLS settings being ignored (GHSA-vxq7-64xx-v4gw, GHSA-gh4c-6fx4-qh6g, GHSA-8988-9cw3-xx77). djangorestframework 3.18.2 fixes request content negotiation burning about 19 seconds of CPU, JSONParser applying an attacker-named codec, and TokenProxy.delete() revoking nothing (GHSA-33wh-fxxf-88vv, GHSA-3547-9m27-7rxg, GHSA-xw6w-gcfp-cf8m).

DRF 3.18 reports errors for items in a list as a dict keyed by index instead of a list, so three expectations in user_api account tests change from [{...}] to {0: {...}}.
…CE timing (#783)

oauthlib 4.0.0 fixes unsafe JSONP callback injection in the token revocation endpoint (GHSA-hj66-6f7g-4r5v) and a timing attack in the PKCE code_verifier comparison (GHSA-xpv3-w29h-x7cv). It removes JSONP from the revocation endpoint and validates grant request parameters before authenticating the client, so a password grant request with no client credentials and no username or password now gets 400 instead of 401. The matching oauth_dispatch test expects 400.
…equests 2.34.2 (#784)

* fix: upgrade social-auth-core to 5.0.2 (breaks third-party login pipeline, do not merge)

social-auth-core 5.0.2 fixes session fixation and login CSRF issues but requires cryptography>=46.0.7 and requests>=2.34, so those are bumped and the cryptography<46.0.0 cap is removed (snowflake-connector-python 4.0.0 is installed). The upgrade makes 12 third_party_auth pipeline tests fail because partial pipeline resume now redirects to / instead of the complete URL. Same as upstream openedx#38841.

* chore: sync requirements annotations with the compiled output

The Consistent Python dependencies check recompiles the requirement files. With social-auth-core 5.0.2 depending on cryptography and the cryptography cap removed from constraints.txt, social-auth-core is added to the cryptography via list and the constraints.txt via entry is dropped from the sandbox and user retirement files. No versions change.

@Faraz32123 Faraz32123 left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM. Consolidation of #779–#784. The two additional files (edx-sandbox and user_retirement) are comment-only cleanups removing the now-gone cryptography constraint annotation; versions are unchanged.

@syedsajjadkazmii
syedsajjadkazmii merged commit 3629868 into ulmo/rwaq Oct 26, 2026
25 of 49 checks passed
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.

2 participants