Skip to content

Commit 0278848

Browse files
authored
Merge pull request #788 from libtom/pr/pbes-fix-stack-over-read
PBES - fix stack over-read with malformed PBES2 parameters
2 parents 5976725 + b50ffea commit 0278848

3 files changed

Lines changed: 17 additions & 0 deletions

File tree

src/misc/pbes/pbes.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,8 @@ int pbes_decrypt(const pbes_arg *arg, unsigned char *dec_data, unsigned long *d
4444
if (arg->iv != NULL) {
4545
iv = arg->iv->data;
4646
} else {
47+
/* PBES1 derives key and IV in one go, the IV follows the key in k; blocklen is 0 for PBES2, which has no IV to derive from */
48+
if (arg->type.blocklen != (unsigned long)cipher_descriptor[cid].block_length) return CRYPT_INVALID_PACKET;
4749
iv = k + klen;
4850
klen += arg->type.blocklen;
4951
}

src/misc/pbes/pbes2.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -197,6 +197,9 @@ int pbes2_extract(const ltc_asn1_list *s, pbes_arg *res)
197197
} else {
198198
return CRYPT_INVALID_PACKET;
199199
}
200+
} else {
201+
/* PBES2 always carries the IV in the parameters, there is nothing to derive it from */
202+
return CRYPT_INVALID_PACKET;
200203
}
201204

202205
return CRYPT_OK;
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
-----BEGIN ENCRYPTED PRIVATE KEY-----
2+
MIIBzTBXBgkqhkiG9w0BBQ0wSjApBgkqhkiG9w0BBQwwHAQIDvEXvzqHE1ICAggA
3+
MAwGCCqGSIb3DQILBQAwHQYJYIZIAWUDBAEqAhCj/pJclOyl8T9QLQ5hST9UBIIB
4+
cAhS99K8b/rp2TaTvSSuwTS1qFcJ0O33zSSIprhVriNdArgQC0sX3XZKe5tyzWSD
5+
+ZJZXJhcnQKRauDGhiF7dJWSgM0MbL90ZgwFyQvwzl1kxfKheaS8Hv/xGDvx+eAU
6+
XwOAddifqcSediLUwtf5SRUmPy12gxcMFN0gY7fvjA0Wb/fDn6UuG0iu+y/msiu/
7+
S+dW+PbOZBDiQb1u/U+wKTdvQxowlu6zkapxRFRWC1i2S7vBtdK7aLTERUJwdEf/
8+
RdAMLXQdr5zhKHTjx7nQiPCksbNrpdTQHw/nsrNtE0pPvde3MCNIfvaDgHXyCV8F
9+
Fo/fn97YhaKH8zCfvWhduuY2Bj3M1jBLRxGQZ2cs4hb6Ua3R2GiTD0h5zp9uNXRH
10+
SrECToksdY5jNz1qMV6TA7gAOZ477sZCkJ0WU68B0jUVJKlEYCPzyTVcoy3a1hiF
11+
Lx2H5WbsXSsZGaX+wyUUicYm8J+YnGtVd+FgS5e8Lh4w
12+
-----END ENCRYPTED PRIVATE KEY-----

0 commit comments

Comments
 (0)