← Назад к вопросам

Что такое MITM атака?

2.3 Middle🔥 122 комментариев
#CI/CD и инструменты разработки#Soft Skills и карьера

Комментарии (2)

🐱
deepseek-v3.2PrepBro AI6 апр. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Что такое MITM-атака?

MITM-атака (Man-in-the-Middle, «человек посередине») — это тип кибератаки, при котором злоумышленник тайно перехватывает, а иногда и модифицирует связь между двумя сторонами (например, между клиентским приложением и сервером), создавая иллюзию прямого обмена данными. В контексте iOS-разработки понимание MITM критически важно, так как мобильные приложения часто работают с конфиденциальными пользовательскими данными через потенциально небезопасные сети (публичные Wi-Fi, сотовые соединения).

Как работает MITM-така?

  1. Перехват трафика: Злоумышленник позиционирует себя между клиентом (iOS-приложением) и сервером, используя техники вроде ARP-спуфинга, поддельных точек доступа Wi-Fi или компрометации маршрутизаторов.
  2. Дешифрование или подмена данных: Если трафик не защищён должным образом, атакующий может читать или изменять передаваемую информацию (логины, пароли, платежные данные).
  3. Маскировка под легитимную сторону: Часто атака сопровождается использованием поддельных SSL-сертификатов, чтобы приложение «доверяло» атакующему как законному серверу.

Пример сценария для iOS:

// Безопасное соединение
guard let url = URL(string: "https://api.example.com/data") else { return }
let task = URLSession.shared.dataTask(with: url) { data, response, error in
    // Обработка ответа
}
task.resume()

Если сертификат сервера не проверяется должным образом, это соединение может быть перехвачено MITM-атакой.

Почему MITM опасен для iOS-приложений?

  • Кража учетных данных: Перехват логинов, токенов аутентификации.
  • Финансовые потери: Подмена данных в банковских или платежных приложениях.
  • Нарушение конфиденциальности: Доступ к личным сообщениям, фото, местоположению.
  • Распространение вредоносного ПО: Внедрение модифицированных APK (для Android) или манипуляция с OTA-обновлениями.

Методы защиты в iOS-разработке

  1. Обязательное использование HTTPS (TLS):

    • Все сетевые запросы должны использовать https://.
    • Настройка ATS (App Transport Security) в Info.plist:
    <key>NSAppTransportSecurity</key>
    <dict>
        <key>NSAllowsArbitraryLoads</key>
        <false/>
        <key>NSExceptionDomains</key>
        <dict>
            <key>example.com</key>
            <dict>
                <key>NSExceptionAllowsInsecureHTTPLoads</key>
                <false/>
                <key>NSIncludesSubdomains</key>
                <true/>
            </dict>
        </dict>
    </dict>
    
  2. Проверка SSL-сертификатов (Certificate Pinning):

    • Фиксация ожидаемого сертификата или публичного ключа сервера.
    • Пример с URLSessionDelegate:
    func urlSession(_ session: URLSession, didReceive challenge: URLAuthenticationChallenge, completionHandler: @escaping (URLSession.AuthChallengeDisposition, URLCredential?) -> Void) {
        guard let serverTrust = challenge.protectionSpace.serverTrust,
              let certificate = SecTrustGetCertificateAtIndex(serverTrust, 0) else {
            completionHandler(.cancelAuthenticationChallenge, nil)
            return
        }
        
        // Сравнение с локально сохранённым сертификатом
        let pinnedCertificateData = ... // Данные вашего сертификата
        let serverCertificateData = SecCertificateCopyData(certificate) as Data
        
        if pinnedCertificateData == serverCertificateData {
            let credential = URLCredential(trust: serverTrust)
            completionHandler(.useCredential, credential)
        } else {
            completionHandler(.cancelAuthenticationChallenge, nil)
        }
    }
    
  3. Использование безопасных протоколов и библиотек:

    • Предпочтение современных алгоритмов шифрования (TLS 1.2+).
    • Избегание устаревших протоколов вроде SSL 3.0.
    • Использование проверенных сетевых библиотек (Alamofire с настройкой Security).
  4. Дополнительные меры:

    • Двусторонняя аутентификация (mTLS) для особо критичных приложений.
    • Шифрование данных на уровне приложения перед отправкой.
    • Регулярное обновление сертификатов и мониторинг их срока действия.

Тестирование на уязвимость к MITM

  • Инструменты: Charles Proxy, mitmproxy, Burp Suite.
  • Проверка:
    1. Настройка прокси на устройстве.
    2. Попытка перехватить трафик приложения.
    3. Анализ: если трафик читаем или приложение не выдаёт ошибок — есть уязвимость.

Заключение

Для iOS-разработчика защита от MITM — не опция, а обязательная часть процесса разработки. Это требует комплексного подхода: от настройки ATS и реализации certificate pinning до регулярного аудита безопасности. Игнорирование этих мер может привести к потере доверия пользователей, финансовым санкциям и репутационным рискам. Современные фреймворки (Network.framework, URLSession) предоставляют мощные инструменты для защиты, но их корректная настройка остаётся ответственностью разработчика.