Коротко зміст даної статті можна виразити так: існуючі служби (анонімних) поштових пересилань ( часто званих римейлингом або перенаправленням) за рахунок спільних недоробок відкривають шлях для тупою атаки на відмову довільного поштової скриньки/сервера з невеликими ресурсами і… самих себе! Найгірше те, що методика, описана нижче, по силам і «чайнику»( щоправда, останнього потім, ще можна знайти). До речі і сам автор спеціалізується зовсім в іншій області.

Атака описана на прикладі використання поштових служб mail.ru, hotmail.ru і анонімного римейлера [email protected] Всі імена (крім аноніма і хостів поштових серверів) зрозуміло змінені. Атакується об’єкт належав особисто автору.

Хто добре знайомий з системами римейлинга/форвардингу може пропустити перші два розділи.

1. Перші нехороші думки (легальні)
На цю ідею автор натрапив, використовуючи безкоштовні мейл-сервер для забезпечення розсилань пошти з кількох філіям.

Простіше кажучи, я використовував систему пересилання пошти сервера mail.ru, вказуючи в поле пересилання створеного поштової скриньки e-mail’и семи або восьми філій. Таким чином при розсилці 200 килобайтного листи заощаджувався приблизно 1 Мб трафіку. З часом число філій зросло, виникла необхідність об’єднати їх у групи. Система розсилки стала ієрархічної, приблизно такий:
[email protected] 🙁 п’ять адрес)
[email protected]: ( три адреси)
[email protected]: ( сім адрес)
[email protected]: (три_адреса: group1, group2, group3)

Можливість пересилки на кілька адрес відразу пропонують дуже небагато поштових серверів, зокрема mail.ru. Треба зазначити також, що цей сервер одразу відмовлявся приймати список для пересилання, коли помилково в ньому два рази повторювався один і той же адресу. Більш того, якщо адреси в групах перетиналися, то все одно відсилали лише один екземпляр листа! Молодці.

Природно, почав мучити питання, а що буде, якщо підставити рекурсивні посилання, наприклад, адреси для якої-небудь групи поставити адреса її самої або «all_group».

2. Другі нехороші думки (наївні).
Почитавши літературу, швидко переконався, що нічого не станеться, нормальні сервера пересилання вставляють в заголовок характерну рядок, дозволяє їм уникнути зациклення, за схемою: А пересилає на Б, Б на А. При повторному отриманні того ж листа воно буде знищено, зазвичай без відсилання сповіщення.

Інакше відкрилася б перспектива «випадково» завантажити сервера величезною кількістю безглуздої роботи. Нехай, наприклад, А пересилає на (B,C) B — на (A,C) C — (А, Б). Неважко побачити, що ця схема призводить до експоненціальним зростанням кількості повідомлень в системі. На щастя, думалось мені, подібний розвиток подій виключено.

Пройшов приблизно рік… Все частіше на наші адреси став приходити спам, чиї автори успішно користувалися анонімними поштовими службами (типу [email protected], [email protected] ) Мережі для видалення початкового адреси листи. Процедура зовсім не складна: в заголовку (або початку листа ) пишете рядок виду «Anon-To: адреса_получателей», і надсилаєте лист на [email protected] зазначені поштові скриньки прийдуть листи з обрізаним заголовком.

3. Самі нехороші думки ( про кримінально-каране ).
Стривайте-но, адже використання анонімних римейлеров( далі просто — анонімів), дозволяє деяку кількість разів обійти обмеження на рекурсивні пересилку. Розглянемо нашу останню схему: А пересилає на (B,C);
B — на (A,C); C — (А, Б).

Заголовок (початок) листи додамо N рядків «Anon-To: A, B, C». A,B,C нехай пересилають на анонім ®.

Тепер, якщо послати лист на A, B або С, то поки R вичерпає всі рядки Anon-To, і в мережі буде гуляти 3**N (три в ступені N) листів. Для N=100, це близько 10**48 листів, що десь на 20 порядків більше, ніж число проходять за день у всьому Інтернеті. Навряд чи, який сервер витримає це. А адже N може бути скажімо рівним 20, а адресу C — Вашим ( або Вашого ворога, або [email protected] 😉 ). З — отримає близько 2**21 ( двох мільйонів) листів. Якщо в кожному буде 100 кілобайт тексту «вихід» складе 200 Gb. Що стане з його сервером і каналом?

4. Експеримент
Втім, у цій схемі середній анонім накриється десь на N>10 (вони і так перевантажені), але ж ніхто не заважає написати більш оптимальну схему, в якій основне навантаження падає на форвардер.

Приклад.
[email protected] — атакується об’єкт
Mail.ru, hotmail.ru — форвардери. Другий форвардер необхідний т. к. mail.ru не дозволить продублювати адреса навіть ланцюжком внутрішніх пересилок, а hotmail.ru пересилає тільки на одну адресу.
Анонім — [email protected]
[email protected] пересилає на [email protected], [email protected] і [email protected] [, [email protected], [email protected] …]

[email protected] на [email protected]
[[email protected] на [email protected]
[email protected] на [email protected]
…]

На початку листа N фрагментів:”
::
Anon-To: [email protected], [email protected]

“( самому собі анонім теж відсилає).

Відсилаємо листа на [email protected] Все!

При N=2 та без додаткових адрес tmp2_atck, tmp3_atck,… [email protected] — отримав 14 листів. З k додатковими їх було б (2**N-1)*(2+k). Ще більш небезпечною формою атаки є випадок, коли один з форвардеров вказує на неіснуючу адресу реального поштового сервера, перевантажуючи останній в цілому. Втім, це нескінченна тема.

5. Думки про майбутнє або як захиститися.
Відразу обмовлюся, що в цій галузі не сильний. Може хтось і знає/придумає ефективний спосіб захисту. Будь ласка поділіться.

Від більшості атак на відмову можна захиститися грамотної конфігурацією сервера. Описана ж методика, в кращому випадку просто заб’є Ваш поштовий ящик або сервер. На жаль, від нас мало що залежить. Майже нічого. А ось автори анонімів можуть допомогти. Звичайним користувачам можна користуватися поштою з обмеженим розміром поштової скриньки ( якщо у Вас ще збереглися такі «старомодні» провайдери). Швидше за все впаде лише Pop-сервер. Якщо місцеві провайдери вже забули про таку «послугу», спробуйте Web — пошту типу @netscape.net з обмеженим поштовою скринькою. Мені здається, тут анонім або форвард вийде з ладу набагато раніше.

Можна, звичайно, поставити фільтр на відомі аноніми або форвардери, але адже ними користуються нормальні користувачі.

Анонімам ж достатньо почати обробляти відразу всі заголовки «Anon-To». Зростання перетворитися на лінійний. Це теж погано, але вже зовсім не смертельно. Ще краще обробляти тільки останній рядок переадресування.

Зрозуміло, власникам таких анонімів були надіслані відповідні листи, але напевно вони загубилися у скаргах на спамерів, так і римейлеров в Мережі набагато більше, ніж може знайти автор…

На 23 вересня 1999 р. приклад ще працював.

P. S. Приклад спеціально побудований на досить повільних або перевантажених серверах, щоб їх не можна було ефективно використовувати для атаки.