Releases: SmartPacts/app-kadena
Release list
v1.3.0 — security hardening + full re-audit
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+)
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 loadApprove 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.