Skip to content

RHOAIENG-66017: CVE-2026-34993 rhoai/odh-th06-cpu-torch210-py312-rhel9: AIOHTTP: Arbitrary code execution via untrusted input to CookieJar.load() [rhoai-3.4]#897

Closed
jira-autofix[bot] wants to merge 3 commits into
mainfrom
autofix/rhoaieng-66017
Closed

RHOAIENG-66017: CVE-2026-34993 rhoai/odh-th06-cpu-torch210-py312-rhel9: AIOHTTP: Arbitrary code execution via untrusted input to CookieJar.load() [rhoai-3.4]#897
jira-autofix[bot] wants to merge 3 commits into
mainfrom
autofix/rhoaieng-66017

Conversation

@jira-autofix

@jira-autofix jira-autofix Bot commented Jun 4, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Add aiohttp~=3.14.0 to pyproject.toml for th06-cpu-torch210-py312 to fix CVE-2026-34993 (arbitrary code execution via untrusted input to CookieJar.load())
  • requirements.txt still pins aiohttp==3.13.5 until AIPCC index is updated and requirements are regenerated

Test plan

  • Verify aiohttp 3.14.0 is available in AIPCC cpu-ubi9 index
  • Regenerate requirements.txt with uv pip compile
  • Rebuild image and verify it starts correctly

Summary by CodeRabbit

  • New Features
    • Added support for an asynchronous HTTP client in the TH06 CPU universal image, improving compatibility for network-related workloads.

@coderabbitai

coderabbitai Bot commented Jun 4, 2026

Copy link
Copy Markdown
📝 Walkthrough

Walkthrough

Adds aiohttp~=3.14.0 to the TH06 CPU universal image pyproject.toml dependency list. This changes the runtime dependency set; no specific CWE/CVE is evidenced in the diff.

Estimated code review effort

🎯 1 (Trivial) | ⏱️ ~2 minutes

