Skip to content

[rhoai-2.25] fix(deps): bump keras override to >=3.14.0 for CVE-2026-1462 - #2137

Closed
swattamw2024 wants to merge 0 commit into
red-hat-data-services:rhoai-2.25from
swattamw2024:cve-2026-1462-keras-override-fix
Closed

[rhoai-2.25] fix(deps): bump keras override to >=3.14.0 for CVE-2026-1462#2137
swattamw2024 wants to merge 0 commit into
red-hat-data-services:rhoai-2.25from
swattamw2024:cve-2026-1462-keras-override-fix

Conversation

@swattamw2024

@swattamw2024 swattamw2024 commented Apr 16, 2026

Copy link
Copy Markdown

Summary

  • Bumps keras override from ~=3.13.2 to >=3.14.0 (locks resolve to 3.15.0) to fix CVE-2026-1462 (Keras safe_mode bypass via TFSMLayer deserialization)
  • Adds keras>=3.14.0 to dependencies/cve-constraints.txt and regenerates TensorFlow pylock.toml files
  • Trackers: RHOAIENG-57858, RHOAIENG-57859

Prefer same-repo PR for merge / full CI: #2635
Build Notebooks (push): https://github.com/red-hat-data-services/notebooks/actions/runs/30372605566

Fork PR CI cannot use SUBSCRIPTION_* / AIPCC_QUAY_BOT_* / GIT_CRYPT_KEY secrets — use #2635 for validation.

Test plan

  • Confirm regenerated pylock.toml files pin keras to >=3.14.0 (3.15.0)
  • Build Notebooks (push) on same-repo branch
  • Konflux builds pass for notebook images on rhoai-2.25

@openshift-ci

openshift-ci Bot commented Apr 16, 2026

Copy link
Copy Markdown

Skipping CI for Draft Pull Request.
If you want CI signal for your change, please convert it to an actual PR.
You can still manually trigger a test run with /test all

@coderabbitai

coderabbitai Bot commented Apr 16, 2026

Copy link
Copy Markdown
📝 Walkthrough

Walkthrough

Dependency versions are updated across CVE constraints and environment-specific configuration files. Keras is upgraded from 3.13.2 to 3.14.0 and keras overrides are broadened from ~=3.13.2 to >=3.14.0. Cryptography is bumped from 46.0.5 to 46.0.7, and pytokens updated from 0.3.0 to 0.4.1 in select files, with corresponding lock file hashes refreshed.

Changes

Cohort / File(s) Summary
CVE Constraint
dependencies/cve-constraints.txt
Added new CVE-driven constraint keras>=3.14.0 with accompanying issue comments.
Keras Override Updates in pyproject.toml
jupyter/rocm/tensorflow/ubi9-python-3.12/pyproject.toml, jupyter/tensorflow/ubi9-python-3.12/pyproject.toml, runtimes/rocm-tensorflow/ubi9-python-3.12/pyproject.toml, runtimes/tensorflow/ubi9-python-3.12/pyproject.toml
Updated tool.uv.override-dependencies keras constraint from ~=3.13.2 to >=3.14.0 in all four environment configurations.
Jupyter Environment Lock Files
jupyter/rocm/tensorflow/ubi9-python-3.12/pylock.toml, jupyter/tensorflow/ubi9-python-3.12/pylock.toml
Bumped cryptography from 46.0.5 to 46.0.7, keras from 3.13.2 to 3.14.0, and pytokens from 0.3.0 to 0.4.1 with updated sdist URLs, hashes, and wheel manifests.
Runtimes Environment Lock Files
runtimes/rocm-tensorflow/ubi9-python-3.12/pylock.toml, runtimes/tensorflow/ubi9-python-3.12/pylock.toml
Updated cryptography from 46.0.5 to 46.0.7 and keras from 3.13.2 to 3.14.0 with refreshed sdist/wheel URLs and sha256 hashes.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Suggested reviewers

  • dibryant
  • daniellutz
  • jiridanek
🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Title check ✅ Passed The title clearly matches the main change: widening the Keras override to >=3.14.0 to fix CVE-2026-1462.
Description check ✅ Passed The PR body includes a clear summary, test plan, and related tracking links, covering the required template sections mostly well.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actions

Copy link
Copy Markdown

@swattamw2024 — This PR is from a fork.
The build-rhoai CI job was skipped because subscription
builds (RHEL, AIPCC) need secrets unavailable to forks.
ODH builds and code quality checks still ran.

Recommended: Push your branch to the main repo for full CI:

git remote add upstream https://github.com/red-hat-data-services/notebooks.git
git push upstream HEAD:swattamw2024/your-branch-name

Then open a new PR from that branch.

No push access? A maintainer will cherry-pick and test your changes.

See CONTRIBUTING.md for details.

@jiridanek jiridanek changed the title fix(deps): bump keras override to >=3.14.0 for CVE-2026-1462 [rhoai-2.25] fix(deps): bump keras override to >=3.14.0 for CVE-2026-1462 Apr 16, 2026
@swattamw2024
swattamw2024 force-pushed the cve-2026-1462-keras-override-fix branch 2 times, most recently from e06d9a4 to 0cebd7c Compare April 22, 2026 10:49
@swattamw2024
swattamw2024 marked this pull request as ready for review April 22, 2026 10:50
@openshift-ci
openshift-ci Bot requested review from dibryant and jiridanek April 22, 2026 10:51

@coderabbitai coderabbitai Bot 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.

