Pin the dependencies in requirements.txt to the exact package versions currently used by: mainnet1.7.0-beta - #994
Conversation
requirements.txt to the exact package versions currently used by: quarkchaindocker/pyquarkchain:mainnet1.7.0-betarequirements.txt to the exact package versions currently used by: mainnet1.7.0-beta
2e312ee to
3104943
Compare
|
Audit results from pip-audit: |
Cryptography Security Advisory AssessmentThe project currently pins
pyquarkchain uses
The relevant implementation is in Conclusion
This conclusion assumes that pyquarkchain does not later add X.509, PKCS#7/CMS, S/MIME, QUIC, OCSP, CMP, or related OpenSSL functionality. |
|
GHSA-wj6h-64fc-37mp |
|
GHSA-h35f-9h28-mq5c |
I have updated setuptools to 83.0.0 |
|
We may need a summary in the PR description listing which package versions differ from those in mainnet1.7.0-beta and why. |
Add "### Dependency Version and Security Review" to PR description. |
Summary
Pin the dependencies in
requirements.txtto the exact package versions currently used by:quarkchaindocker/pyquarkchain:mainnet1.7.0-betaMotivation
The previous version ranges allowed dependency resolution to change over time, which could produce an environment different from the tested mainnet Docker image.
Using the package versions from
mainnet1.7.0-betaprovides:Changes
requirements.txtwith exact versions from the runningmainnet1.7.0-betacontainer.pyethashpinned to commit:907b7d8064d3be09536e754bbf469b442f2e213dDependency Version and Security Review
Most dependencies are pinned to the versions installed in the
mainnet1.7.0-betaimage.The following packages were reviewed separately because they were either upgraded for security fixes
or retained after confirming that the reported vulnerabilities have no reachable attack path in pyquarkchain.
mainnet1.7.0-betasetuptools82.0.183.0.0GHSA-h35f-9h28-mq5c/CVE-2026-59890. The issue concerns Unicode normalization collisions bypassingMANIFEST.inexclusions when building an sdist on macOS. The current deployment flow is not exposed, but upgrading the build/install tooling is low risk and prevents accidental inclusion of excluded files in future source distributions.setuptoolsis used bysetup.py; it is not used to compileethashorqkchash.aiohttp3.14.13.14.33.14.1is affected by known security advisories, includingPYSEC-2026-3545/CVE-2026-69244.3.14.3contains the corresponding upstream security fixes. The upgrade exposed a test-only port-reuse race, which is addressed by theget_next_port()helper change described below.cryptography46.0.746.0.7cryptographyfor secp256k1 ECDH, AES-CTR/ECB, HMAC, and constant-time comparison, and does not expose the affected certificate, PKCS#7/S/MIME, CMS, QUIC, OCSP/CMP, DHX, or AES-OCB/SIV paths. No reachable attack path was identified in the current code.ecdsa0.19.20.19.20.19.2already fixes the malformed-DER private-key parsing issue described byGHSA-9f5j-8jwj-x28g. The unfixed Minerva advisory (GHSA-wj6h-64fc-37mp) concerns P-256 timing behavior, while pyquarkchain usesSECP256k1and does not use the affectedsign_digest()path. No additional version upgrade is available or required for the current usage.Test fix for aiohttp upgrade from
3.14.1to3.14.3.The upgrade changes the timing of asynchronous connection cleanup and cancellation. As a result, an existing test race is exposed: an old P2P connection may still send its
HELLOpacket after the port is released and reused by a Cluster RPC server, causingKeyError: 0.The previous version usually passed because the old connection was closed before the port was reused. The test helper now prevents port reuse within the same pytest process. No production code changes are required.
Verification
The following verification has been completed:
quarkchaindocker/pyquarkchain:mainnet1.7.0-gammawith the updatedrequirements.txt.mainnet1.7.0-gammaimage and confirmed that it runs and synchronizes with the network.Reviewer Verification
Reviewers can independently verify the change with the following steps:
Start a container using
quarkchaindocker/pyquarkchain:mainnet1.7.0-beta, inspect its installed package versions, and confirm that the direct dependencies match the versions pinned inrequirements.txt.Start a node using
quarkchaindocker/pyquarkchain:mainnet1.7.0-gammaand confirm that it starts successfully, connects to peers, and continues synchronizing blocks without dependency or runtime errors.