You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

85 lines
2.8 KiB

exim: update to version 4.94.2 Several exploitable vulnerabilities in Exim were reported to us and are fixed. Local vulnerabilities - CVE-2020-28007: Link attack in Exim's log directory - CVE-2020-28008: Assorted attacks in Exim's spool directory - CVE-2020-28014: Arbitrary PID file creation - CVE-2020-28011: Heap buffer overflow in queue_run() - CVE-2020-28010: Heap out-of-bounds write in main() - CVE-2020-28013: Heap buffer overflow in parse_fix_phrase() - CVE-2020-28016: Heap out-of-bounds write in parse_fix_phrase() - CVE-2020-28015: New-line injection into spool header file (local) - CVE-2020-28012: Missing close-on-exec flag for privileged pipe - CVE-2020-28009: Integer overflow in get_stdinput() Remote vulnerabilities - CVE-2020-28017: Integer overflow in receive_add_recipient() - CVE-2020-28020: Integer overflow in receive_msg() - CVE-2020-28023: Out-of-bounds read in smtp_setup_msg() - CVE-2020-28021: New-line injection into spool header file (remote) - CVE-2020-28022: Heap out-of-bounds read and write in extract_option() - CVE-2020-28026: Line truncation and injection in spool_read_header() - CVE-2020-28019: Failure to reset function pointer after BDAT error - CVE-2020-28024: Heap buffer underflow in smtp_ungetc() - CVE-2020-28018: Use-after-free in tls-openssl.c - CVE-2020-28025: Heap out-of-bounds read in pdkim_finish_bodyhash() The update to 4.94.2 also integrates a fix for a printf format issue previously addressed by a local patch which is removed. Signed-off-by: Daniel Golle <daniel@makrotopia.org>
3 years ago
exim: update to version 4.94.2 Several exploitable vulnerabilities in Exim were reported to us and are fixed. Local vulnerabilities - CVE-2020-28007: Link attack in Exim's log directory - CVE-2020-28008: Assorted attacks in Exim's spool directory - CVE-2020-28014: Arbitrary PID file creation - CVE-2020-28011: Heap buffer overflow in queue_run() - CVE-2020-28010: Heap out-of-bounds write in main() - CVE-2020-28013: Heap buffer overflow in parse_fix_phrase() - CVE-2020-28016: Heap out-of-bounds write in parse_fix_phrase() - CVE-2020-28015: New-line injection into spool header file (local) - CVE-2020-28012: Missing close-on-exec flag for privileged pipe - CVE-2020-28009: Integer overflow in get_stdinput() Remote vulnerabilities - CVE-2020-28017: Integer overflow in receive_add_recipient() - CVE-2020-28020: Integer overflow in receive_msg() - CVE-2020-28023: Out-of-bounds read in smtp_setup_msg() - CVE-2020-28021: New-line injection into spool header file (remote) - CVE-2020-28022: Heap out-of-bounds read and write in extract_option() - CVE-2020-28026: Line truncation and injection in spool_read_header() - CVE-2020-28019: Failure to reset function pointer after BDAT error - CVE-2020-28024: Heap buffer underflow in smtp_ungetc() - CVE-2020-28018: Use-after-free in tls-openssl.c - CVE-2020-28025: Heap out-of-bounds read in pdkim_finish_bodyhash() The update to 4.94.2 also integrates a fix for a printf format issue previously addressed by a local patch which is removed. Signed-off-by: Daniel Golle <daniel@makrotopia.org>
3 years ago
  1. --- a/src/dane-openssl.c
  2. +++ b/src/dane-openssl.c
  3. @@ -1098,8 +1098,8 @@ if (dane->selectors[DANESSL_USAGE_DANE_T
  4. * Check that setting the untrusted chain updates the expected
  5. * structure member at the expected offset.
  6. */
  7. - X509_STORE_CTX_trusted_stack(ctx, dane->roots);
  8. - X509_STORE_CTX_set_chain(ctx, dane->chain);
  9. + X509_STORE_CTX_set0_trusted_stack(ctx, dane->roots);
  10. + X509_STORE_CTX_set0_untrusted(ctx, dane->chain);
  11. OPENSSL_assert(dane->chain == X509_STORE_CTX_get0_untrusted(ctx));
  12. }
  13. }
  14. --- a/src/pdkim/signing.c
  15. +++ b/src/pdkim/signing.c
  16. @@ -699,7 +699,6 @@ return NULL;
  17. void
  18. exim_dkim_init(void)
  19. {
  20. -ERR_load_crypto_strings();
  21. }
  22. --- a/src/tls-openssl.c
  23. +++ b/src/tls-openssl.c
  24. @@ -22,7 +22,10 @@ functions from the OpenSSL library. */
  25. #include <openssl/lhash.h>
  26. #include <openssl/ssl.h>
  27. #include <openssl/err.h>
  28. +#include <openssl/bn.h>
  29. +#include <openssl/dh.h>
  30. #include <openssl/rand.h>
  31. +#include <openssl/rsa.h>
  32. #ifndef OPENSSL_NO_ECDH
  33. # include <openssl/ec.h>
  34. #endif
  35. @@ -1462,8 +1465,8 @@ if (!EVP_PKEY_assign_RSA(pkey, rsa))
  36. X509_set_version(x509, 2); /* N+1 - version 3 */
  37. ASN1_INTEGER_set(X509_get_serialNumber(x509), 1);
  38. -X509_gmtime_adj(X509_get_notBefore(x509), 0);
  39. -X509_gmtime_adj(X509_get_notAfter(x509), (long)60 * 60); /* 1 hour */
  40. +X509_gmtime_adj(X509_getm_notBefore(x509), 0);
  41. +X509_gmtime_adj(X509_getm_notAfter(x509), (long)60 * 60); /* 1 hour */
  42. X509_set_pubkey(x509, pkey);
  43. name = X509_get_subject_name(x509);
  44. @@ -3897,8 +3900,8 @@ fprintf(f, "Library version: OpenSSL: Co
  45. " Runtime: %s\n"
  46. " : %s\n",
  47. OPENSSL_VERSION_TEXT,
  48. - SSLeay_version(SSLEAY_VERSION),
  49. - SSLeay_version(SSLEAY_BUILT_ON));
  50. + OpenSSL_version(OPENSSL_VERSION),
  51. + OpenSSL_version(OPENSSL_BUILT_ON));
  52. /* third line is 38 characters for the %s and the line is 73 chars long;
  53. the OpenSSL output includes a "built on: " prefix already. */
  54. }
  55. @@ -3940,8 +3943,6 @@ if (pidnow != pidlast)
  56. is unique for each thread", this doesn't apparently apply across processes,
  57. so our own warning from vaguely_random_number_fallback() applies here too.
  58. Fix per PostgreSQL. */
  59. - if (pidlast != 0)
  60. - RAND_cleanup();
  61. pidlast = pidnow;
  62. }
  63. --- a/src/tlscert-openssl.c
  64. +++ b/src/tlscert-openssl.c
  65. @@ -217,13 +217,13 @@ return mod ? tls_field_from_dn(cp, mod)
  66. uschar *
  67. tls_cert_not_before(void * cert, uschar * mod)
  68. {
  69. -return asn1_time_copy(X509_get_notBefore((X509 *)cert), mod);
  70. +return asn1_time_copy(X509_getm_notBefore((X509 *)cert), mod);
  71. }
  72. uschar *
  73. tls_cert_not_after(void * cert, uschar * mod)
  74. {
  75. -return asn1_time_copy(X509_get_notAfter((X509 *)cert), mod);
  76. +return asn1_time_copy(X509_getm_notAfter((X509 *)cert), mod);
  77. }
  78. uschar *