Actionable comments posted: 3

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@jupyter/rocm/tensorflow/ubi9-python-3.12/pylock.toml`:
- Around line 749-800: The lockfile shows incidental transitive upgrades
(cryptography bumped to 46.0.7 and pytokens 0.4.1 with expanded wheels)
unrelated to the Keras CVE fix; either constrain these changes or explicitly
document and sync them: decide whether to pin cryptography back to "46.0.5" (and
remove pytokens 0.4.1 changes) to keep the patch minimal, or accept them by
updating all regenerated pylock.toml files consistently and add a PR
description/changelog entry listing cryptography=46.0.7 and pytokens=0.4.1 so
downstream consumers are aware. Ensure the chosen action is applied to every
pylock.toml regeneration to avoid divergence.

In `@jupyter/tensorflow/ubi9-python-3.12/pylock.toml`:
- Around line 747-800: Update the PR description to explicitly state that the
cryptography package was bumped from 46.0.5 to 46.0.7 to remediate
CVE-2026-39892 (buffer overflow affecting >=45.0.0 <46.0.7) alongside the Keras
CVE; reference the package entry "name = \"cryptography\"" and the new "version
= \"46.0.7\"" in the pylock.toml diff and add a short note that this is a
security-only change. Also check the other three lockfiles for the same
"cryptography" version change and, if present, add the same CVE note to the PR
so reviewers know the cryptography bump is intentional and security-motivated.
- Around line 4055-4100: The PR accidentally bumped the dependency "pytokens"
from 0.3.0 to 0.4.1 (see the pytokens entry showing wheels and sdist), which
introduces compiled wheels and expands ABI/supply-chain scope; confirm whether
that bump is intended and, if not, revert the pytokens change or restrict
lockfile regeneration to only upgrade the target package (e.g., regenerate the
lock with the tool flag to --upgrade-package keras) so pytokens remains at
0.3.0; if the bump is intended, add an explicit rationale and verify
compatibility across our supported Python ABIs.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: 57f95924-ed44-4dbc-95dc-ca1c4820f735

📥 Commits

Reviewing files that changed from the base of the PR and between f7e6bfb and 0cebd7c.

📒 Files selected for processing (9)
  • dependencies/cve-constraints.txt
  • jupyter/rocm/tensorflow/ubi9-python-3.12/pylock.toml
  • jupyter/rocm/tensorflow/ubi9-python-3.12/pyproject.toml
  • jupyter/tensorflow/ubi9-python-3.12/pylock.toml
  • jupyter/tensorflow/ubi9-python-3.12/pyproject.toml
  • runtimes/rocm-tensorflow/ubi9-python-3.12/pylock.toml
  • runtimes/rocm-tensorflow/ubi9-python-3.12/pyproject.toml
  • runtimes/tensorflow/ubi9-python-3.12/pylock.toml
  • runtimes/tensorflow/ubi9-python-3.12/pyproject.toml

Comment thread jupyter/rocm/tensorflow/ubi9-python-3.12/pylock.toml Outdated
Comment on lines 747 to 800
[[packages]]
name = "cryptography"
version = "46.0.5"
sdist = { url = "https://files.pythonhosted.org/packages/60/04/ee2a9e8542e4fa2773b81771ff8349ff19cdd56b7258a0cc442639052edb/cryptography-46.0.5.tar.gz", upload-time = 2026-02-10T19:18:38Z, size = 750064, hashes = { sha256 = "abace499247268e3757271b2f1e244b36b06f8515cf27c4d49468fc9eb16e93d" } }
version = "46.0.7"
sdist = { url = "https://files.pythonhosted.org/packages/47/93/ac8f3d5ff04d54bc814e961a43ae5b0b146154c89c61b47bb07557679b18/cryptography-46.0.7.tar.gz", upload-time = 2026-04-08T01:57:54Z, size = 750652, hashes = { sha256 = "e4cfd68c5f3e0bfdad0d38e023239b96a2fe84146481852dffbcca442c245aa5" } }
wheels = [
{ url = "https://files.pythonhosted.org/packages/f7/81/b0bb27f2ba931a65409c6b8a8b358a7f03c0e46eceacddff55f7c84b1f3b/cryptography-46.0.5-cp311-abi3-macosx_10_9_universal2.whl", upload-time = 2026-02-10T19:17:08Z, size = 7176289, hashes = { sha256 = "351695ada9ea9618b3500b490ad54c739860883df6c1f555e088eaf25b1bbaad" } },
{ url = "https://files.pythonhosted.org/packages/ff/9e/6b4397a3e3d15123de3b1806ef342522393d50736c13b20ec4c9ea6693a6/cryptography-46.0.5-cp311-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", upload-time = 2026-02-10T19:17:10Z, size = 4275637, hashes = { sha256 = "c18ff11e86df2e28854939acde2d003f7984f721eba450b56a200ad90eeb0e6b" } },
{ url = "https://files.pythonhosted.org/packages/63/e7/471ab61099a3920b0c77852ea3f0ea611c9702f651600397ac567848b897/cryptography-46.0.5-cp311-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", upload-time = 2026-02-10T19:17:12Z, size = 4424742, hashes = { sha256 = "4d7e3d356b8cd4ea5aff04f129d5f66ebdc7b6f8eae802b93739ed520c47c79b" } },
{ url = "https://files.pythonhosted.org/packages/37/53/a18500f270342d66bf7e4d9f091114e31e5ee9e7375a5aba2e85a91e0044/cryptography-46.0.5-cp311-abi3-manylinux_2_28_aarch64.whl", upload-time = 2026-02-10T19:17:13Z, size = 4277528, hashes = { sha256 = "50bfb6925eff619c9c023b967d5b77a54e04256c4281b0e21336a130cd7fc263" } },
{ url = "https://files.pythonhosted.org/packages/22/29/c2e812ebc38c57b40e7c583895e73c8c5adb4d1e4a0cc4c5a4fdab2b1acc/cryptography-46.0.5-cp311-abi3-manylinux_2_28_ppc64le.whl", upload-time = 2026-02-10T19:17:15Z, size = 4947993, hashes = { sha256 = "803812e111e75d1aa73690d2facc295eaefd4439be1023fefc4995eaea2af90d" } },
{ url = "https://files.pythonhosted.org/packages/6b/e7/237155ae19a9023de7e30ec64e5d99a9431a567407ac21170a046d22a5a3/cryptography-46.0.5-cp311-abi3-manylinux_2_28_x86_64.whl", upload-time = 2026-02-10T19:17:17Z, size = 4456855, hashes = { sha256 = "3ee190460e2fbe447175cda91b88b84ae8322a104fc27766ad09428754a618ed" } },
{ url = "https://files.pythonhosted.org/packages/2d/87/fc628a7ad85b81206738abbd213b07702bcbdada1dd43f72236ef3cffbb5/cryptography-46.0.5-cp311-abi3-manylinux_2_31_armv7l.whl", upload-time = 2026-02-10T19:17:18Z, size = 3984635, hashes = { sha256 = "f145bba11b878005c496e93e257c1e88f154d278d2638e6450d17e0f31e558d2" } },
{ url = "https://files.pythonhosted.org/packages/84/29/65b55622bde135aedf4565dc509d99b560ee4095e56989e815f8fd2aa910/cryptography-46.0.5-cp311-abi3-manylinux_2_34_aarch64.whl", upload-time = 2026-02-10T19:17:20Z, size = 4277038, hashes = { sha256 = "e9251e3be159d1020c4030bd2e5f84d6a43fe54b6c19c12f51cde9542a2817b2" } },
{ url = "https://files.pythonhosted.org/packages/bc/36/45e76c68d7311432741faf1fbf7fac8a196a0a735ca21f504c75d37e2558/cryptography-46.0.5-cp311-abi3-manylinux_2_34_ppc64le.whl", upload-time = 2026-02-10T19:17:21Z, size = 4912181, hashes = { sha256 = "47fb8a66058b80e509c47118ef8a75d14c455e81ac369050f20ba0d23e77fee0" } },
{ url = "https://files.pythonhosted.org/packages/6d/1a/c1ba8fead184d6e3d5afcf03d569acac5ad063f3ac9fb7258af158f7e378/cryptography-46.0.5-cp311-abi3-manylinux_2_34_x86_64.whl", upload-time = 2026-02-10T19:17:25Z, size = 4456482, hashes = { sha256 = "4c3341037c136030cb46e4b1e17b7418ea4cbd9dd207e4a6f3b2b24e0d4ac731" } },
{ url = "https://files.pythonhosted.org/packages/f9/e5/3fb22e37f66827ced3b902cf895e6a6bc1d095b5b26be26bd13c441fdf19/cryptography-46.0.5-cp311-abi3-musllinux_1_2_aarch64.whl", upload-time = 2026-02-10T19:17:26Z, size = 4405497, hashes = { sha256 = "890bcb4abd5a2d3f852196437129eb3667d62630333aacc13dfd470fad3aaa82" } },
{ url = "https://files.pythonhosted.org/packages/1a/df/9d58bb32b1121a8a2f27383fabae4d63080c7ca60b9b5c88be742be04ee7/cryptography-46.0.5-cp311-abi3-musllinux_1_2_x86_64.whl", upload-time = 2026-02-10T19:17:28Z, size = 4667819, hashes = { sha256 = "80a8d7bfdf38f87ca30a5391c0c9ce4ed2926918e017c29ddf643d0ed2778ea1" } },
{ url = "https://files.pythonhosted.org/packages/ea/ed/325d2a490c5e94038cdb0117da9397ece1f11201f425c4e9c57fe5b9f08b/cryptography-46.0.5-cp311-abi3-win32.whl", upload-time = 2026-02-10T19:17:30Z, size = 3028230, hashes = { sha256 = "60ee7e19e95104d4c03871d7d7dfb3d22ef8a9b9c6778c94e1c8fcc8365afd48" } },
{ url = "https://files.pythonhosted.org/packages/e9/5a/ac0f49e48063ab4255d9e3b79f5def51697fce1a95ea1370f03dc9db76f6/cryptography-46.0.5-cp311-abi3-win_amd64.whl", upload-time = 2026-02-10T19:17:32Z, size = 3480909, hashes = { sha256 = "38946c54b16c885c72c4f59846be9743d699eee2b69b6988e0a00a01f46a61a4" } },
{ url = "https://files.pythonhosted.org/packages/00/13/3d278bfa7a15a96b9dc22db5a12ad1e48a9eb3d40e1827ef66a5df75d0d0/cryptography-46.0.5-cp314-cp314t-macosx_10_9_universal2.whl", upload-time = 2026-02-10T19:17:33Z, size = 7119287, hashes = { sha256 = "94a76daa32eb78d61339aff7952ea819b1734b46f73646a07decb40e5b3448e2" } },
{ url = "https://files.pythonhosted.org/packages/67/c8/581a6702e14f0898a0848105cbefd20c058099e2c2d22ef4e476dfec75d7/cryptography-46.0.5-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", upload-time = 2026-02-10T19:17:35Z, size = 4265728, hashes = { sha256 = "5be7bf2fb40769e05739dd0046e7b26f9d4670badc7b032d6ce4db64dddc0678" } },
{ url = "https://files.pythonhosted.org/packages/dd/4a/ba1a65ce8fc65435e5a849558379896c957870dd64fecea97b1ad5f46a37/cryptography-46.0.5-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", upload-time = 2026-02-10T19:17:36Z, size = 4408287, hashes = { sha256 = "fe346b143ff9685e40192a4960938545c699054ba11d4f9029f94751e3f71d87" } },
{ url = "https://files.pythonhosted.org/packages/f8/67/8ffdbf7b65ed1ac224d1c2df3943553766914a8ca718747ee3871da6107e/cryptography-46.0.5-cp314-cp314t-manylinux_2_28_aarch64.whl", upload-time = 2026-02-10T19:17:38Z, size = 4270291, hashes = { sha256 = "c69fd885df7d089548a42d5ec05be26050ebcd2283d89b3d30676eb32ff87dee" } },
{ url = "https://files.pythonhosted.org/packages/f8/e5/f52377ee93bc2f2bba55a41a886fd208c15276ffbd2569f2ddc89d50e2c5/cryptography-46.0.5-cp314-cp314t-manylinux_2_28_ppc64le.whl", upload-time = 2026-02-10T19:17:40Z, size = 4927539, hashes = { sha256 = "8293f3dea7fc929ef7240796ba231413afa7b68ce38fd21da2995549f5961981" } },
{ url = "https://files.pythonhosted.org/packages/3b/02/cfe39181b02419bbbbcf3abdd16c1c5c8541f03ca8bda240debc467d5a12/cryptography-46.0.5-cp314-cp314t-manylinux_2_28_x86_64.whl", upload-time = 2026-02-10T19:17:41Z, size = 4442199, hashes = { sha256 = "1abfdb89b41c3be0365328a410baa9df3ff8a9110fb75e7b52e66803ddabc9a9" } },
{ url = "https://files.pythonhosted.org/packages/c0/96/2fcaeb4873e536cf71421a388a6c11b5bc846e986b2b069c79363dc1648e/cryptography-46.0.5-cp314-cp314t-manylinux_2_31_armv7l.whl", upload-time = 2026-02-10T19:17:43Z, size = 3960131, hashes = { sha256 = "d66e421495fdb797610a08f43b05269e0a5ea7f5e652a89bfd5a7d3c1dee3648" } },
{ url = "https://files.pythonhosted.org/packages/d8/d2/b27631f401ddd644e94c5cf33c9a4069f72011821cf3dc7309546b0642a0/cryptography-46.0.5-cp314-cp314t-manylinux_2_34_aarch64.whl", upload-time = 2026-02-10T19:17:45Z, size = 4270072, hashes = { sha256 = "4e817a8920bfbcff8940ecfd60f23d01836408242b30f1a708d93198393a80b4" } },
{ url = "https://files.pythonhosted.org/packages/f4/a7/60d32b0370dae0b4ebe55ffa10e8599a2a59935b5ece1b9f06edb73abdeb/cryptography-46.0.5-cp314-cp314t-manylinux_2_34_ppc64le.whl", upload-time = 2026-02-10T19:17:46Z, size = 4892170, hashes = { sha256 = "68f68d13f2e1cb95163fa3b4db4bf9a159a418f5f6e7242564fc75fcae667fd0" } },
{ url = "https://files.pythonhosted.org/packages/d2/b9/cf73ddf8ef1164330eb0b199a589103c363afa0cf794218c24d524a58eab/cryptography-46.0.5-cp314-cp314t-manylinux_2_34_x86_64.whl", upload-time = 2026-02-10T19:17:48Z, size = 4441741, hashes = { sha256 = "a3d1fae9863299076f05cb8a778c467578262fae09f9dc0ee9b12eb4268ce663" } },
{ url = "https://files.pythonhosted.org/packages/5f/eb/eee00b28c84c726fe8fa0158c65afe312d9c3b78d9d01daf700f1f6e37ff/cryptography-46.0.5-cp314-cp314t-musllinux_1_2_aarch64.whl", upload-time = 2026-02-10T19:17:50Z, size = 4396728, hashes = { sha256 = "c4143987a42a2397f2fc3b4d7e3a7d313fbe684f67ff443999e803dd75a76826" } },
{ url = "https://files.pythonhosted.org/packages/65/f4/6bc1a9ed5aef7145045114b75b77c2a8261b4d38717bd8dea111a63c3442/cryptography-46.0.5-cp314-cp314t-musllinux_1_2_x86_64.whl", upload-time = 2026-02-10T19:17:51Z, size = 4652001, hashes = { sha256 = "7d731d4b107030987fd61a7f8ab512b25b53cef8f233a97379ede116f30eb67d" } },
{ url = "https://files.pythonhosted.org/packages/86/ef/5d00ef966ddd71ac2e6951d278884a84a40ffbd88948ef0e294b214ae9e4/cryptography-46.0.5-cp314-cp314t-win32.whl", upload-time = 2026-02-10T19:17:52Z, size = 3003637, hashes = { sha256 = "c3bcce8521d785d510b2aad26ae2c966092b7daa8f45dd8f44734a104dc0bc1a" } },
{ url = "https://files.pythonhosted.org/packages/b7/57/f3f4160123da6d098db78350fdfd9705057aad21de7388eacb2401dceab9/cryptography-46.0.5-cp314-cp314t-win_amd64.whl", upload-time = 2026-02-10T19:17:54Z, size = 3469487, hashes = { sha256 = "4d8ae8659ab18c65ced284993c2265910f6c9e650189d4e3f68445ef82a810e4" } },
{ url = "https://files.pythonhosted.org/packages/e2/fa/a66aa722105ad6a458bebd64086ca2b72cdd361fed31763d20390f6f1389/cryptography-46.0.5-cp38-abi3-macosx_10_9_universal2.whl", upload-time = 2026-02-10T19:17:56Z, size = 7170514, hashes = { sha256 = "4108d4c09fbbf2789d0c926eb4152ae1760d5a2d97612b92d508d96c861e4d31" } },
{ url = "https://files.pythonhosted.org/packages/0f/04/c85bdeab78c8bc77b701bf0d9bdcf514c044e18a46dcff330df5448631b0/cryptography-46.0.5-cp38-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", upload-time = 2026-02-10T19:17:58Z, size = 4275349, hashes = { sha256 = "7d1f30a86d2757199cb2d56e48cce14deddf1f9c95f1ef1b64ee91ea43fe2e18" } },
{ url = "https://files.pythonhosted.org/packages/5c/32/9b87132a2f91ee7f5223b091dc963055503e9b442c98fc0b8a5ca765fab0/cryptography-46.0.5-cp38-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", upload-time = 2026-02-10T19:18:00Z, size = 4420667, hashes = { sha256 = "039917b0dc418bb9f6edce8a906572d69e74bd330b0b3fea4f79dab7f8ddd235" } },
{ url = "https://files.pythonhosted.org/packages/a1/a6/a7cb7010bec4b7c5692ca6f024150371b295ee1c108bdc1c400e4c44562b/cryptography-46.0.5-cp38-abi3-manylinux_2_28_aarch64.whl", upload-time = 2026-02-10T19:18:02Z, size = 4276980, hashes = { sha256 = "ba2a27ff02f48193fc4daeadf8ad2590516fa3d0adeeb34336b96f7fa64c1e3a" } },
{ url = "https://files.pythonhosted.org/packages/8e/7c/c4f45e0eeff9b91e3f12dbd0e165fcf2a38847288fcfd889deea99fb7b6d/cryptography-46.0.5-cp38-abi3-manylinux_2_28_ppc64le.whl", upload-time = 2026-02-10T19:18:03Z, size = 4939143, hashes = { sha256 = "61aa400dce22cb001a98014f647dc21cda08f7915ceb95df0c9eaf84b4b6af76" } },
{ url = "https://files.pythonhosted.org/packages/37/19/e1b8f964a834eddb44fa1b9a9976f4e414cbb7aa62809b6760c8803d22d1/cryptography-46.0.5-cp38-abi3-manylinux_2_28_x86_64.whl", upload-time = 2026-02-10T19:18:05Z, size = 4453674, hashes = { sha256 = "3ce58ba46e1bc2aac4f7d9290223cead56743fa6ab94a5d53292ffaac6a91614" } },
{ url = "https://files.pythonhosted.org/packages/db/ed/db15d3956f65264ca204625597c410d420e26530c4e2943e05a0d2f24d51/cryptography-46.0.5-cp38-abi3-manylinux_2_31_armv7l.whl", upload-time = 2026-02-10T19:18:07Z, size = 3978801, hashes = { sha256 = "420d0e909050490d04359e7fdb5ed7e667ca5c3c402b809ae2563d7e66a92229" } },
{ url = "https://files.pythonhosted.org/packages/41/e2/df40a31d82df0a70a0daf69791f91dbb70e47644c58581d654879b382d11/cryptography-46.0.5-cp38-abi3-manylinux_2_34_aarch64.whl", upload-time = 2026-02-10T19:18:09Z, size = 4276755, hashes = { sha256 = "582f5fcd2afa31622f317f80426a027f30dc792e9c80ffee87b993200ea115f1" } },
{ url = "https://files.pythonhosted.org/packages/33/45/726809d1176959f4a896b86907b98ff4391a8aa29c0aaaf9450a8a10630e/cryptography-46.0.5-cp38-abi3-manylinux_2_34_ppc64le.whl", upload-time = 2026-02-10T19:18:11Z, size = 4901539, hashes = { sha256 = "bfd56bb4b37ed4f330b82402f6f435845a5f5648edf1ad497da51a8452d5d62d" } },
{ url = "https://files.pythonhosted.org/packages/99/0f/a3076874e9c88ecb2ecc31382f6e7c21b428ede6f55aafa1aa272613e3cd/cryptography-46.0.5-cp38-abi3-manylinux_2_34_x86_64.whl", upload-time = 2026-02-10T19:18:12Z, size = 4452794, hashes = { sha256 = "a3d507bb6a513ca96ba84443226af944b0f7f47dcc9a399d110cd6146481d24c" } },
{ url = "https://files.pythonhosted.org/packages/02/ef/ffeb542d3683d24194a38f66ca17c0a4b8bf10631feef44a7ef64e631b1a/cryptography-46.0.5-cp38-abi3-musllinux_1_2_aarch64.whl", upload-time = 2026-02-10T19:18:14Z, size = 4404160, hashes = { sha256 = "9f16fbdf4da055efb21c22d81b89f155f02ba420558db21288b3d0035bafd5f4" } },
{ url = "https://files.pythonhosted.org/packages/96/93/682d2b43c1d5f1406ed048f377c0fc9fc8f7b0447a478d5c65ab3d3a66eb/cryptography-46.0.5-cp38-abi3-musllinux_1_2_x86_64.whl", upload-time = 2026-02-10T19:18:15Z, size = 4667123, hashes = { sha256 = "ced80795227d70549a411a4ab66e8ce307899fad2220ce5ab2f296e687eacde9" } },
{ url = "https://files.pythonhosted.org/packages/45/2d/9c5f2926cb5300a8eefc3f4f0b3f3df39db7f7ce40c8365444c49363cbda/cryptography-46.0.5-cp38-abi3-win32.whl", upload-time = 2026-02-10T19:18:17Z, size = 3010220, hashes = { sha256 = "02f547fce831f5096c9a567fd41bc12ca8f11df260959ecc7c3202555cc47a72" } },
{ url = "https://files.pythonhosted.org/packages/48/ef/0c2f4a8e31018a986949d34a01115dd057bf536905dca38897bacd21fac3/cryptography-46.0.5-cp38-abi3-win_amd64.whl", upload-time = 2026-02-10T19:18:18Z, size = 3467050, hashes = { sha256 = "556e106ee01aa13484ce9b0239bca667be5004efb0aabbed28d353df86445595" } },
{ url = "https://files.pythonhosted.org/packages/eb/dd/2d9fdb07cebdf3d51179730afb7d5e576153c6744c3ff8fded23030c204e/cryptography-46.0.5-pp311-pypy311_pp73-macosx_11_0_arm64.whl", upload-time = 2026-02-10T19:18:20Z, size = 3476964, hashes = { sha256 = "3b4995dc971c9fb83c25aa44cf45f02ba86f71ee600d81091c2f0cbae116b06c" } },
{ url = "https://files.pythonhosted.org/packages/e9/6f/6cc6cc9955caa6eaf83660b0da2b077c7fe8ff9950a3c5e45d605038d439/cryptography-46.0.5-pp311-pypy311_pp73-manylinux_2_28_aarch64.whl", upload-time = 2026-02-10T19:18:22Z, size = 4218321, hashes = { sha256 = "bc84e875994c3b445871ea7181d424588171efec3e185dced958dad9e001950a" } },
{ url = "https://files.pythonhosted.org/packages/3e/5d/c4da701939eeee699566a6c1367427ab91a8b7088cc2328c09dbee940415/cryptography-46.0.5-pp311-pypy311_pp73-manylinux_2_28_x86_64.whl", upload-time = 2026-02-10T19:18:24Z, size = 4381786, hashes = { sha256 = "2ae6971afd6246710480e3f15824ed3029a60fc16991db250034efd0b9fb4356" } },
{ url = "https://files.pythonhosted.org/packages/ac/97/a538654732974a94ff96c1db621fa464f455c02d4bb7d2652f4edc21d600/cryptography-46.0.5-pp311-pypy311_pp73-manylinux_2_34_aarch64.whl", upload-time = 2026-02-10T19:18:25Z, size = 4217990, hashes = { sha256 = "d861ee9e76ace6cf36a6a89b959ec08e7bc2493ee39d07ffe5acb23ef46d27da" } },
{ url = "https://files.pythonhosted.org/packages/ae/11/7e500d2dd3ba891197b9efd2da5454b74336d64a7cc419aa7327ab74e5f6/cryptography-46.0.5-pp311-pypy311_pp73-manylinux_2_34_x86_64.whl", upload-time = 2026-02-10T19:18:27Z, size = 4381252, hashes = { sha256 = "2b7a67c9cd56372f3249b39699f2ad479f6991e62ea15800973b956f4b73e257" } },
{ url = "https://files.pythonhosted.org/packages/bc/58/6b3d24e6b9bc474a2dcdee65dfd1f008867015408a271562e4b690561a4d/cryptography-46.0.5-pp311-pypy311_pp73-win_amd64.whl", upload-time = 2026-02-10T19:18:29Z, size = 3407605, hashes = { sha256 = "8456928655f856c6e1533ff59d5be76578a7157224dbd9ce6872f25055ab9ab7" } },
{ url = "https://files.pythonhosted.org/packages/0b/5d/4a8f770695d73be252331e60e526291e3df0c9b27556a90a6b47bccca4c2/cryptography-46.0.7-cp311-abi3-macosx_10_9_universal2.whl", upload-time = 2026-04-08T01:56:17Z, size = 7179869, hashes = { sha256 = "ea42cbe97209df307fdc3b155f1b6fa2577c0defa8f1f7d3be7d31d189108ad4" } },
{ url = "https://files.pythonhosted.org/packages/5f/45/6d80dc379b0bbc1f9d1e429f42e4cb9e1d319c7a8201beffd967c516ea01/cryptography-46.0.7-cp311-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", upload-time = 2026-04-08T01:56:19Z, size = 4275492, hashes = { sha256 = "b36a4695e29fe69215d75960b22577197aca3f7a25b9cf9d165dcfe9d80bc325" } },
{ url = "https://files.pythonhosted.org/packages/4a/9a/1765afe9f572e239c3469f2cb429f3ba7b31878c893b246b4b2994ffe2fe/cryptography-46.0.7-cp311-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", upload-time = 2026-04-08T01:56:21Z, size = 4426670, hashes = { sha256 = "5ad9ef796328c5e3c4ceed237a183f5d41d21150f972455a9d926593a1dcb308" } },
{ url = "https://files.pythonhosted.org/packages/8f/3e/af9246aaf23cd4ee060699adab1e47ced3f5f7e7a8ffdd339f817b446462/cryptography-46.0.7-cp311-abi3-manylinux_2_28_aarch64.whl", upload-time = 2026-04-08T01:56:23Z, size = 4280275, hashes = { sha256 = "73510b83623e080a2c35c62c15298096e2a5dc8d51c3b4e1740211839d0dea77" } },
{ url = "https://files.pythonhosted.org/packages/0f/54/6bbbfc5efe86f9d71041827b793c24811a017c6ac0fd12883e4caa86b8ed/cryptography-46.0.7-cp311-abi3-manylinux_2_28_ppc64le.whl", upload-time = 2026-04-08T01:56:25Z, size = 4928402, hashes = { sha256 = "cbd5fb06b62bd0721e1170273d3f4d5a277044c47ca27ee257025146c34cbdd1" } },
{ url = "https://files.pythonhosted.org/packages/2d/cf/054b9d8220f81509939599c8bdbc0c408dbd2bdd41688616a20731371fe0/cryptography-46.0.7-cp311-abi3-manylinux_2_28_x86_64.whl", upload-time = 2026-04-08T01:56:27Z, size = 4459985, hashes = { sha256 = "420b1e4109cc95f0e5700eed79908cef9268265c773d3a66f7af1eef53d409ef" } },
{ url = "https://files.pythonhosted.org/packages/f9/46/4e4e9c6040fb01c7467d47217d2f882daddeb8828f7df800cb806d8a2288/cryptography-46.0.7-cp311-abi3-manylinux_2_31_armv7l.whl", upload-time = 2026-04-08T01:56:29Z, size = 3990652, hashes = { sha256 = "24402210aa54baae71d99441d15bb5a1919c195398a87b563df84468160a65de" } },
{ url = "https://files.pythonhosted.org/packages/36/5f/313586c3be5a2fbe87e4c9a254207b860155a8e1f3cca99f9910008e7d08/cryptography-46.0.7-cp311-abi3-manylinux_2_34_aarch64.whl", upload-time = 2026-04-08T01:56:30Z, size = 4279805, hashes = { sha256 = "8a469028a86f12eb7d2fe97162d0634026d92a21f3ae0ac87ed1c4a447886c83" } },
{ url = "https://files.pythonhosted.org/packages/69/33/60dfc4595f334a2082749673386a4d05e4f0cf4df8248e63b2c3437585f2/cryptography-46.0.7-cp311-abi3-manylinux_2_34_ppc64le.whl", upload-time = 2026-04-08T01:56:32Z, size = 4892883, hashes = { sha256 = "9694078c5d44c157ef3162e3bf3946510b857df5a3955458381d1c7cfc143ddb" } },
{ url = "https://files.pythonhosted.org/packages/c7/0b/333ddab4270c4f5b972f980adef4faa66951a4aaf646ca067af597f15563/cryptography-46.0.7-cp311-abi3-manylinux_2_34_x86_64.whl", upload-time = 2026-04-08T01:56:34Z, size = 4459756, hashes = { sha256 = "42a1e5f98abb6391717978baf9f90dc28a743b7d9be7f0751a6f56a75d14065b" } },
{ url = "https://files.pythonhosted.org/packages/d2/14/633913398b43b75f1234834170947957c6b623d1701ffc7a9600da907e89/cryptography-46.0.7-cp311-abi3-musllinux_1_2_aarch64.whl", upload-time = 2026-04-08T01:56:35Z, size = 4410244, hashes = { sha256 = "91bbcb08347344f810cbe49065914fe048949648f6bd5c2519f34619142bbe85" } },
{ url = "https://files.pythonhosted.org/packages/10/f2/19ceb3b3dc14009373432af0c13f46aa08e3ce334ec6eff13492e1812ccd/cryptography-46.0.7-cp311-abi3-musllinux_1_2_x86_64.whl", upload-time = 2026-04-08T01:56:38Z, size = 4674868, hashes = { sha256 = "5d1c02a14ceb9148cc7816249f64f623fbfee39e8c03b3650d842ad3f34d637e" } },
{ url = "https://files.pythonhosted.org/packages/1a/bb/a5c213c19ee94b15dfccc48f363738633a493812687f5567addbcbba9f6f/cryptography-46.0.7-cp311-abi3-win32.whl", upload-time = 2026-04-08T01:56:39Z, size = 3026504, hashes = { sha256 = "d23c8ca48e44ee015cd0a54aeccdf9f09004eba9fc96f38c911011d9ff1bd457" } },
{ url = "https://files.pythonhosted.org/packages/2b/02/7788f9fefa1d060ca68717c3901ae7fffa21ee087a90b7f23c7a603c32ae/cryptography-46.0.7-cp311-abi3-win_amd64.whl", upload-time = 2026-04-08T01:56:41Z, size = 3488363, hashes = { sha256 = "397655da831414d165029da9bc483bed2fe0e75dde6a1523ec2fe63f3c46046b" } },
{ url = "https://files.pythonhosted.org/packages/7b/56/15619b210e689c5403bb0540e4cb7dbf11a6bf42e483b7644e471a2812b3/cryptography-46.0.7-cp314-cp314t-macosx_10_9_universal2.whl", upload-time = 2026-04-08T01:56:44Z, size = 7119671, hashes = { sha256 = "d151173275e1728cf7839aaa80c34fe550c04ddb27b34f48c232193df8db5842" } },
{ url = "https://files.pythonhosted.org/packages/74/66/e3ce040721b0b5599e175ba91ab08884c75928fbeb74597dd10ef13505d2/cryptography-46.0.7-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", upload-time = 2026-04-08T01:56:46Z, size = 4268551, hashes = { sha256 = "db0f493b9181c7820c8134437eb8b0b4792085d37dbb24da050476ccb664e59c" } },
{ url = "https://files.pythonhosted.org/packages/03/11/5e395f961d6868269835dee1bafec6a1ac176505a167f68b7d8818431068/cryptography-46.0.7-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", upload-time = 2026-04-08T01:56:47Z, size = 4408887, hashes = { sha256 = "ebd6daf519b9f189f85c479427bbd6e9c9037862cf8fe89ee35503bd209ed902" } },
{ url = "https://files.pythonhosted.org/packages/40/53/8ed1cf4c3b9c8e611e7122fb56f1c32d09e1fff0f1d77e78d9ff7c82653e/cryptography-46.0.7-cp314-cp314t-manylinux_2_28_aarch64.whl", upload-time = 2026-04-08T01:56:49Z, size = 4271354, hashes = { sha256 = "b7b412817be92117ec5ed95f880defe9cf18a832e8cafacf0a22337dc1981b4d" } },
{ url = "https://files.pythonhosted.org/packages/50/46/cf71e26025c2e767c5609162c866a78e8a2915bbcfa408b7ca495c6140c4/cryptography-46.0.7-cp314-cp314t-manylinux_2_28_ppc64le.whl", upload-time = 2026-04-08T01:56:50Z, size = 4905845, hashes = { sha256 = "fbfd0e5f273877695cb93baf14b185f4878128b250cc9f8e617ea0c025dfb022" } },
{ url = "https://files.pythonhosted.org/packages/c0/ea/01276740375bac6249d0a971ebdf6b4dc9ead0ee0a34ef3b5a88c1a9b0d4/cryptography-46.0.7-cp314-cp314t-manylinux_2_28_x86_64.whl", upload-time = 2026-04-08T01:56:52Z, size = 4444641, hashes = { sha256 = "ffca7aa1d00cf7d6469b988c581598f2259e46215e0140af408966a24cf086ce" } },
{ url = "https://files.pythonhosted.org/packages/3d/4c/7d258f169ae71230f25d9f3d06caabcff8c3baf0978e2b7d65e0acac3827/cryptography-46.0.7-cp314-cp314t-manylinux_2_31_armv7l.whl", upload-time = 2026-04-08T01:56:54Z, size = 3967749, hashes = { sha256 = "60627cf07e0d9274338521205899337c5d18249db56865f943cbe753aa96f40f" } },
{ url = "https://files.pythonhosted.org/packages/b5/2a/2ea0767cad19e71b3530e4cad9605d0b5e338b6a1e72c37c9c1ceb86c333/cryptography-46.0.7-cp314-cp314t-manylinux_2_34_aarch64.whl", upload-time = 2026-04-08T01:56:56Z, size = 4270942, hashes = { sha256 = "80406c3065e2c55d7f49a9550fe0c49b3f12e5bfff5dedb727e319e1afb9bf99" } },
{ url = "https://files.pythonhosted.org/packages/41/3d/fe14df95a83319af25717677e956567a105bb6ab25641acaa093db79975d/cryptography-46.0.7-cp314-cp314t-manylinux_2_34_ppc64le.whl", upload-time = 2026-04-08T01:56:58Z, size = 4871079, hashes = { sha256 = "c5b1ccd1239f48b7151a65bc6dd54bcfcc15e028c8ac126d3fada09db0e07ef1" } },
{ url = "https://files.pythonhosted.org/packages/9c/59/4a479e0f36f8f378d397f4eab4c850b4ffb79a2f0d58704b8fa0703ddc11/cryptography-46.0.7-cp314-cp314t-manylinux_2_34_x86_64.whl", upload-time = 2026-04-08T01:57:00Z, size = 4443999, hashes = { sha256 = "d5f7520159cd9c2154eb61eb67548ca05c5774d39e9c2c4339fd793fe7d097b2" } },
{ url = "https://files.pythonhosted.org/packages/28/17/b59a741645822ec6d04732b43c5d35e4ef58be7bfa84a81e5ae6f05a1d33/cryptography-46.0.7-cp314-cp314t-musllinux_1_2_aarch64.whl", upload-time = 2026-04-08T01:57:02Z, size = 4399191, hashes = { sha256 = "fcd8eac50d9138c1d7fc53a653ba60a2bee81a505f9f8850b6b2888555a45d0e" } },
{ url = "https://files.pythonhosted.org/packages/59/6a/bb2e166d6d0e0955f1e9ff70f10ec4b2824c9cfcdb4da772c7dd69cc7d80/cryptography-46.0.7-cp314-cp314t-musllinux_1_2_x86_64.whl", upload-time = 2026-04-08T01:57:04Z, size = 4655782, hashes = { sha256 = "65814c60f8cc400c63131584e3e1fad01235edba2614b61fbfbfa954082db0ee" } },
{ url = "https://files.pythonhosted.org/packages/95/b6/3da51d48415bcb63b00dc17c2eff3a651b7c4fed484308d0f19b30e8cb2c/cryptography-46.0.7-cp314-cp314t-win32.whl", upload-time = 2026-04-08T01:57:06Z, size = 3002227, hashes = { sha256 = "fdd1736fed309b4300346f88f74cd120c27c56852c3838cab416e7a166f67298" } },
{ url = "https://files.pythonhosted.org/packages/32/a8/9f0e4ed57ec9cebe506e58db11ae472972ecb0c659e4d52bbaee80ca340a/cryptography-46.0.7-cp314-cp314t-win_amd64.whl", upload-time = 2026-04-08T01:57:08Z, size = 3475332, hashes = { sha256 = "e06acf3c99be55aa3b516397fe42f5855597f430add9c17fa46bf2e0fb34c9bb" } },
{ url = "https://files.pythonhosted.org/packages/a7/7f/cd42fc3614386bc0c12f0cb3c4ae1fc2bbca5c9662dfed031514911d513d/cryptography-46.0.7-cp38-abi3-macosx_10_9_universal2.whl", upload-time = 2026-04-08T01:57:10Z, size = 7165618, hashes = { sha256 = "462ad5cb1c148a22b2e3bcc5ad52504dff325d17daf5df8d88c17dda1f75f2a4" } },
{ url = "https://files.pythonhosted.org/packages/a5/d0/36a49f0262d2319139d2829f773f1b97ef8aef7f97e6e5bd21455e5a8fb5/cryptography-46.0.7-cp38-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", upload-time = 2026-04-08T01:57:12Z, size = 4270628, hashes = { sha256 = "84d4cced91f0f159a7ddacad249cc077e63195c36aac40b4150e7a57e84fffe7" } },
{ url = "https://files.pythonhosted.org/packages/8a/6c/1a42450f464dda6ffbe578a911f773e54dd48c10f9895a23a7e88b3e7db5/cryptography-46.0.7-cp38-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", upload-time = 2026-04-08T01:57:14Z, size = 4415405, hashes = { sha256 = "128c5edfe5e5938b86b03941e94fac9ee793a94452ad1365c9fc3f4f62216832" } },
{ url = "https://files.pythonhosted.org/packages/9a/92/4ed714dbe93a066dc1f4b4581a464d2d7dbec9046f7c8b7016f5286329e2/cryptography-46.0.7-cp38-abi3-manylinux_2_28_aarch64.whl", upload-time = 2026-04-08T01:57:16Z, size = 4272715, hashes = { sha256 = "5e51be372b26ef4ba3de3c167cd3d1022934bc838ae9eaad7e644986d2a3d163" } },
{ url = "https://files.pythonhosted.org/packages/b7/e6/a26b84096eddd51494bba19111f8fffe976f6a09f132706f8f1bf03f51f7/cryptography-46.0.7-cp38-abi3-manylinux_2_28_ppc64le.whl", upload-time = 2026-04-08T01:57:19Z, size = 4918400, hashes = { sha256 = "cdf1a610ef82abb396451862739e3fc93b071c844399e15b90726ef7470eeaf2" } },
{ url = "https://files.pythonhosted.org/packages/c7/08/ffd537b605568a148543ac3c2b239708ae0bd635064bab41359252ef88ed/cryptography-46.0.7-cp38-abi3-manylinux_2_28_x86_64.whl", upload-time = 2026-04-08T01:57:21Z, size = 4450634, hashes = { sha256 = "1d25aee46d0c6f1a501adcddb2d2fee4b979381346a78558ed13e50aa8a59067" } },
{ url = "https://files.pythonhosted.org/packages/16/01/0cd51dd86ab5b9befe0d031e276510491976c3a80e9f6e31810cce46c4ad/cryptography-46.0.7-cp38-abi3-manylinux_2_31_armv7l.whl", upload-time = 2026-04-08T01:57:22Z, size = 3985233, hashes = { sha256 = "cdfbe22376065ffcf8be74dc9a909f032df19bc58a699456a21712d6e5eabfd0" } },
{ url = "https://files.pythonhosted.org/packages/92/49/819d6ed3a7d9349c2939f81b500a738cb733ab62fbecdbc1e38e83d45e12/cryptography-46.0.7-cp38-abi3-manylinux_2_34_aarch64.whl", upload-time = 2026-04-08T01:57:24Z, size = 4271955, hashes = { sha256 = "abad9dac36cbf55de6eb49badd4016806b3165d396f64925bf2999bcb67837ba" } },
{ url = "https://files.pythonhosted.org/packages/80/07/ad9b3c56ebb95ed2473d46df0847357e01583f4c52a85754d1a55e29e4d0/cryptography-46.0.7-cp38-abi3-manylinux_2_34_ppc64le.whl", upload-time = 2026-04-08T01:57:26Z, size = 4879888, hashes = { sha256 = "935ce7e3cfdb53e3536119a542b839bb94ec1ad081013e9ab9b7cfd478b05006" } },
{ url = "https://files.pythonhosted.org/packages/b8/c7/201d3d58f30c4c2bdbe9b03844c291feb77c20511cc3586daf7edc12a47b/cryptography-46.0.7-cp38-abi3-manylinux_2_34_x86_64.whl", upload-time = 2026-04-08T01:57:29Z, size = 4449961, hashes = { sha256 = "35719dc79d4730d30f1c2b6474bd6acda36ae2dfae1e3c16f2051f215df33ce0" } },
{ url = "https://files.pythonhosted.org/packages/a5/ef/649750cbf96f3033c3c976e112265c33906f8e462291a33d77f90356548c/cryptography-46.0.7-cp38-abi3-musllinux_1_2_aarch64.whl", upload-time = 2026-04-08T01:57:31Z, size = 4401696, hashes = { sha256 = "7bbc6ccf49d05ac8f7d7b5e2e2c33830d4fe2061def88210a126d130d7f71a85" } },
{ url = "https://files.pythonhosted.org/packages/41/52/a8908dcb1a389a459a29008c29966c1d552588d4ae6d43f3a1a4512e0ebe/cryptography-46.0.7-cp38-abi3-musllinux_1_2_x86_64.whl", upload-time = 2026-04-08T01:57:33Z, size = 4664256, hashes = { sha256 = "a1529d614f44b863a7b480c6d000fe93b59acee9c82ffa027cfadc77521a9f5e" } },
{ url = "https://files.pythonhosted.org/packages/4b/fa/f0ab06238e899cc3fb332623f337a7364f36f4bb3f2534c2bb95a35b132c/cryptography-46.0.7-cp38-abi3-win32.whl", upload-time = 2026-04-08T01:57:34Z, size = 3013001, hashes = { sha256 = "f247c8c1a1fb45e12586afbb436ef21ff1e80670b2861a90353d9b025583d246" } },
{ url = "https://files.pythonhosted.org/packages/d2/f1/00ce3bde3ca542d1acd8f8cfa38e446840945aa6363f9b74746394b14127/cryptography-46.0.7-cp38-abi3-win_amd64.whl", upload-time = 2026-04-08T01:57:36Z, size = 3472985, hashes = { sha256 = "506c4ff91eff4f82bdac7633318a526b1d1309fc07ca76a3ad182cb5b686d6d3" } },
{ url = "https://files.pythonhosted.org/packages/63/0c/dca8abb64e7ca4f6b2978769f6fea5ad06686a190cec381f0a796fdcaaba/cryptography-46.0.7-pp311-pypy311_pp73-macosx_11_0_arm64.whl", upload-time = 2026-04-08T01:57:38Z, size = 3476879, hashes = { sha256 = "fc9ab8856ae6cf7c9358430e49b368f3108f050031442eaeb6b9d87e4dcf4e4f" } },
{ url = "https://files.pythonhosted.org/packages/3a/ea/075aac6a84b7c271578d81a2f9968acb6e273002408729f2ddff517fed4a/cryptography-46.0.7-pp311-pypy311_pp73-manylinux_2_28_aarch64.whl", upload-time = 2026-04-08T01:57:40Z, size = 4219700, hashes = { sha256 = "d3b99c535a9de0adced13d159c5a9cf65c325601aa30f4be08afd680643e9c15" } },
{ url = "https://files.pythonhosted.org/packages/6c/7b/1c55db7242b5e5612b29fc7a630e91ee7a6e3c8e7bf5406d22e206875fbd/cryptography-46.0.7-pp311-pypy311_pp73-manylinux_2_28_x86_64.whl", upload-time = 2026-04-08T01:57:42Z, size = 4385982, hashes = { sha256 = "d02c738dacda7dc2a74d1b2b3177042009d5cab7c7079db74afc19e56ca1b455" } },
{ url = "https://files.pythonhosted.org/packages/cb/da/9870eec4b69c63ef5925bf7d8342b7e13bc2ee3d47791461c4e49ca212f4/cryptography-46.0.7-pp311-pypy311_pp73-manylinux_2_34_aarch64.whl", upload-time = 2026-04-08T01:57:44Z, size = 4219115, hashes = { sha256 = "04959522f938493042d595a736e7dbdff6eb6cc2339c11465b3ff89343b65f65" } },
{ url = "https://files.pythonhosted.org/packages/f4/72/05aa5832b82dd341969e9a734d1812a6aadb088d9eb6f0430fc337cc5a8f/cryptography-46.0.7-pp311-pypy311_pp73-manylinux_2_34_x86_64.whl", upload-time = 2026-04-08T01:57:46Z, size = 4385479, hashes = { sha256 = "3986ac1dee6def53797289999eabe84798ad7817f3e97779b5061a95b0ee4968" } },
{ url = "https://files.pythonhosted.org/packages/20/2a/1b016902351a523aa2bd446b50a5bc1175d7a7d1cf90fe2ef904f9b84ebc/cryptography-46.0.7-pp311-pypy311_pp73-win_amd64.whl", upload-time = 2026-04-08T01:57:48Z, size = 3412829, hashes = { sha256 = "258514877e15963bd43b558917bc9f54cf7cf866c38aa576ebf47a77ddbc43a4" } },
]

@coderabbitai coderabbitai Bot Apr 22, 2026

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

🧩 Analysis chain

🌐 Web query:

cryptography 46.0.7 release notes changelog

💡 Result:

PyCA cryptography 46.0.7 was released on April 8, 2026 (noted in announcements, though changelog lists January 27 possibly pre-update). Key changes: - SECURITY ISSUE: Fixed an issue where non-contiguous buffers could be passed to APIs that accept Python buffers (e.g., Hash.update), potentially leading to buffer overflow. CVE-2026-39892. Affected versions: >=45.0.0 <46.0.7. Example: h = Hash(SHA256); h.update(buf[::-1]) could read past buffer end on Python >3.11. - Updated Windows, macOS, and Linux wheels to use OpenSSL 3.5.6. Official changelog: https://cryptography.io/en/stable/changelog/#46-0-7 PyPI release: https://pypi.org/project/cryptography/46.0.7/ GitHub advisory: GHSA-p423-j2cm-9vmq

Citations:


Update PR description to document the security fix for cryptography 46.0.7

The cryptography bump from 46.0.5 to 46.0.7 is intentional: it fixes CVE-2026-39892, a buffer overflow vulnerability affecting versions >=45.0.0 <46.0.7. Since the intent is to address the Keras CVE, clarify in the PR description that this security update to cryptography is included alongside it. Verify the same applies to the other three lockfiles.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@jupyter/tensorflow/ubi9-python-3.12/pylock.toml` around lines 747 - 800,
Update the PR description to explicitly state that the cryptography package was
bumped from 46.0.5 to 46.0.7 to remediate CVE-2026-39892 (buffer overflow
affecting >=45.0.0 <46.0.7) alongside the Keras CVE; reference the package entry
"name = \"cryptography\"" and the new "version = \"46.0.7\"" in the pylock.toml
diff and add a short note that this is a security-only change. Also check the
other three lockfiles for the same "cryptography" version change and, if
present, add the same CVE note to the PR so reviewers know the cryptography bump
is intentional and security-motivated.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