🚥 Pre-merge checks | ✅ 9 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Contribution Quality And Spam Detection ⚠️ Warning One-file pyproject-only CVE bump leaves Dockerfile installing requirements.txt with aiohttp==3.13.5; PR body is rigid Summary/Test plan security-template prose. Regenerate requirements.txt or switch the image build to install from pyproject.toml, and rewrite the PR description in repo-specific terms with a concrete threat model.
✅ Passed checks (9 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title matches the dependency bump to aiohttp for CVE-2026-34993 remediation and names the affected image.
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.
No Hardcoded Secrets ✅ Passed Touched files only change dependency strings; no hardcoded creds, private keys, embedded creds, or secret-name literal assignments found (CWE-798).
No Weak Cryptography ✅ Passed Touched image files only add aiohttp; exact searches found no MD5/SHA1/DES/RC4/3DES/Blowfish/ECB, custom crypto, or non-constant-time secret compares.
No Injection Vectors ✅ Passed Changed files are dependency metadata only; no SQL/shell/eval/pickle/yaml/dangerouslySetInnerHTML sinks found (CWE-89/78/94/502/79).
No Privileged Containers ✅ Passed PASS: Only pyproject.toml changed; no new privileged manifest/Dockerfile settings (CWE-250) were introduced.
No Sensitive Data In Logs ✅ Passed No logging code changed; the touched file is pyproject.toml only, so no CWE-532/CWE-200 sensitive-data logging exposure is introduced.

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

@openshift-ci openshift-ci Bot requested a review from robert-bell June 4, 2026 20:37
@openshift-ci

openshift-ci Bot commented Jun 4, 2026

Copy link
Copy Markdown

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by:
Once this PR has been reviewed and has the lgtm label, please assign robert-bell for approval. For more information see the Code Review Process.

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

@openshift-ci openshift-ci Bot requested a review from szaher June 4, 2026 20:37
Add aiohttp~=3.14.0 constraint to th06-cpu-torch210-py312 pyproject.toml
to fix CVE-2026-34993, an arbitrary code execution vulnerability via
untrusted input to CookieJar.load().

aiohttp 3.14.0 is not yet available in the AIPCC PyPI index for
cpu-ubi9. requirements.txt will need regeneration once the AIPCC team
publishes the patched version. The constraint is added now to prevent
regeneration with a vulnerable version.

## Summary
- Add `aiohttp~=3.14.0` to pyproject.toml for th06-cpu-torch210-py312
- requirements.txt still pins 3.13.5 until AIPCC index is updated

## Test plan
- [ ] Verify aiohttp 3.14.0 is available in AIPCC cpu-ubi9 index
- [ ] Regenerate requirements.txt with `uv pip compile`
- [ ] Rebuild image and verify it starts correctly
@jira-autofix jira-autofix Bot force-pushed the autofix/rhoaieng-66017 branch from 4d7f2c2 to d708e30 Compare June 5, 2026 09:50
Revert documentation changes that were outside the scope of the
CVE-2026-34993 fix. Only the pyproject.toml constraint change is
needed for this ticket.
@rhods-ci-bot

Copy link
Copy Markdown

@jira-autofix[bot]: The following test has Succeeded:

OCI Artifact Browser URL

View in Artifact Browser

Inspecting Test Artifacts Manually

To inspect your test artifacts manually, follow these steps:

  1. Install ORAS (see the ORAS installation guide).
  2. Download artifacts with the following commands:
mkdir -p oras-artifacts
cd oras-artifacts
oras pull quay.io/opendatahub/odh-ci-artifacts:odh-pr-test-distributed-workloads-68vr4

@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: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@images/universal/training/th06-cpu-torch210-py312/pyproject.toml`:
- Line 52: The aiohttp version bump in pyproject.toml is not reflected in the
image build because Dockerfile installs from requirements.txt, which still pins
the older aiohttp release. Regenerate requirements.txt so it matches the new
aiohttp~=3.14.0 constraint, or change the build flow to install from
pyproject.toml instead. Make sure the updated lockfile stays in sync with the
dependency declaration used by the th06-cpu-torch210-py312 training image.
🪄 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: Central YAML (base), Organization UI (inherited)

Review profile: CHILL

Plan: Enterprise

Run ID: 1ef70dcd-5dcb-42ba-bbd9-70815e51241f

📥 Commits

Reviewing files that changed from the base of the PR and between b9fa0ea and e653f57.

📒 Files selected for processing (1)
  • images/universal/training/th06-cpu-torch210-py312/pyproject.toml

"py-cpuinfo>=9.0.0",
"rich>=13.9.4",
"aiofiles==25.1.0",
"aiohttp~=3.14.0",

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🔒 Security & Privacy | 🟠 Major

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "== Show the two manifests =="
sed -n '45,60p' images/universal/training/th06-cpu-torch210-py312/pyproject.toml
sed -n '18,32p' images/universal/training/th06-cpu-torch210-py312/requirements.txt

echo
echo "== Find build/install paths for this image =="
fd -HI 'Dockerfile|Containerfile|*.Dockerfile|*.containerfile' .
rg -n -C3 'th06-cpu-torch210-py312|requirements\.txt|pyproject\.toml|uv pip compile|pip install|uv sync|poetry install' .

echo
echo "== Find any docs or scripts that regenerate requirements =="
rg -n -C2 'uv pip compile|pip-compile|requirements\.txt' images/universal/training/th06-cpu-torch210-py312 .

Repository: opendatahub-io/distributed-workloads

Length of output: 1264


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "== Locate files for this image =="
fd -HI 'th06-cpu-torch210-py312|requirements\.txt|pyproject\.toml|Dockerfile|Containerfile|\.Dockerfile|\.containerfile' images/universal/training

echo
echo "== Inspect relevant directory tree =="
find images/universal/training/th06-cpu-torch210-py312 -maxdepth 2 -type f | sort

echo
echo "== Search for install/build references in the image directory and nearby configs =="
rg -n -C3 'th06-cpu-torch210-py312|requirements\.txt|pyproject\.toml|pip install|uv sync|uv pip compile|poetry install|pip-compile|conda|mamba' images/universal/training .github . 2>/dev/null || true

Repository: opendatahub-io/distributed-workloads

Length of output: 50393


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "== Locate files for this image =="
fd -HI 'th06-cpu-torch210-py312|requirements\.txt|pyproject\.toml|Dockerfile|Containerfile|\.Dockerfile|\.containerfile' images/universal/training

echo
echo "== Inspect relevant directory tree =="
find images/universal/training/th06-cpu-torch210-py312 -maxdepth 2 -type f | sort

echo
echo "== Search for install/build references in the image directory and nearby configs =="
rg -n -C3 'th06-cpu-torch210-py312|requirements\.txt|pyproject\.toml|pip install|uv sync|uv pip compile|poetry install|pip-compile|conda|mamba' images/universal/training .github . 2>/dev/null || true

Repository: opendatahub-io/distributed-workloads

Length of output: 50395


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "== Target image files =="
find images/universal/training/th06-cpu-torch210-py312 -maxdepth 1 -type f | sort

echo
echo "== Dockerfile install path =="
sed -n '1,120p' images/universal/training/th06-cpu-torch210-py312/Dockerfile

echo
echo "== pyproject excerpt =="
sed -n '1,120p' images/universal/training/th06-cpu-torch210-py312/pyproject.toml

echo
echo "== requirements excerpt around aiohttp =="
rg -n -C2 '^aiohttp==|aiohttp~=|requirements\.txt|uv pip compile|pip install' images/universal/training/th06-cpu-torch210-py312

echo
echo "== README guidance for this image family =="
sed -n '108,116p' images/universal/training/README.md
sed -n '196,205p' images/universal/training/README.md

Repository: opendatahub-io/distributed-workloads

Length of output: 14111


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "== Target image files =="
find images/universal/training/th06-cpu-torch210-py312 -maxdepth 1 -type f | sort

echo
echo "== Dockerfile install path =="
sed -n '1,120p' images/universal/training/th06-cpu-torch210-py312/Dockerfile

echo
echo "== pyproject excerpt =="
sed -n '1,120p' images/universal/training/th06-cpu-torch210-py312/pyproject.toml

echo
echo "== requirements excerpt around aiohttp =="
rg -n -C2 '^aiohttp==|aiohttp~=|requirements\.txt|uv pip compile|pip install' images/universal/training/th06-cpu-torch210-py312

echo
echo "== README guidance for this image family =="
sed -n '108,116p' images/universal/training/README.md
sed -n '196,205p' images/universal/training/README.md

Repository: opendatahub-io/distributed-workloads

Length of output: 14111


Regenerate requirements.txt with the aiohttp bump images/universal/training/th06-cpu-torch210-py312/Dockerfile installs from images/universal/training/th06-cpu-torch210-py312/requirements.txt, and that lockfile still pins aiohttp==3.13.5. The pyproject.toml change to aiohttp~=3.14.0 does not reach the image build, so CVE-2026-34993 stays in the shipped artifact and the split lockfile violates CWE-829. Update the lockfile in the same change or switch the build to install from pyproject.toml.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@images/universal/training/th06-cpu-torch210-py312/pyproject.toml` at line 52,
The aiohttp version bump in pyproject.toml is not reflected in the image build
because Dockerfile installs from requirements.txt, which still pins the older
aiohttp release. Regenerate requirements.txt so it matches the new
aiohttp~=3.14.0 constraint, or change the build flow to install from
pyproject.toml instead. Make sure the updated lockfile stays in sync with the
dependency declaration used by the th06-cpu-torch210-py312 training image.

Source: Path instructions

@sutaakar sutaakar closed this Jun 29, 2026
@sutaakar sutaakar deleted the autofix/rhoaieng-66017 branch June 29, 2026 15:27
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.

3 participants