Проблемы безопасности Яндекс.Почты (а еще ПДД и Коннект)

image
Привет, GT! Я прочитал постMikhailNsk, и мой мозг перенес меня в 2016 год, где я случайно наткнулся на проблему с подменой адресов у Яндекс.Почты. Сама угроза заключается в том, что письма, с точки зрения, DMARC и SPF являются полностью валидными. Этому подвержены не только пользователи Почты, но и организации, которые используют в качестве почтовика со своим доменом Яндекс.ПДД и Яндекс.Коннект (для примера, это всем известный и везде рекламируемый «майловский» GeekBrains), а это уже куда серьезнее. Уязвимость на данный момент работает, письмо проходит все проверки и доставляется куда-угодно (включая GMAIL). Реализация и реакция Яндекса под катом.
Внимание! Приведенный ниже алгоритм воспроизведения уязвимости предоставлен исключительно в образовательных целях!

Реализация уязвимости

Сама суть очень проста, Яндекс позволяет авторизоваться под одним адресом, а отправлять с любого другого, где прописаны DMARC и SPF правила Яндекса, а еще письмо подписывается валидной DKIM подписью yandex.ru.

Для реализации нам потребуется почтовый ящик на Яндексе и сторонний почтовый клиент (мой выбор пал на открытый и функциональный Thunderbird).
К последнему мы прикручиваем свой почтовый ящик от Яндекса, открываем окно отправки письма

7666225674824fa7b31df57e515196f2.jpg

меняем адрес отправителя на нужный нам (в нашем случае на i@yandex.ru)

0a91f59a1e1146ce84735114e25618e0.jpg

и отправляем письмо куда-нибудь

3ba2ede4025b42e6b3bd3f3fbac2a541.jpg

На гуглопочту (как и на любую другую) письмо пришло нормально. Гугл показывает карточку, что все гуд

cac25d13829b4d1291e0664901dff8de.jpg

