AI-generated analysisPublished automatically and not human-verified. Validated context appears in community notes below.
← Watch feed
Low 40 Bitcoin

libjade: add camera/input/nvs support, refactor

Public commit record

What the developer wrote

Authored by Daniel Newton

78/100 · Adequate
libjade: add camera/input/nvs support, refactor

Use libjade-specific rpc calls to handle gui/input/nvs and camera
support. Update the gui example to allow exercising nvs/camera
functionality and optionally running libjade in daemon mode (i.e.
out-of-process).

Add a python console to the gui example to allow programmatic
control of the running jade instance for testing.

Remove config for building without gui support; gui code is now always
built-in regardless of whether a client chooses to fetch the screen
contents for display or not.

Co-authored-by: Jon Griffiths <jon_p_griffiths@yahoo.com>
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Mentions testing or verification
The short version

What changed, and why it matters

This commit is a large feature/refactor patch for Blockstream Jade's libjade (a desktop emulator of the Jade hardware wallet). It adds RPC endpoints that let a host application read the emulated device's screen, push fake button presses, read/write all emulated flash storage (NVS), and feed camera frames. The README explicitly warns that these RPCs mean 'a libjade instance is NOT SECURE FROM EXTERNAL APPLICATIONS, and that SECRET DATA CAN BE READ FROM THE RUNNING FIRMWARE.' The change is intended for development/testing only, but it removes the option to build without GUI support and makes the GUI code always compiled in. The security relevance is therefore primarily about increased attack surface and accidental misuse of a testing tool, rather than a vulnerability in production hardware wallets.

Recommended action

Treat this commit as a deliberate expansion of libjade's insecure-by-design testing surface. Users should ensure libjade is only used in isolated development/test environments, never with real seed phrases or private keys. Review access controls on the daemon socket/serial interface and on the nvs_flash.bin file. If a production build of Jade firmware is derived from this code, verify that the libjade-specific RPCs and NVS/camera stubs are not compiled into real hardware releases. No code fix is required for the stated use case, but documentation warnings should be heeded.

Security signals we found

01

New RPC endpoints allow external read/write of emulated NVS storage

02

New RPC endpoints allow external screen capture and synthetic input injection

03

New RPC endpoints allow external camera frame injection

04

README explicitly states the emulated device is not secure from external applications and secret data can be read

05

Build option to compile without GUI support is removed; GUI code is always included

06

Example GUI now includes an interactive Python console with eval/exec of arbitrary commands

07

NVS storage is persisted to a local file (nvs_flash.bin) and loaded/saved via RPC

Risk score

Why this scored 40/100

Our methodology →
Potential impact 8/30
Exploitability 7/25
Stealth signal 6/15
Affected reach 8/15
Confidence 7/10
Evidence quality 4/5
Human-validated context

Community notes

Notes can correct, qualify, or add evidence to the AI analysis. Every note shown here has been validated by a human moderator.

No validated notes yet.

The AI analysis stands alone for now. Submit a note if you can add evidence or important context.