Skip to content

Release Python Oracle KMS Storage v1.1.0 - #965

Merged
maksimu merged 1 commit into
masterfrom
release/storage/python/oracle-kms/v1.1.0
Jul 22, 2026
Merged

maksimu merged 1 commit into
masterfrom
release/storage/python/oracle-kms/v1.1.0

Conversation

@stas-schaller

@stas-schaller stas-schaller commented Mar 9, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

Release branch for v1.1.0: security hardening (CVE-2026-26007, AES-GCM nonce correction), eight correctness fixes from a GCP-parity audit, and a Python floor raise to 3.9.

Changes

Bug Fixes

  • CVE-2026-26007 (KSM-834): cryptography floor raised to >=46.0.5 — ECDH subgroup attack on SECT curves (CVSS 8.2)
  • AES-GCM nonce + hash (KSM-954): nonce corrected from 128-bit (pycryptodome default) to 96-bit per NIST SP 800-38D; config change detection switched from MD5 to SHA-256; existing encrypted blobs remain readable
  • Silent plaintext write at init (KSM-950): __init__ no longer writes {} to disk before encryption succeeds; KMS failures during initial get_key/encrypt_buffer now propagate
  • Silent KMS failure in encrypt/decrypt (KSM-951): encrypt_buffer() and decrypt_buffer() now raise on KMS error instead of returning empty bytes/string
  • delete_all() left file on disk (KSM-952): now calls os.remove() instead of re-encrypting an empty config
  • set() silently diverged on read-only file (KSM-953): PermissionError now propagates; in-memory and disk state stay consistent
  • Live reference from read_storage() (KSM-955): returns a defensive copy; decrypt_config() default changed from autosave=True to autosave=False
  • No thread safety (KSM-956): OracleKeyValueStorage now uses an internal threading.RLock for set(), delete(), change_key(), and decrypt_config()
  • self.config = None after empty bootstrap (KSM-957): load_config() no longer leaves config as None after parsing a plaintext {} init file; subsequent get/set/delete no longer crash with TypeError
  • Effective Python floor understated (KSM-958): requires-python tightened to >=3.9.2; cryptography>=46.0.5 excludes 3.9.0 and 3.9.1 via PyPI markers — pip now rejects those versions with a clear error instead of an opaque resolver failure

Maintenance

  • KSM-949: Python floor raised 3.6 → 3.9; Python 3.13 classifier added; 3.6/3.7/3.8 classifiers removed
  • keeper-secrets-manager-core floor raised from >=16.6.6 to >=17.2.1
  • oci floor updated with version markers: >=2.167.3,<2.168.2 on Python 3.9, >=2.174.0 on 3.10+; required to unlock cryptography>=46.0.5 (older oci capped cryptography<46.0.0)
  • pycryptodome floor raised to >=3.21.0; requests to >=2.32.0 (CVE-2026-47081); urllib3 to >=2.6.3
  • Publish workflow updated to GCP v1.1.0 parity: matrix test gate (3.9–3.13), PyPI OIDC trusted publishing, SHA-pinned actions, publish toggle, SBOM generation
  • New matrix CI workflow added for PR/push coverage on Python 3.9–3.13

Breaking Changes

  • Python 3.6, 3.7, and 3.8 are no longer supported. Pin to keeper-secrets-manager-storage-oracle-kms<1.1.0 to remain on a supported version.
  • decrypt_config() default changed: autosave now defaults to False (was True). Pass autosave=True explicitly to preserve the previous behavior (KSM-955).

Related Issues

KSM-834, KSM-949, KSM-950, KSM-951, KSM-952, KSM-953, KSM-954, KSM-955, KSM-956, KSM-957, KSM-958

@socket-security

socket-security Bot commented Mar 9, 2026 •

Copy link
Copy Markdown

@stas-schaller stas-schaller changed the title Release keeper-secrets-manager-storage-oracle-kms v1.1.0 Release Python Oracle KMS Storage v1.1.0 Mar 9, 2026
@stas-schaller
stas-schaller force-pushed the release/storage/python/oracle-kms/v1.1.0 branch from 81b1e69 to 4599784 Compare March 10, 2026 15:15
@stas-schaller
stas-schaller force-pushed the release/storage/python/oracle-kms/v1.1.0 branch from 4599784 to 060c76a Compare March 27, 2026 18:31
@stas-schaller
stas-schaller force-pushed the release/storage/python/oracle-kms/v1.1.0 branch from 060c76a to fe4556f Compare April 9, 2026 19:39
@stas-schaller
stas-schaller force-pushed the release/storage/python/oracle-kms/v1.1.0 branch from fe4556f to 0e862c1 Compare May 12, 2026 16:14
Comment thread sdk/python/storage/keeper_secrets_manager_storage_oracle_kms/requirements.txt Outdated
Comment thread .github/workflows/publish.pypi.sdk.storage.oracle.kms.yml Outdated
Comment thread .github/workflows/publish.pypi.sdk.storage.oracle.kms.yml Outdated
Comment thread .github/workflows/publish.pypi.sdk.storage.oracle.kms.yml Outdated
Comment thread .github/workflows/publish.pypi.sdk.storage.oracle.kms.yml Outdated

@claude claude 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.

⚠️ Code review skipped — your organization has reached its monthly code review spending cap.

An organization admin can view or raise the cap at claude.ai/admin-settings/claude-code. The cap resets at the start of the next billing period.

Once the cap resets or is raised, push a new commit or reopen this pull request to trigger a review.

@claude claude 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.

⚠️ Code review skipped — your organization has reached its monthly code review spending cap.

An organization admin can view or raise the cap at claude.ai/admin-settings/claude-code. The cap resets at the start of the next billing period.

Once the cap resets or is raised, push a new commit or reopen this pull request to trigger a review.

…ge-oracle-kms v1.1.0

- Raise Python floor to 3.9.2; Core SDK dependency to >=17.2.1
- Fix AES-GCM nonce from 128-bit to 96-bit per NIST SP 800-38D (KSM-954)
- Replace MD5 with SHA-256 for config change detection (KSM-954)
- Fix plaintext {} written before encryption at init (KSM-950)
- Fix encrypt/decrypt silently returning empty on KMS error (KSM-951)
- Fix delete_all() leaving credential file on disk when KMS unavailable (KSM-952)
- Fix set() silently diverging on read-only config files (KSM-953)
- Fix read_storage() returning live reference; correct autosave default (KSM-955)
- Add thread-safety lock to OracleKeyValueStorage (KSM-956)
- Fix load_config() leaving self.config = None on empty bootstrap (KSM-957)
- Fix requires-python floor to >=3.9.2 (KSM-958)
- Upgrade cryptography to >=46.0.5; fixes CVE-2026-26007 (KSM-834)
- Upgrade urllib3 to 2.6.3, requests to 2.32.4
- Port 23-test suite from GCP patterns; all pass on Python 3.9-3.13
- Rewrite publish workflow with GCP v1.1.0 parity hardening
@stas-schaller
stas-schaller force-pushed the release/storage/python/oracle-kms/v1.1.0 branch from 8ec2a4b to 2608edf Compare May 20, 2026 19:29
@maksimu
maksimu merged commit b64f374 into master Jul 22, 2026
29 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.

3 participants