Исходник письма
Delivered-To: @gmail.com
Received: by 10.31.164.6 with SMTP id n6csp2248696vke;
Thu, 10 Aug 2017 09:17:13 -0700 (PDT)
X-Received: by 10.46.33.9 with SMTP id h9mr3821349ljh.52.1502381833140;
Thu, 10 Aug 2017 09:17:13 -0700 (PDT)
ARC-Seal: i=1; a=rsa-sha256; t=1502381833; cv=none;
d=google.com; s=arc-20160816;
b=CM0dF4giYDl9jToC/17FjHIeiQNsfFaDUxcYErv/RAHKrX+8PIdx0QabF/kUMVelug
ESNfNVYYv09sIrZsYSgqnmKlVdPbQYkmr0mSE+oZ2cjIhebKQcfQjKARk+6LLFOrtNSb
M1O014IAXh+y+ykx2EEyhyWir1y+SWItjS2ukNN19t9GwY91hjFtd+0T2OQDvC44qjpW
ztHKTCTNne0+NhMRYg2iSL0uQZkkpeUNNKgkRavCJRKgnjtMOuLqtx0uNLfZex34XcBl
vtZTfThoUeuzBPmHVVnnE+W8lcLoqTG2/jr4C4E4VNDHrjUCsDecNNfGYf5/BajX45n0
BdsQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816;
h=content-language:content-transfer-encoding:mime-version:user-agent
:date:message-id:subject:from:to:dkim-signature:dkim-signature
:arc-authentication-results;
bh=AOjHaT+yDXpmJsW3LSDugt7u95YQzsSxsGi10r66W3Y=;
b=Edjq07PU+c0nie1ia60SrVoI219rb8q/OnUJMtf0tJrFPktG29Pqs4fx7E3DsNvH6l
PPdsJVsvHDl3nIWqVSASAXaTPELSAXYETQ/zuluD+wrR2n7MXNt8QQ8cUqt7Zae8Wkq2
Yr3cW+9Ty3VZEi2TzqRzOU3UNNhds+UHa8o6/LK3N7NN91INYevsNnrfMBSUvqm6HmMi
AJ7dHkkwqqKX7XNkIvKNVjyq8FhnVfMiow8N/PCsVqtTly+q825p5kOl3hxqbLMsi3ix
AL3MGC84U/m8+dvivNege5yDby/Dfp6uY6jHJL/hOVmmUwT1/y2F+5SD/ifuS4EX2gI7
geLg==
ARC-Authentication-Results: i=1; mx.google.com;
dkim=pass header.i=@yandex.ru header.s=mail header.b=T2n/cJmZ;
dkim=pass header.i=@yandex.ru header.s=mail header.b=T2n/cJmZ;
spf=pass (google.com: domain of 42@yandex.ru designates 37.140.190.181 as permitted sender) smtp.mailfrom=42@yandex.ru;
dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=yandex.ru
Return-Path: <42@yandex.ru>
Received: from forward101o.mail.yandex.net (forward101o.mail.yandex.net. [37.140.190.181])
by mx.google.com with ESMTPS id 128si582786lfz.671.2017.08.10.09.17.12
for <@gmail.com>
(version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
Thu, 10 Aug 2017 09:17:13 -0700 (PDT)
Received-SPF: pass (google.com: domain of 42@yandex.ru designates 37.140.190.181 as permitted sender) client-ip=37.140.190.181;
Authentication-Results: mx.google.com;
dkim=pass header.i=@yandex.ru header.s=mail header.b=T2n/cJmZ;
dkim=pass header.i=@yandex.ru header.s=mail header.b=T2n/cJmZ;
spf=pass (google.com: domain of 42@yandex.ru designates 37.140.190.181 as permitted sender) smtp.mailfrom=42@yandex.ru;
dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=yandex.ru
Received: from mxback1o.mail.yandex.net (mxback1o.mail.yandex.net [IPv6:2a02:6b8:0:1a2d::1b])
by forward101o.mail.yandex.net (Yandex) with ESMTP id 919D813416EA
for <@gmail.com>; Thu, 10 Aug 2017 19:17:12 +0300 (MSK)
Received: from smtp1o.mail.yandex.net (smtp1o.mail.yandex.net [2a02:6b8:0:1a2d::25])
by mxback1o.mail.yandex.net (nwsmtp/Yandex) with ESMTP id 3IjaA941Wl-HCe4hwWw;
Thu, 10 Aug 2017 19:17:12 +0300
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yandex.ru; s=mail; t=1502381832;
bh=AOjHaT+yDXpmJsW3LSDugt7u95YQzsSxsGi10r66W3Y=;
h=To:From:Subject:Message-ID:Date;
b=T2n/cJmZ2jEcX5rX5exetDc2VfT1lhVgPkMXfbIFAmw8PE6iLFkdddO7f67IRKfrb
KNV7U5whs9PUhGRd0S2x5OULF8VC3QXMSEvXJiM5gSxZdbNNNq2GRDpTkxbJiDASDT
A2DYgoRtpFzN64wX4EnSEmya/D24mP43VOi2TlAc=
Received: by smtp1o.mail.yandex.net (nwsmtp/Yandex) with ESMTPSA id i5ALruo2pE-HC4WKA0l;
Thu, 10 Aug 2017 19:17:12 +0300
(using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
(Client certificate not present)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yandex.ru; s=mail; t=1502381832;
bh=AOjHaT+yDXpmJsW3LSDugt7u95YQzsSxsGi10r66W3Y=;
h=To:From:Subject:Message-ID:Date;
b=T2n/cJmZ2jEcX5rX5exetDc2VfT1lhVgPkMXfbIFAmw8PE6iLFkdddO7f67IRKfrb
KNV7U5whs9PUhGRd0S2x5OULF8VC3QXMSEvXJiM5gSxZdbNNNq2GRDpTkxbJiDASDT
A2DYgoRtpFzN64wX4EnSEmya/D24mP43VOi2TlAc=
Authentication-Results: smtp1o.mail.yandex.net; dkim=pass header.i=@yandex.ru
To: @gmail.com
From: Habratest
Subject: Test fot Habr
Message-ID: <48942373-b6c4-d019-a15f-6aeaeeda39df@yandex.ru>
Date: Thu, 10 Aug 2017 21:17:10 +0500
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101
Thunderbird/52.2.1
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8; format=flowed
Content-Transfer-Encoding: 7bit
Content-Language: en-US

Hbrahabrahabrahabrahabrahabrahabrahabrahabrahabrahabrahabrahabra


Адрес получателя был заменен на @gmail.com, настоящий адрес на 42@yandex.ru

Мораль и ответ Яндекса


Данная уязвимость создает огромные возможности для соц.инжиниринга. Таким образом можно использовать адреса, например, GeekBrains, который использует для почты ПДД (или Коннект).
DKIM проверка отдает pass, но домен указывается Яндекса (даже использовать другой почтовый домен).
Естественно, я сразу же отписал об этом в багхантер Яндекса еше летом прошлого года и
получил ответ:

909958ade8c7465c8767ab648d9f0f97.jpg

До меня уязвимость им отправили 27 июня 2016 года.
Т.е. Яндекс за год не смог исправить достаточно серьезную (по моему мнению) уязвимость, которая может затронуть безопасность партнеров Яндекса, которые используют их почтовик.

Кстати, mail.ru и gmail этому не подвержены.
GeekBrains, простите, но я знаю лишь вас, среди тех кто использует сервисы Яндекс, ведь вы спалились аватаркой.

© Geektimes