October 21, 2023

Уязвимости в коде

🥷 Приветствую друзья

Сегодня мы поговорим про уязвимости в программном коде. Это достаточно обширная область, которая была выделена по итогам в отдельное направление под названием DevSecOps.

DevSecOps (акроним от англ. development, security и operations) — методология, дополняющая практики DevOps, которая подразумевает не только тесное взаимодействие команд разработки и эксплуатации, но и применение лучших практик безопасности на всех этапах жизненного цикла программного обеспечения.

Любое программное обеспечение, веб-приложение, в общем все, что вы видите и щелкаете за компьютером - это код. Программный код. Написанный программистами разного уровня осведомленности в информационной безопасности. Уязвимости, которые возникают в приложениях - это следствие малой осведомленности программистов в обеспечении разработки безопасного кода.

Если вы отслеживаете последние нашумевшие уязвимости, то могли заметить одну постоянно вылезающую уязвимость в приложении Google Chrome. Она называется "Двойное освобождение", давайте разберем, что это значит.

Предположим, у нас есть следующий код:

Это код, написанный на языке С. Он выделяет память под buf1R1 с помощь/ функции malloc, а затем освобождает ее функцией free. Но что же здесь не так?

Дело в том, что освобождать одну и ту же ячейку памяти дважды подряд категорически запрещено и опасно. Почему спросите вы?

Дело в том, что когда вы освободили память первый раз - все отлично, ни у кого ни к кому никаких вопросов нет. Но когда вы заставляете компилятор обратиться к освобожденной ячейке еще раз, в этой ячейке может лежать сформированный злоумышленником PayLoad, который при обращении к данной ячейке вызовет сработку Payload-а, а в нем может (и скорее всего так и есть) будет лежать шелл и у злоумышленника появится доступ к серверу, а это уже у нас уязвимость типа RCE - удаленное выполнение кода.


В практиках DevSecOps создано немаленькое количествос сканеров, которые выявляют похожего рода уязвимости, тем самым защищая ваше приложение от атак.

Для практики, особенно это будет интересно программистам, создайте такое приложение в двойным освобождением. Затем подготовьте Шелл-код, выясните размер буфера данных, который приводит к затиранию адреса возврата и отслеживайте полученный эксплойт.

Для практики, кто имеет малый опыт в разработке, можете попробовать проэксплуатировать простую уязвимость типа Buffer over Flow - когда код, из-за неправильной фильтрации данных, пытается зайти за границы выделенной памяти.


🔥 Спасибо за прочтение, ставьте реакцию под постом

⚡️ Ссылка - Cyber Squad

🚀 Обучение - cyber-squad.pro

🥷 Задать вопрос - Fantom