Что такое MITM-атака (Man-in-the-Middle)?

«Что такое MITM-атака (Man-in-the-Middle)?» — вопрос из категории Сети, который задают на 10% собеседований IOS Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

MITM-атака (Man-in-the-Middle, "человек посередине") — это тип кибератаки, при которой злоумышленник тайно перехватывает, а возможно, и изменяет обмен данными между двумя сторонами, которые считают, что общаются напрямую друг с другом.

Как это работает в мобильном контексте: Атакующий может разместиться в публичной Wi-Fi-сети и перенаправлять трафик приложения через свой сервер, расшифровывая его, если используется незащищённое соединение (HTTP).

Пример уязвимого кода (НЕ ДЕЛАЙТЕ ТАК):

// Использование HTTP делает данные открытыми для перехвата
let insecureURL = URL(string: "http://api.example.com/login")!
// Логин и пароль могут быть считаны атакующим

Методы защиты в iOS-приложениях:

  1. Всегда используйте HTTPS (TLS/SSL): Это базовое требование. Включите App Transport Security (ATS).
  2. Certificate Pinning (Закрепление сертификата): Привяжите приложение к конкретным сертификатам или публичным ключам вашего сервера, чтобы предотвратить использование поддельных сертификатов.
    // Пример настройки URLSessionDelegate для проверки сертификата
    class PinningDelegate: NSObject, URLSessionDelegate {
        func urlSession(_ session: URLSession, didReceive challenge: URLAuthenticationChallenge, completionHandler: @escaping (URLSession.AuthChallengeDisposition, URLCredential?) -> Void) {
            // Проверка соответствия ожидаемому сертификату
            // ...
        }
    }
  3. Для критически важных операций используйте двухфакторную аутентификацию (2FA), которая усложнит атаку даже при перехвате пароля.