Skip to content

Releases: SmartPacts/app-kadena

v1.3.0 — security hardening + full re-audit

Choose a tag to compare

@DaisukeFlowers DaisukeFlowers released this 23 Jul 02:07

Security- and correctness-hardening release. A fresh, whole-app cold security audit held the entire
signing / derivation / parsing / display surface to submission standard and drove every finding to
zero.

Security fixes (HIGH)

  • Legacy HD-path length overflow — a host-controlled path-component count drove a memory copy into
    the fixed derivation-path global; the count is now bounded (2–5 components) before the copy and the
    received length must cover the path bytes. A short-path copy zeroes the tail for deterministic
    derivation.
  • Transfer-template buffer capacity — the structured-transfer template buffer was registered with
    the wrong (much larger) capacity; it is now registered with its real size, sized to hold the largest
    valid template, and every append is checked so an over-cap input fails closed.
  • Parser item-array out-of-bounds — three wrong-argument-count branches ignored a "too many items"
    signal and could write one past the display function-pointer array; all three now propagate the
    error and the loop guards the index.

Display-integrity / robustness (MED/LOW)

Unknown-capability arguments render length-bounded; oversized gas values reject instead of
mis-displaying; legacy reads are bounded by the received length; transfer type is validated; several
accessor returns checked. The transaction hash is shown as the unpadded base64url request key.

Verification

  • Four cold re-audit passes, 0 open CRIT/HIGH.
  • Full Zemu matrix green (240 tests, all five models, 0 crashes), including new regression cases
    for each fix and a full principal-namespace maximum-size cross-chain transfer.
  • Deterministic builds on all five targets; proven end-to-end on Nano S+ hardware.
  • No APDU / wire-protocol change.

Device hashes (deterministic)

Target Application hash
nanos2 (Nano S+) 068f376be6115e1769952fabb61020ae5070867c9b2299c259f6947c5b5ce1db
nanox dc28a5786a81c2162725eb89dac3433066c37af3b4c7621177c66c4bad32127c
stax 592296023a6098959ff4f3e00889a6fb64c7dcc4a8fab44f367e89a77c9302e0
flex d03d46f36b11d267de05b6f2aba60f6d798faabc1d0970afbe13dec138b1fca3
apex_p 4484159eabe9f65ffa83aaedd7eeb1a3aab3decbaa7cc34988a4bbde5fd535e5

v1.2.1 — API_LEVEL 26 revival (Nano S+)

Choose a tag to compare

@DaisukeFlowers DaisukeFlowers released this 22 Jul 12:29

Kadena app v1.2.1 — API_LEVEL 26 revival (Nano S+)

First installable Kadena app build for current Ledger Nano S+ firmware (OS 1.6.x = API_LEVEL 26).
The last upstream release (v1.2.0) targets API_LEVEL 24 and is rejected by today's OS.

What changed vs v1.2.0

  • Rebuilt from source against the current Ledger SDK (API_LEVEL 26) for all five supported
    devices (Nano S+, Nano X, Stax, Flex, Apex/Gen5).
  • Memory-safety hardening in the transaction-display renderers and the JSON parser (issues
    present in the old official binaries; found in an independent review of the signing/display
    path and fixed here).
  • Full Zemu test matrix green across all five device targets; end-to-end proven on hardware
    (install → derivation → clear-sign + hash-sign → transaction mined).
  • All Ledger CI gates green on this repository, including the mandatory guidelines_enforcer.

Assets (Nano S+ sideload — advanced users)

File SHA-256
installer_s2.sh 428a9ccc5da865b94c4aef91accbfb7650d5368b9c63e662bad751db53d7c223
app.hex 65701676ae571e3f5f905159e67d3880e3a2e64611e00e2b9f69314f3a1f06fc

Expected device-reported application full hash (printed by the loader at install — verify it):

d11a7d4976bebc8448429e54ae09f1c5d2f2a8abaa9da3b142d110ed6e883c05

Reproducible build: ghcr.io/ledgerhq/ledger-app-builder/ledger-app-builder:latest
(SDK v26.5.0), PRODUCTION_BUILD=1 TARGET=nanos2, from this tag. Building twice yields a
byte-identical hash — verify independently.

Install (Nano S+ only)

chmod +x ./installer_s2.sh
./installer_s2.sh load

Approve the unsigned-app prompts on the device; the app reports v1.2.1. Hash-mode signing
requires the "Blind sign" toggle in the app settings (a separate item from "Expert mode").
Sideloading never touches the device OS/Secure Element; ./installer_s2.sh delete removes the app.

Nano X, Stax, Flex and Gen 5 have no sideload path — those devices get the app when it returns to
official availability via the Ledger submission (in preparation).

Originally developed by Zondax (Apache-2.0 — license and copyright preserved). Maintained
continuation by Smart Pacts.