@coderabbitai doublecheck, updated

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🧩 Analysis chain

🏁 Script executed:

#!/usr/bin/env bash
set -euo pipefail

repo="red-hat-data-services/notebooks"
pr="2137"

printf '%s\n' '--- Current PR body ---'
gh pr view "$pr" --repo "$repo" --json body --jq '.body'

printf '%s\n' '--- cryptography changes in the PR ---'
git diff --unified=2 "origin/rhoai-2.25...HEAD" -- \
  'jupyter/tensorflow/ubi9-python-3.12/pylock.toml' \
  'jupyter/rocm/tensorflow/ubi9-python-3.12/pylock.toml' \
  'runtimes/tensorflow/ubi9-python-3.12/pylock.toml' \
  'runtimes/rocm-tensorflow/ubi9-python-3.12/pylock.toml' \
  | grep -E -B2 -A3 'name = "cryptography"|version = "46\.0\.(5|7)"' || true

Length of output: 2021


@jiridanek, I double-checked PR #2137. The current description still does not mention the incidental cryptography 46.0.5 → 46.0.7 security update or CVE-2026-39892, so this finding remains open.

Please add a brief Summary bullet such as:

Regenerated locks also update cryptography from 46.0.5 to 46.0.7, remediating CVE-2026-39892; this is an intentional security-only transitive dependency update.

