Skip to content
This repository has been archived by the owner on May 21, 2024. It is now read-only.

Commit

Permalink
added ecdsa patch
Browse files Browse the repository at this point in the history
  • Loading branch information
ffulmmatrixbot authored and mwarning committed Jul 10, 2022
1 parent 8811af1 commit 2c1ce1f
Show file tree
Hide file tree
Showing 4 changed files with 103 additions and 1 deletion.
4 changes: 4 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,10 @@ Build commands for the console:
cd feeds/routing
git am --whitespace=nowarn ../../firmware/patches/routing/*.patch
cd ../../

cd feeds/packages
git am --whitespace=nowarn ../../firmware/patches/packages/*.patch
cd ../../

rm -rf firmware tmp

Expand Down
2 changes: 1 addition & 1 deletion files/etc/config/freifunk
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ config settings
option longitude ''
option contact ''
option community 'ulm'
option version '2.3.0'
option version '2.3.1'
option publish_map 'basic'
option allow_access_from 'lan'
option service_link ''
Expand Down
25 changes: 25 additions & 0 deletions files/etc/uci-defaults/50_freifunk-setup
Original file line number Diff line number Diff line change
Expand Up @@ -624,6 +624,12 @@ update_220_to_230() {
cp /rom/etc/uhttpd.key /etc/ 2> /dev/null
}

update_230_to_231() {
# Preserve self signed certificates
cp /rom/etc/uhttpd.crt /etc/ 2> /dev/null
cp /rom/etc/uhttpd.key /etc/ 2> /dev/null
}

start()
{
echo "(I) Start freifunk_setup"
Expand Down Expand Up @@ -658,6 +664,7 @@ start()
update_200_to_210
update_210_to_220
update_220_to_230
update_230_to_231
update_version
;;
0.5.1*)
Expand All @@ -673,6 +680,7 @@ start()
update_200_to_210
update_210_to_220
update_220_to_230
update_230_to_231
update_version
;;
0.6.0*)
Expand All @@ -687,6 +695,7 @@ start()
update_200_to_210
update_210_to_220
update_220_to_230
update_230_to_231
update_version
;;
0.6.1*)
Expand All @@ -700,6 +709,7 @@ start()
update_200_to_210
update_210_to_220
update_220_to_230
update_230_to_231
update_version
;;
0.6.2*)
Expand All @@ -712,6 +722,7 @@ start()
update_200_to_210
update_210_to_220
update_220_to_230
update_230_to_231
update_version
;;
0.6.3*)
Expand All @@ -723,6 +734,7 @@ start()
update_200_to_210
update_210_to_220
update_220_to_230
update_230_to_231
update_version
;;
0.6.4*)
Expand All @@ -733,6 +745,7 @@ start()
update_200_to_210
update_210_to_220
update_220_to_230
update_230_to_231
update_version
;;
0.6.5*)
Expand All @@ -742,6 +755,7 @@ start()
update_200_to_210
update_210_to_220
update_220_to_230
update_230_to_231
update_version
;;
1.0.0*)
Expand All @@ -750,26 +764,37 @@ start()
update_200_to_210
update_210_to_220
update_220_to_230
update_230_to_231
update_version
;;
2.0.0*)
echo "(I) Apply update."
update_200_to_210
update_210_to_220
update_220_to_230
update_230_to_231
update_version
;;
2.1.0*)
echo "(I) Apply update."
update_210_to_220
update_220_to_230
update_230_to_231
update_version
;;
2.2.0*)
echo "(I) Apply update."
update_220_to_230
update_230_to_231
update_version
;;

2.3.0*)
echo "(I) Apply update."
update_230_to_231
update_version
;;

"")
echo "(I) Start initial setup."
initial_setup
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
From: Matthias Schiffer <[email protected]>
Date: Wed, 27 Apr 2022 19:01:39 +0200
Subject: ecdsautils: verify: fix signature verification (CVE-2022-24884)

Signed-off-by: Matthias Schiffer <[email protected]>

diff --git a/utils/ecdsautils/Makefile b/utils/ecdsautils/Makefile
index 7f1c76f0301f56b0a88c1f6a1a0147397fde25c7..5ba893be69d40279cd6f5c9e544e941d0011f451 100644
--- a/utils/ecdsautils/Makefile
+++ b/utils/ecdsautils/Makefile
@@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk

PKG_NAME:=ecdsautils
PKG_VERSION:=0.3.2.20160630
-PKG_RELEASE:=1
+PKG_RELEASE:=2
PKG_REV:=07538893fb6c2a9539678c45f9dbbf1e4f222b46
PKG_MAINTAINER:=Matthias Schiffer <[email protected]>
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
diff --git a/utils/ecdsautils/patches/0001-verify-fix-signature-verification-CVE-2022-24884.patch b/utils/ecdsautils/patches/0001-verify-fix-signature-verification-CVE-2022-24884.patch
new file mode 100644
index 0000000000000000000000000000000000000000..34d80cc201c0e87ca654c3def4fbbbddf622b0ba
--- /dev/null
+++ b/utils/ecdsautils/patches/0001-verify-fix-signature-verification-CVE-2022-24884.patch
@@ -0,0 +1,48 @@
+From 1d4b091abdf15ad7b2312535b5b95ad70f6dbd08 Mon Sep 17 00:00:00 2001
+Message-Id: <1d4b091abdf15ad7b2312535b5b95ad70f6dbd08.1651078760.git.mschiffer@universe-factory.net>
+From: Matthias Schiffer <[email protected]>
+Date: Wed, 20 Apr 2022 22:04:07 +0200
+Subject: [PATCH] verify: fix signature verification (CVE-2022-24884)
+
+Verify that r and s are non-zero. Without these checks, an all-zero
+signature is always considered valid.
+
+While it would be nicer to error out in ecdsa_verify_prepare_legacy()
+already, that would require users of libecdsautil to check a return value
+of the prepare step. To be safe, implement the fix in an API/ABI-compatible
+way that doesn't need changes to the users.
+---
+ src/lib/ecdsa.c | 10 ++++++++++
+ 1 file changed, 10 insertions(+)
+
+diff --git a/src/lib/ecdsa.c b/src/lib/ecdsa.c
+index 8cd7722be8cd..a661b56bd7c8 100644
+--- a/src/lib/ecdsa.c
++++ b/src/lib/ecdsa.c
+@@ -135,6 +135,12 @@ regenerate:
+ void ecdsa_verify_prepare_legacy(ecdsa_verify_context_t *ctx, const ecc_int256_t *hash, const ecdsa_signature_t *signature) {
+ ecc_int256_t w, u1, tmp;
+
++ if (ecc_25519_gf_is_zero(&signature->s) || ecc_25519_gf_is_zero(&signature->r)) {
++ // Signature is invalid, mark by setting ctx->r to an invalid value
++ memset(&ctx->r, 0, sizeof(ctx->r));
++ return;
++ }
++
+ ctx->r = signature->r;
+
+ ecc_25519_gf_recip(&w, &signature->s);
+@@ -149,6 +155,10 @@ bool ecdsa_verify_legacy(const ecdsa_verify_context_t *ctx, const ecc_25519_work
+ ecc_25519_work_t s2, work;
+ ecc_int256_t w, tmp;
+
++ // Signature was detected as invalid in prepare step
++ if (ecc_25519_gf_is_zero(&ctx->r))
++ return false;
++
+ ecc_25519_scalarmult(&s2, &ctx->u2, pubkey);
+ ecc_25519_add(&work, &ctx->s1, &s2);
+ ecc_25519_store_xy_legacy(&w, NULL, &work);
+--
+2.36.0
+

0 comments on commit 2c1ce1f

Please sign in to comment.