From d10792debbd2cdb47b0e7488ba3561683a989aa6 Mon Sep 17 00:00:00 2001 From: 0xPxt Date: Tue, 4 Feb 2025 11:12:54 +0100 Subject: [PATCH 1/3] fix audit findings --- src/random_oracle_input.c | 9 +++++++-- src/random_oracle_input.h | 2 +- src/sign_msg.c | 11 +++++++++-- src/sign_msg_bagl.c | 4 ++++ src/sign_msg_nbgl.c | 4 ++++ src/utils.c | 5 ++++- 6 files changed, 29 insertions(+), 6 deletions(-) diff --git a/src/random_oracle_input.c b/src/random_oracle_input.c index 9608856..7be35c4 100644 --- a/src/random_oracle_input.c +++ b/src/random_oracle_input.c @@ -82,11 +82,15 @@ void roinput_add_bytes(ROInput *input, const uint8_t *bytes, size_t len) input->bits_len += 8 * len; } -void roinput_add_bytes_le(ROInput *input, const uint8_t *bytes, size_t len) +int roinput_add_bytes_le(ROInput *input, const uint8_t *bytes, size_t len) { + if (input == NULL || bytes == NULL) { + return -1; + } + size_t remaining = (int)input->bits_capacity * 8 - (int)input->bits_len; if (remaining < 8 * len) { - return; + return -1; } // LSB bits size_t k = input->bits_len; @@ -98,6 +102,7 @@ void roinput_add_bytes_le(ROInput *input, const uint8_t *bytes, size_t len) } } input->bits_len += 8 * len; + return 0; } void roinput_add_uint32(ROInput *input, const uint32_t x) diff --git a/src/random_oracle_input.h b/src/random_oracle_input.h index bc16cb9..275747c 100644 --- a/src/random_oracle_input.h +++ b/src/random_oracle_input.h @@ -25,7 +25,7 @@ void roinput_add_field(ROInput *input, const Field a); void roinput_add_scalar(ROInput *input, const Scalar a); void roinput_add_bit(ROInput *input, const bool b); void roinput_add_bytes(ROInput *input, const uint8_t *bytes, size_t len); -void roinput_add_bytes_le(ROInput *input, const uint8_t *bytes, size_t len); +int roinput_add_bytes_le(ROInput *input, const uint8_t *bytes, size_t len); void roinput_add_uint32(ROInput *input, const uint32_t x); void roinput_add_uint64(ROInput *input, const uint64_t x); int roinput_derive_message(uint8_t *out, const size_t len, const Keypair *kp, const ROInput *msg, const uint8_t network_id); diff --git a/src/sign_msg.c b/src/sign_msg.c index 360ce0d..5ef988c 100644 --- a/src/sign_msg.c +++ b/src/sign_msg.c @@ -43,14 +43,21 @@ void sign_message(uint8_t *dataBuffer, uint8_t dataLength) } } - generate_keypair(&kp, account); + if (roinput_add_bytes_le(&roinput, dataBuffer + MSG_OFFSET, dataLength - (ACCOUNT_LENGTH + NETWORK_LENGTH)) < 0) { + THROW(INVALID_PARAMETER); + } - roinput_add_bytes_le(&roinput, dataBuffer + MSG_OFFSET, dataLength - (ACCOUNT_LENGTH + NETWORK_LENGTH)); + generate_keypair(&kp, account); if (!sign(&sig, &kp, &roinput, network)) { + // Clear secret from stack + memset(&kp, 0, sizeof(kp)); THROW(INVALID_PARAMETER); } + // Clear secret from stack + memset(&kp, 0, sizeof(kp)); + memmove(G_io_apdu_buffer, &sig, sizeof(sig)); sendResponse(sizeof(sig), true); diff --git a/src/sign_msg_bagl.c b/src/sign_msg_bagl.c index df3a5c6..d7ed3aa 100644 --- a/src/sign_msg_bagl.c +++ b/src/sign_msg_bagl.c @@ -96,6 +96,10 @@ UX_FLOW(ux_sign_msg_flow_testnet, void ui_sign_msg(uint8_t *dataBuffer, uint8_t dataLength) { + if (dataBuffer == NULL) { + THROW(INVALID_PARAMETER); + } + _msgData.dataBufLength = dataLength; memcpy(_msgData.msgDataBuf, (char *) dataBuffer, _msgData.dataBufLength); diff --git a/src/sign_msg_nbgl.c b/src/sign_msg_nbgl.c index fa5a65f..a93e764 100644 --- a/src/sign_msg_nbgl.c +++ b/src/sign_msg_nbgl.c @@ -62,6 +62,10 @@ static void prepare_msg_context(void) { void ui_sign_msg(uint8_t *dataBuffer, uint8_t dataLength) { + if (dataBuffer == NULL) { + THROW(INVALID_PARAMETER); + } + _msgData.dataBufLength = dataLength; memcpy(_msgData.msgDataBuf, (char *) dataBuffer, _msgData.dataBufLength); diff --git a/src/utils.c b/src/utils.c index 7956e1e..d7b7bbd 100644 --- a/src/utils.c +++ b/src/utils.c @@ -32,6 +32,9 @@ int b58_encode(const unsigned char *in, unsigned char length, // Input buffer too big return -1; } + if (length > (sizeof(buffer) / 2)) { + return -1; + } memcpy(tmp, in, length); while ((zeroCount < length) && (tmp[zeroCount] == 0)) { ++zeroCount; @@ -170,7 +173,7 @@ uint64_t read_uint64_be(const uint8_t *buffer) char *amount_to_string(char *buf, const size_t len, uint64_t amount) { - // COIN = 1.000 000 000; + // COIN is 1.000 000 000; size_t mantissa_len = 1; for (uint64_t value = amount, _len = 9; value && _len > 0; value /= 10, _len--) { if (value % 10 != 0) { From 026ee3ad7eff1a23b8d69f64e451ab4b7e792406 Mon Sep 17 00:00:00 2001 From: 0xPxt Date: Tue, 4 Feb 2025 11:14:58 +0100 Subject: [PATCH 2/3] Bump Version --- Makefile | 2 +- tests_zemu/tests/standard.test.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index 57f78ee..1531bc6 100644 --- a/Makefile +++ b/Makefile @@ -27,7 +27,7 @@ GIT_DESCRIBE=$(shell git describe --tags --abbrev=8 --always --long --dirty 2>/d VERSION_TAG=$(shell echo $(GIT_DESCRIBE) | sed 's/^v//g') APPVERSION_M=1 APPVERSION_N=4 -APPVERSION_P=0 +APPVERSION_P=1 APPVERSION=$(APPVERSION_M).$(APPVERSION_N).$(APPVERSION_P) APPNAME = "Mina" diff --git a/tests_zemu/tests/standard.test.ts b/tests_zemu/tests/standard.test.ts index 659bc8a..46df385 100644 --- a/tests_zemu/tests/standard.test.ts +++ b/tests_zemu/tests/standard.test.ts @@ -69,7 +69,7 @@ describe('Standard', function () { const resp = await app.getAppVersion() console.log(resp) - expect(resp.version).toEqual('1.4.0') + expect(resp.version).toEqual('1.4.1') } finally { await sim.close() } From 4fca46399ba81374041fdd06a3e16b2cb67eeb58 Mon Sep 17 00:00:00 2001 From: 0xPxt Date: Tue, 4 Feb 2025 15:46:51 +0100 Subject: [PATCH 3/3] Upload Snapshots --- tests_zemu/snapshots/fl-mainmenu/00001.png | Bin 7842 -> 7549 bytes tests_zemu/snapshots/s-mainmenu/00001.png | Bin 331 -> 320 bytes tests_zemu/snapshots/s-mainmenu/00009.png | Bin 331 -> 320 bytes tests_zemu/snapshots/sp-mainmenu/00001.png | Bin 355 -> 348 bytes tests_zemu/snapshots/sp-mainmenu/00009.png | Bin 355 -> 348 bytes tests_zemu/snapshots/st-mainmenu/00001.png | Bin 12689 -> 12447 bytes tests_zemu/snapshots/x-mainmenu/00001.png | Bin 355 -> 348 bytes tests_zemu/snapshots/x-mainmenu/00009.png | Bin 355 -> 348 bytes 8 files changed, 0 insertions(+), 0 deletions(-) diff --git a/tests_zemu/snapshots/fl-mainmenu/00001.png b/tests_zemu/snapshots/fl-mainmenu/00001.png index bd9f8a79a54bba726ecc16c4cca91a7bd5a443cf..0f5288516778106d8f9f8d3f553be45191c933ce 100644 GIT binary patch literal 7549 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 literal 7842 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 diff --git a/tests_zemu/snapshots/s-mainmenu/00001.png b/tests_zemu/snapshots/s-mainmenu/00001.png index 0500555cfa79ffcdfb3f79e8819c9083afa5338f..37359980286fc12dca155f2b73e9bb0483211eeb 100644 GIT binary patch delta 293 zcmV+=0owk{0>A>0B!34vG={K}wpt zQc)2?2q7eleUp7V8Qw8`Y)dDd#=mI-q0|5+s zL?_^&Qd(t2PCAUP@ph=9iU%+NoPbi2wkjKP%b{$ms`moHbbnU>3~11ntg;GH-!70X zXk1FK{~RY#?ZGfW)u{%hHF-Bn`_xn1dx}f8dvr27@>2Z?xFS>iX`Dz+^(R9QB4HPb zB-wj-o*4fqSv8lcUGz5eH1 rz6FiMMw9IX+#WH55JCtcguw6uzY>)%s-mtC00000NkvXXu0mjfWfFj| delta 304 zcmV-00nh%x0?PuBB!3b~L_t(|ob8#-4udcZgUvMF|A9HML#HU}NXoQ{I>_ItDlLla zkp2J&A%qaq*f;FkLHoy772!EMfWNY=vm^K#Vgr0GH)Zz?%lhuOMmGS?1{>ge{6qr7 z9GawbZ{Dc`y@I zp_vq0htFJa=KEAC*y0(`!p(z@RL<`+Xy7=AMGOy6Wp5x1ZUb`atB=|S+=8+O*z#~@ zogjw$Iy%7@pDA0^B4WD#S?323ZbO9-LI@!Q0N@2biIY(t8g=LZ0000A>0B!34vG={K}wpt zQc)2?2q7eleUp7V8Qw8`Y)dDd#=mI-q0|5+s zL?_^&Qd(t2PCAUP@ph=9iU%+NoPbi2wkjKP%b{$ms`moHbbnU>3~11ntg;GH-!70X zXk1FK{~RY#?ZGfW)u{%hHF-Bn`_xn1dx}f8dvr27@>2Z?xFS>iX`Dz+^(R9QB4HPb zB-wj-o*4fqSv8lcUGz5eH1 rz6FiMMw9IX+#WH55JCtcguw6uzY>)%s-mtC00000NkvXXu0mjfWfFj| delta 304 zcmV-00nh%x0?PuBB!3b~L_t(|ob8#-4udcZgUvMF|A9HML#HU}NXoQ{I>_ItDlLla zkp2J&A%qaq*f;FkLHoy772!EMfWNY=vm^K#Vgr0GH)Zz?%lhuOMmGS?1{>ge{6qr7 z9GawbZ{Dc`y@I zp_vq0htFJa=KEAC*y0(`!p(z@RL<`+Xy7=AMGOy6Wp5x1ZUb`atB=|S+=8+O*z#~@ zogjw$Iy%7@pDA0^B4WD#S?323ZbO9-LI@!Q0N@2biIY(t8g=LZ0000x0ZizNefwd&~)>?!~b~eHM}>)O>N$BIq9a^>V4)HqTij` z$H4sf#H^s7XUb1K7TaQb>fXQ2dtPp{$z}BEE1cz5teC%g@vCcbkM@RXPp&vDyGZ#} zo6j%%%|fOx|4W!|IHH%*c|Xznqer6?XxDAoqgV=S##71@88Dj6ODt`x~2#CL7$V3=BWC^*c75Joe|y QksTmWPgg&ebxsLQ0GZL0N&o-= delta 328 zcmcb^^q6UaO1+k+i(^Q|oVPb)`I;33+yXC^sK2TA+&tZGf}h4IkNOg}s`HZr4W3AM zc?B~uAV9Z}px{lp`pVUjclNS>@U~2Uuee7ykMY&cm`S1&=M-D6XZLLmnd&HgCH+;O zAXnLExdV2+oBYi7hAq8dw%6KZuNUt*$*<~v>gyR(y{>J()M1^wEZ6vTwd~@j>;7;j zY*5bj5;eZ>EI56^M~&*&=f9=g__T$!ptARJ$t>o|TW>?-->Tl*{pzX0y_a!|(y#E& z{Gz{E*z{$5k5omH=%*vaH!jzF?8_;*^?s!~&#U|?Ki&vbYu^4XS?KadD6CyR;PX3& z6&F}H=uW7c<+zI>d&X9VUlkISelB8F*0%!m?XuUn7MlJ~?=^p5DuVEFL;W{~yv65F TMBR0M3=;Kp^>bP0l+XkKvR9CE diff --git a/tests_zemu/snapshots/sp-mainmenu/00009.png b/tests_zemu/snapshots/sp-mainmenu/00009.png index 12341d7d0378191a9eefb81e77e9f910ef6a8af1..8507b09929d05534e0143f7013b7b1f04a550bf7 100644 GIT binary patch delta 321 zcmaFNbcbnzO1-kDi(^Q|oVPc;`3@`axCVxls=ulCyywlnLQIwMQcafi-gFVxjtj;M zmuNCFz(K=oAwj{&IQg0o5&zemb2Ojl*tV|!sq3(Jn)fE9NyU2Kzb<+?VUx0ZizNefwd&~)>?!~b~eHM}>)O>N$BIq9a^>V4)HqTij` z$H4sf#H^s7XUb1K7TaQb>fXQ2dtPp{$z}BEE1cz5teC%g@vCcbkM@RXPp&vDyGZ#} zo6j%%%|fOx|4W!|IHH%*c|Xznqer6?XxDAoqgV=S##71@88Dj6ODt`x~2#CL7$V3=BWC^*c75Joe|y QksTmWPgg&ebxsLQ0GZL0N&o-= delta 328 zcmcb^^q6UaO1+k+i(^Q|oVPb)`I;33+yXC^sK2TA+&tZGf}h4IkNOg}s`HZr4W3AM zc?B~uAV9Z}px{lp`pVUjclNS>@U~2Uuee7ykMY&cm`S1&=M-D6XZLLmnd&HgCH+;O zAXnLExdV2+oBYi7hAq8dw%6KZuNUt*$*<~v>gyR(y{>J()M1^wEZ6vTwd~@j>;7;j zY*5bj5;eZ>EI56^M~&*&=f9=g__T$!ptARJ$t>o|TW>?-->Tl*{pzX0y_a!|(y#E& z{Gz{E*z{$5k5omH=%*vaH!jzF?8_;*^?s!~&#U|?Ki&vbYu^4XS?KadD6CyR;PX3& z6&F}H=uW7c<+zI>d&X9VUlkISelB8F*0%!m?XuUn7MlJ~?=^p5DuVEFL;W{~yv65F TMBR0M3=;Kp^>bP0l+XkKvR9CE diff --git a/tests_zemu/snapshots/st-mainmenu/00001.png b/tests_zemu/snapshots/st-mainmenu/00001.png index 1043cfb3fa1cd700b4bf2c21fc067c1432042516..980fee9b66fbedf29bd240969f82c63dd2316a6f 100644 GIT binary patch literal 12447 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 DY3`9R literal 12689 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 diff --git a/tests_zemu/snapshots/x-mainmenu/00001.png b/tests_zemu/snapshots/x-mainmenu/00001.png index 12341d7d0378191a9eefb81e77e9f910ef6a8af1..8507b09929d05534e0143f7013b7b1f04a550bf7 100644 GIT binary patch delta 321 zcmaFNbcbnzO1-kDi(^Q|oVPc;`3@`axCVxls=ulCyywlnLQIwMQcafi-gFVxjtj;M zmuNCFz(K=oAwj{&IQg0o5&zemb2Ojl*tV|!sq3(Jn)fE9NyU2Kzb<+?VUx0ZizNefwd&~)>?!~b~eHM}>)O>N$BIq9a^>V4)HqTij` z$H4sf#H^s7XUb1K7TaQb>fXQ2dtPp{$z}BEE1cz5teC%g@vCcbkM@RXPp&vDyGZ#} zo6j%%%|fOx|4W!|IHH%*c|Xznqer6?XxDAoqgV=S##71@88Dj6ODt`x~2#CL7$V3=BWC^*c75Joe|y QksTmWPgg&ebxsLQ0GZL0N&o-= delta 328 zcmcb^^q6UaO1+k+i(^Q|oVPb)`I;33+yXC^sK2TA+&tZGf}h4IkNOg}s`HZr4W3AM zc?B~uAV9Z}px{lp`pVUjclNS>@U~2Uuee7ykMY&cm`S1&=M-D6XZLLmnd&HgCH+;O zAXnLExdV2+oBYi7hAq8dw%6KZuNUt*$*<~v>gyR(y{>J()M1^wEZ6vTwd~@j>;7;j zY*5bj5;eZ>EI56^M~&*&=f9=g__T$!ptARJ$t>o|TW>?-->Tl*{pzX0y_a!|(y#E& z{Gz{E*z{$5k5omH=%*vaH!jzF?8_;*^?s!~&#U|?Ki&vbYu^4XS?KadD6CyR;PX3& z6&F}H=uW7c<+zI>d&X9VUlkISelB8F*0%!m?XuUn7MlJ~?=^p5DuVEFL;W{~yv65F TMBR0M3=;Kp^>bP0l+XkKvR9CE diff --git a/tests_zemu/snapshots/x-mainmenu/00009.png b/tests_zemu/snapshots/x-mainmenu/00009.png index 12341d7d0378191a9eefb81e77e9f910ef6a8af1..8507b09929d05534e0143f7013b7b1f04a550bf7 100644 GIT binary patch delta 321 zcmaFNbcbnzO1-kDi(^Q|oVPc;`3@`axCVxls=ulCyywlnLQIwMQcafi-gFVxjtj;M zmuNCFz(K=oAwj{&IQg0o5&zemb2Ojl*tV|!sq3(Jn)fE9NyU2Kzb<+?VUx0ZizNefwd&~)>?!~b~eHM}>)O>N$BIq9a^>V4)HqTij` z$H4sf#H^s7XUb1K7TaQb>fXQ2dtPp{$z}BEE1cz5teC%g@vCcbkM@RXPp&vDyGZ#} zo6j%%%|fOx|4W!|IHH%*c|Xznqer6?XxDAoqgV=S##71@88Dj6ODt`x~2#CL7$V3=BWC^*c75Joe|y QksTmWPgg&ebxsLQ0GZL0N&o-= delta 328 zcmcb^^q6UaO1+k+i(^Q|oVPb)`I;33+yXC^sK2TA+&tZGf}h4IkNOg}s`HZr4W3AM zc?B~uAV9Z}px{lp`pVUjclNS>@U~2Uuee7ykMY&cm`S1&=M-D6XZLLmnd&HgCH+;O zAXnLExdV2+oBYi7hAq8dw%6KZuNUt*$*<~v>gyR(y{>J()M1^wEZ6vTwd~@j>;7;j zY*5bj5;eZ>EI56^M~&*&=f9=g__T$!ptARJ$t>o|TW>?-->Tl*{pzX0y_a!|(y#E& z{Gz{E*z{$5k5omH=%*vaH!jzF?8_;*^?s!~&#U|?Ki&vbYu^4XS?KadD6CyR;PX3& z6&F}H=uW7c<+zI>d&X9VUlkISelB8F*0%!m?XuUn7MlJ~?=^p5DuVEFL;W{~yv65F TMBR0M3=;Kp^>bP0l+XkKvR9CE