The local comparison of the other lockfiles was inconclusive because origin/rhoai-2.25 was unavailable in the sandbox, but the supplied diff confirms this update in the reviewed lockfile.


🧠 Learnings used
Learnt from: jiridanek
Repo: red-hat-data-services/notebooks PR: 2192
File: runtimes/pytorch+llmcompressor/ubi9-python-3.12/pyproject.toml:55-58
Timestamp: 2026-05-05T11:18:20.110Z
Learning: In red-hat-data-services/notebooks, do not regenerate or update per-image pylock.toml files as part of CVE-fix PRs. This is intentional to avoid public-index vs RH-index diff noise; lock regeneration should be handled by CI/maintainers instead. During review, tolerate that pylock.toml may be stale relative to dependency overrides added in the corresponding pyproject.toml (e.g., pyproject overrides like pyasn1>=0.6.2), and check that deviations are intentional for the affected images rather than treating them as accidental drift.

Comment thread jupyter/tensorflow/ubi9-python-3.12/pylock.toml
@jiridanek

Copy link
Copy Markdown
Member

Rebased onto current rhoai-2.25 tip (cherry-pick 0cebd7c0d986b102) and force-pushed this fork branch.

Prefer merge via same-repo PR (full CI with subscription/AIPCC secrets): #2635

