Skip to content

Patch vulnerable dependencies across yDaemon - #568

Open
murderteeth wants to merge 4 commits into
mainfrom
fix/dependency-security
Open

Patch vulnerable dependencies across yDaemon#568
murderteeth wants to merge 4 commits into
mainfrom
fix/dependency-security

Conversation

@murderteeth

Copy link
Copy Markdown
Collaborator

Summary

Update the Go toolchain and vulnerable dependencies across the API and metadata tooling. The resulting versions fall outside the affected ranges of all 37 Dependabot alerts reviewed on September 7; GitHub will need to rescan after merge to close them.

The changes are split into four commits:

  • Require Go 1.26.8, update the Docker image, and derive the CI Go version from go.mod.
  • Patch Ethereum, PostgreSQL, CORS, WebSocket, Go networking/crypto/text, and OpenTelemetry dependencies. Replace geth's removed integer constants with standard-library equivalents and add API/binding regression tests.
  • Upgrade Ajv and its format plugin, remove unused Cloudflare/Codeowners dependencies, and use the existing address helper instead of the full ethers SDK. Pin patched bn.js and CMS ws versions and refresh both Bun lockfiles.
  • Upgrade PyCryptodome and eth-utils, document Python 3.10+, and add EIP-55 compatibility tests.

How to review

Review the commits in order. Focus on the resolved Go dependency graph, the two integer-constant import changes, and the JavaScript dependency removals/overrides. The new Go tests exercise API JSON/CORS behavior and generated ERC-20 bindings over HTTP and WebSocket, including historical calls and large integer values.

Test plan

  • Native and Docker builds; go mod verify.
  • govulncheck -show verbose ./...: no vulnerable called symbols or imported packages.
  • API and binding regression tests; remaining Ethereum tests with the pre-existing uncompilable PPS test file excluded.
  • Frozen installs and clean Bun audits in both package roots; current token/vault validators pass.
  • CMS TypeScript check and a local patched WebSocket client/server round trip.
  • Python checksum tests against eight canonical EIP-55 vectors and an invalid checksum; clean pip-audit of the resolved environment.
  • Full Go suite: 13 packages pass, but common/ethereum and external/vaults still have the same test compilation failures reproduced before the dependency upgrades (missing PPS arguments and obsolete TStrategy references).
  • Live indexing/database smoke test and CMS comparison against the separate Katana instance on port 3001.

Legacy full metadata walkers also assume obsolete snapshot shapes (addresses / per-file $schema); current CI validators and the focused checksum tests pass.

Risk / impact

The main compatibility risk is the coordinated Ethereum/PostgreSQL dependency upgrade; local transport tests cover bindings, while live indexing and database behavior still need review. Builds now require Go 1.26.8, and Python validation requires Python 3.10+.

govulncheck retains one module-only advisory, GO-2026-5932, for deprecated x/crypto/openpgp. The application does not import that package, and the advisory has no patched version.

murderteeth and others added 4 commits September 7, 2026 22:26
Require Go 1.26.8 for local and production builds, use go.mod for
CI toolchain selection, and update the Docker build image. Build
without rewriting the dependency graph inside the image.

Verified that the existing application builds with Go 1.26.8.

Co-Authored-By: OpenAI Codex <noreply@openai.com>
Update Ethereum, PostgreSQL, CORS and WebSocket libraries, along with
Go networking, cryptography, text and OpenTelemetry dependencies.
Replace removed geth integer constants with the standard math package.

Add API and generated ERC-20 binding regression checks, including
HTTP and WebSocket transport and historical calls with large integers.

Build and focused tests pass. Govulncheck reports no vulnerable imported
packages or called symbols; unused OpenPGP retains an unpatched advisory.
The full suite has the same two pre-existing test compilation failures.

Co-Authored-By: OpenAI Codex <noreply@openai.com>
Upgrade Ajv and its format plugin. Use the existing address helper
instead of importing the full ethers SDK, and remove unused Cloudflare
and Codeowners dependencies. Pin patched bn.js and CMS WebSocket
versions through overrides and refresh both Bun lockfiles.

Both Bun audits, frozen installs, token/vault validation, CMS type
checking, and a patched WebSocket client/server smoke test pass.

Co-Authored-By: OpenAI Codex <noreply@openai.com>
Update PyCryptodome and eth-utils, and document the Python 3.10 minimum.
The newer eth-utils also removes its obsolete pkg_resources import.
Add EIP-55 vectors and an invalid-checksum case to verify compatibility.

Checksum unit tests and pip-audit pass. The legacy full metadata walk
still assumes the old strategy JSON shape and raises KeyError.

Co-Authored-By: OpenAI Codex <noreply@openai.com>
@murderteeth
murderteeth marked this pull request as ready for review September 8, 2026 01:21
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.

1 participant