Skip to content

Raise the certifi trust floor (2.9.1) - #197

Merged
rmcdaniel merged 2 commits into
mainfrom
fix/emsign-certifi-floor
Oct 22, 2026
Merged

rmcdaniel merged 2 commits into
mainfrom
fix/emsign-certifi-floor

Conversation

@rmcdaniel

@rmcdaniel rmcdaniel commented Oct 22, 2026 •

Copy link
Copy Markdown
Member

Security fix

Refs durable-workflow/.github#237 and GHSA-6q48-6c7w-9gw2.

Require certifi>=2026.10.19 explicitly. An already installed older certifi currently satisfies httpx's dependency; upgrading this SDK must also upgrade that affected trust bundle. Prepare compatible 2.9.1 metadata and release notes. Normal TLS verification and explicit private-CA configuration remain unchanged.

An isolated install starts with affected certifi==2026.7.22, then installs this candidate: pip removes that version and selects fixed 2026.10.19. Final exact head 46149c1 passes all applicable normal checks: Python 3.10/3.11/3.12, integration, package, lint, mypy, corpus, throughput advisory, central policy, target qualification, developer portal, CodeQL, boundary and Sonar. Sonar reports zero OPEN/CONFIRMED issues.

The additional local Python 3.13 full run is retained as failed: 3123 passed, 107 skipped, four checkout tests and two scanner setups lacked Git, and one prepared-group test missed its callback marker. An unchanged isolated repeat of that entire 21-test group passes; the first full-run callback failure remains unexplained. Local ruff passes. An extra offline packaging attempt lacked setuptools and is runner-blocked; hosted package validation passes. No SDK implementation, deadline, assertion or skip policy was changed for this patch.

The build/install path bootstraps fixed pip trust using the reviewed SHA-pinned action before networked pip installation in CI/docs/publication. The protected PyPI publication job uses short-lived OIDC credentials, with id-token: write confined to that job and no password-secret fallback. Digest-bound producer artifact validation and exact source/version checks remain. The coordinated central policy change is merged; the original preflight failure is preserved and its unchanged-head repeat passes.

The dependency-only candidate 771a3ca first exceeded its unchanged portal limit during Chromium installation; its same-head repeat passed. The final workflow-extension candidate separately encountered stalled Ubuntu package downloads, was canceled before the portal build, and its unchanged-head repeat passed. Those originals remain unsuccessful. No callback assertion, workflow execution budget or browser timeout was relaxed.

Source is ready for merge. Publication remains dependent on the one-time PyPI Trusted Publisher configuration. Do not create the immutable 2.9.1 tag until that configuration is present. Exact PyPI provenance, installed upgrade acceptance and retirement of the old upload token follow successful OIDC publication. This is not evidence of interception, and a caller-supplied SSL context still controls its own trust store.

@sonarqubecloud

Copy link
Copy Markdown

@rmcdaniel

Copy link
Copy Markdown
Member Author

Publication dependency for the prepared OIDC-only workflow: the PyPI project needs a GitHub Trusted Publisher with these exact fields:

  • Project: durable-workflow.
  • Repository owner: durable-workflow.
  • Repository: sdk-python.
  • Workflow filename: publish.yml.
  • Environment: pypi.

The existing upload token receives HTTP 403 from the project management endpoint; it is not a project-settings credential. The account owner has been asked to add the publisher at PyPI project publishing settings. No password/token needs to be shared. This is a registry-side configuration dependency, not a request for routine code review. Normal CI and the other security fixes continue independently. The workflow has no long-lived-token fallback, and the old credential will be revoked only after the first successful OIDC publication is verified.

@rmcdaniel
rmcdaniel marked this pull request as ready for review October 22, 2026 14:04
@rmcdaniel
rmcdaniel merged commit 5cd660f into main Oct 22, 2026
26 of 29 checks passed
@rmcdaniel
rmcdaniel deleted the fix/emsign-certifi-floor branch October 22, 2026 14:06
@rmcdaniel

Copy link
Copy Markdown
Member Author

Merged normally at 5cd660f, exactly the qualified 46149c1 tree. All applicable normal checks pass, including unchanged-source central-policy and portal repeats. The merged remote branch is verified absent.

Source delivery is complete; package delivery remains open on durable-workflow/.github#237. No 2.9.1 tag or PyPI upload has been attempted while the required Trusted Publisher configuration is pending. Once configured, use the maintained OIDC-only publisher, verify published hashes and a real installed upgrade from affected certifi, then retire the old upload credential. Original failures remain unsuccessful.

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