Build Notebooks (push): https://github.com/red-hat-data-services/notebooks/actions/runs/30372605566

Fork PR CI cannot use SUBSCRIPTION_* / AIPCC_QUAY_BOT_* / GIT_CRYPT_KEY secrets — use #2635 for validation.

@codecov-commenter

Copy link
Copy Markdown

⚠️ Please install the 'codecov app svg image' to ensure uploads and comments are reliably processed by Codecov.

Codecov Report

✅ All modified and coverable lines are covered by tests.
⚠️ Please upload report for BASE (rhoai-2.25@8500837). Learn more about missing BASE report.
✅ All tests successful. No failed tests found.
❗ Your organization needs to install the Codecov GitHub app to enable full functionality.

Additional details and impacted files
@@             Coverage Diff              @@
##             rhoai-2.25   #2137   +/-   ##
============================================
  Coverage              ?       0           
============================================
  Files                 ?       0           
  Lines                 ?       0           
  Branches              ?       0           
============================================
  Hits                  ?       0           
  Misses                ?       0           
  Partials              ?       0           

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@jiridanek

Copy link
Copy Markdown
Member

/build-konflux

@jiridanek jiridanek closed this Jul 29, 2026
@jiridanek
jiridanek force-pushed the cve-2026-1462-keras-override-fix branch from d986b10 to 6ae9aaa Compare July 29, 2026 08:19
@openshift-ci

openshift-ci Bot commented Jul 29, 2026

Copy link
Copy Markdown

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by:

The full list of commands accepted by this bot can be found here.

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@jiridanek

Copy link
Copy Markdown
Member

Thanks @swattamw2024 — rebased this branch onto current rhoai-2.25 and updated both remotes:

  • red-hat-data-services/notebooksfix/rhoai-2.25-cve-2026-1462-keras
  • swattamw2024/notebookscve-2026-1462-keras-override-fix

After rebase, the keras commit is fully superseded by the merged CVE batch in #2634 (keras>=3.14.0 is already on rhoai-2.25). The branch tip is now 6ae9aaa with no remaining diff vs base.

Closing as superseded by #2634 — your original change is landed; no further action needed on this PR.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants