Skip to content

fix: stop returning private key to renderer on export#29

Closed
0x-SquidSol wants to merge 1 commit intonullxnothing:mainfrom
0x-SquidSol:fix/private-key-ipc-exposure
Closed

fix: stop returning private key to renderer on export#29
0x-SquidSol wants to merge 1 commit intonullxnothing:mainfrom
0x-SquidSol:fix/private-key-ipc-exposure

Conversation

@0x-SquidSol
Copy link
Copy Markdown

Summary

  • The wallet:export-private-key IPC handler was returning the raw private key string to the renderer process after already copying it to the clipboard
  • This unnecessarily exposed key material across the IPC bridge where it could be captured by compromised renderer code or DevTools
  • The handler now returns a success flag; the renderer shows a clipboard confirmation message instead of the plaintext key

Test plan

  • Export a private key — verify it copies to clipboard and shows confirmation message
  • Verify clipboard auto-clears after 30 seconds
  • Confirm key is no longer visible in DevTools Network/IPC inspection
  • Run pnpm run typecheck — passes clean
  • Run pnpm run test — all wallet tests pass (19/19)

The export-private-key IPC handler was returning the raw key string
back to the renderer process after copying it to the clipboard. This
unnecessarily exposed private key material across the IPC bridge.

The handler now returns a success flag and the renderer displays a
clipboard confirmation message instead of the plaintext key.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@nullxnothing
Copy link
Copy Markdown
Owner

The runtime behavior here makes sense, but the renderer contract also needs to be updated. wallet:export-private-key would now return rue, while src/types/daemon.d.ts still declares �xportPrivateKey: (walletId: string) => Promise<IpcResponse>. Please update the preload/type surface so the IPC contract matches the new behavior.

@nullxnothing
Copy link
Copy Markdown
Owner

Closed as superseded by #75, which reapplies the corrected security hardening on top of current main. This avoids merging stale/conflicted branches and preserves the fixes with passing CI/CodeQL.

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