Модуль 6 · Программирование · урок 4 из 4 · ~7 мин

⚙️ C++

Короткая выжимка урока бесплатного курса CyberStreak. Полный урок со слайдами, тестом и работой над ошибками — в Telegram.

Близко к железу

C++ (и его предшественник C) — языки системного программирования. На них написаны операционные системы, браузеры, игровые движки, драйверы и многие программы, где важна скорость.

При чём тут безопасность: огромная доля серьёзных уязвимостей — ошибки работы с памятью именно в коде на C и C++.

Ручное управление памятью

Программист сам выделяет и освобождает память. Ошибки приводят к уязвимостям:

  • выход за границы буфера (переполнение буфера);
  • использование уже освобождённой памяти;
  • утечки памяти.

Такие ошибки позволяют злоумышленнику испортить данные или выполнить свой код.

Зачем безопаснику C++

  • Реверс-инжиниринг: вредоносные программы и уязвимое ПО часто написаны на C/C++, и дизассемблированный код похож на них.
  • Поиск уязвимостей и понимание эксплойтов.
  • Понимание, почему работают ASLR, неисполняемая память и другие защиты ОС.

Современный C++

Современный C++ даёт более безопасные инструменты: умные указатели вместо ручного освобождения памяти, контейнеры с проверкой границ, строки вместо массивов символов.

Помогают и инструменты: предупреждения компилятора, статические анализаторы, санитайзеры памяти, фаззинг.

Безопасные по памяти языки

Многие организации рекомендуют для новых проектов языки, безопасные по памяти: Rust, Go, C#, Java, Python.

Но существующий код на C и C++ никуда не денется ещё десятилетия. Специалисты, которые умеют его читать и находить в нём ошибки, будут нужны долго.

Главное за урок

  1. C и C++ — языки ОС, браузеров и драйверов.
  2. Ручное управление памятью — источник опасных уязвимостей.
  3. Знание C++ нужно для реверса и поиска уязвимостей.

Источники

Что ещё в полном уроке

  • О чём урок
  • Чем C++ особенный
  • Почему это важно для безопасности
  • Как снижают риски памяти
  • Место C++ рядом с другими языками
  • Итог
  • Почему память до сих пор ломают
  • Как это выглядит на практике
  • Типичные ошибки
  • Мини-лаборатория
  • Проверь себя
  • Тест из 5 вопросов с разбором каждого ответа
  • Задание на pwn.college: «pwn.college»

Пройди урок целиком

Слайды с примерами, тест, работа над ошибками и огонёк серии. Бесплатно, прямо в Telegram.