1CVE ID: CVE-2016-9963 2Date: 2016-12-15 3Credits: Bjoern Jacke <bjoern@j3e.de> 4Version(s): 4.69 -> 4.87 5Issue: If several conditions are met, Exim leaks private information 6 to a remote attacker. 7 8Conditions 9========== 10 11If *all* of the following conditions are met 12 13 Build options 14 ------------- 15 16 * Exim is built with DKIM enabled (default for newer versions) 17 exim -bV | grep 'Support.*DKIM' 18 19 Runtime options 20 --------------- 21 22 * Exim uses DKIM signing (transport options dkim_private_key, 23 dkim_domain, and other) 24 25 * The dkim_private_key option names a file containing the key. 26 27 exim -bP transports | grep 'dkim_private_key = .' 28 29 * Exim uses PRDR (transport option hosts_try_prdr) (default 30 since 4.86) 31 32 exim -bP transports | grep 'hosts_try_prdr = .' 33 34 *OR* 35 36 Exim uses the LMTP protocol variant for SMTP transport. 37 38 exim -bP transports | grep 'protocol = lmtp' 39 40 Operation 41 --------- 42 43 * Exim transports a multi-recipient message 44 45 * The destination host supports PRDR 46 OR 47 the message transport uses LMTP 48 49 * One or more recipients are rejected after the DATA phase 50 51Impact 52====== 53 54Exim leaks the private DKIM signing key to the log files. Additionally, 55if the build option EXPERIMENTAL_DSN_INFO=yes is used, the key material 56is included in the bounce message. 57 58Fix 59=== 60 61Install a fixed Exim version: 62 63 4.88 64 4.87.1 65 66If you can't install one of the above versions, ask your package 67maintainer for a version containing the backported fix. On request and 68depending on our resources we will support you in backporting the fix. 69(Please note, that Exim project officially doesn't support versions 70prior the current stable version.) 71 72If you think that you MIGHT be affected, we HIGHLY recommend to create 73a new set of DKIM keys and fade out the previous DKIM key soon to make 74sure that a possibly leaked DKIM key can not be misused in the future. 75 76 77Workaround 78========== 79 80Disable PRDR in your outgoing transport(s): set hosts_try_prdr to an 81empty string. 82 83AND do not use the LMTP protocol variant of the SMTP driver. 84 85Indication 86========== 87 88You can check if you where affected already. The mainlog entries look like this: 89 902016-12-17 09:44:33 10HmaX-0005vi-00 ** baduser@test.ex R=client T=send_to_server H=ip4.ip4.ip4.ip4 [ip4.ip4.ip4.ip4]: PRDR error after -----BEGIN RSA PRIVATE KEY-----\nMIICXQIBAAKBgQDXRFf+VhT+lCgFhhSkinZKcFNeRzjYdW8vT29Rbb3NadvTFwAd\n+cVLPFwZL8H5tUD/7JbUPqNTCPxmpgIL+V5T4tEZMorHatvvUM2qfcpQ45IfsZ+Y\ndhbIiAslHCpy4xNxIR3zylgqRUF4+Dtsaqy3a5LhwMiKCLrnzhXk1F1hxwIDAQAB\nAoGAZPokJKQQmRK6a0zn5f8lWemy0airG66KhzDF0Pafb/nWKgDCB02gpJgdw5rJ\nbO7/HI3IeqsfRdYTP7tjfmZtPiPo1mnF7D1rSRspZjOF2yXY/ky7t7c5xChRcSxf\n+69CknwjrfteY9Aj0j6o7N+2w2uvHO+AAq8BHDgXKmPo0SECQQDzQ/glyhNH9tlO\nx+3TTMwwyZUf2mYYosN3Q9NIl3Umz/3+13K5b6Ed6fZvS/XwU55Qf5IBUVj2Fujk\nRv2lbGPpAkEA4okpnzYz5nm1X5WjpJPQPyo8nGEU1A5QfoDbkAvWYvVoYrpWPOx5\nHFpOAHkvSk1Y1vhCUa+zHwiQRBC8OMp6LwJBAOAUK/AjQ792UpWO9DM++pe2F/dP\nZdwrkYG6qFSlrvQhgwXLz5GgkfjMGoRKpDDL1XixCfzMwfVtBPnBqsNGJIECQGYX\nSIGu7L7edMXJ60C9OKluwHf9LGTQuqf4LHsDSq+4Rz3PGhREwePsMqD1/EDxEKt4\noHKtyvyeYF28aQbzARMCQQCRtJlR6vlKhxYL8+xoPrCu3MijKgVruRUcNstXkDZK\nfKQax6vhiMq+0qIiEwLA1wavyLVKZ7Mfag+/4NTcDUVC\n-----END RSA PRIVATE KEY-----\n: 550 PRDR R=<baduser@test.ex> refusal 91 92Even if there is no evidence in the existing log files, that a DKIM key 93leakage happened this might have happened in the past, log files might 94have been deleted already but a key leak could have ended up via mail 95bounce in a user mail box 96