Browse Source

[Fix] Fix DKIM forgeries via multiple headers

MFH: rspamd-1.6
URL: http://noxxi.de/research/breaking-dkim-on-purpose-and-by-chance.html
tags/1.7.0
Vsevolod Stakhov 6 years ago
parent
commit
56ef361fe2
1 changed files with 16 additions and 0 deletions
  1. 16
    0
      src/libserver/dkim.c

+ 16
- 0
src/libserver/dkim.c View File

@@ -2062,6 +2062,22 @@ rspamd_dkim_canonize_header (struct rspamd_dkim_common_ctx *ctx,
ar = g_hash_table_lookup (task->raw_headers, header_name);

if (ar) {
/* Check uniqueness of the header */
rh = g_ptr_array_index (ar, 0);
if ((rh->type & RSPAMD_HEADER_UNIQUE) && ar->len > 1) {
guint64 random_cookie = ottery_rand_uint64 ();

msg_warn_dkim ("header %s is intended to be unique by"
" email standards, but we have %d headers of this"
" type, artificially break DKIM check", header_name,
ar->len);
rspamd_dkim_hash_update (ctx->headers_hash,
(const gchar *)&random_cookie,
sizeof (random_cookie));

return FALSE;
}

if (ar->len > count) {
/* Set skip count */
rh_num = ar->len - count - 1;

Loading…
Cancel
Save