The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"Оптимизация кода компилятором может привести к появлению про..."
Отправлено opennews, 30-Окт-13 12:07 
Группа исследователей из Массачусетского технологического университета (MIT) опубликовала (http://www.itworld.com/security/380406/how-your-compiler-may...) (PDF (http://pdos.csail.mit.edu/~xi/papers/stack-sosp13.pdf), 240 Кб) результаты изучения особенностей работы систем оптимизации кода современных компиляторов, способных привести к понижению безопасности приложений. В итоге, выявлены многочисленные факты, когда в процессе компиляции в машинный код из приложения исключаются блоки, бессмысленные с точки зрения оптимизатора, но важные для обеспечения безопасности.

Например, компилятор исключает неопределённые или нестабильные участки кода, которые на деле могут выступать проверками на появление нулевого указателя или выхода за границы области памяти. В итоге, данные проверки не включаются в исполняемый файл и безопасное на уровне исходных текстов приложение, становится подвержено уязвимостям на уровне исполняемого кода. Проблеме подвержено большинство современных компиляторов, включая GCC, Clang, ICC, MSVC, open64. pathcc, suncc и т.д.


Например, оптимизатор GCC удалит вторую проверку из следующего кода:


<font color="#461b7e">
   char *buf = ...;
   char *buf_end = ...;
   unsigned int len = ...;
   if (buf + len >= buf_end)
      return;  /* len too large */
   if (buf + len < buf)
      return; /* overflow, buf+len wrapped around write to buf[0..len-1] */

</font>

Также будет удалена проверка на нулевой указатель в коде:
<font color="#461b7e">
   struct tun_struct *tun = ...;
   struct sock *sk = tun->sk;
   if (!tun)
      return POLLERR; /* write to address based on tun */</font>


Для выявления потенциально проблемных мест в коде на языках C и C++, которые могут быть удалены на стадии оптимизации, исследователями подготовлен специальный статический анализатор STACK (http://css.csail.mit.edu/stack/). Изучение при помощи STACK типовых открытых проектов выявило 160 подобных проблем, из которых 32 присутствуют в ядре Linux, 3 в Mozilla, 9 в PostgreSQL и  5  в Python. Более широкая проверка исходных текстов показала, что нестабильные блоки кода присутствуют в 3471 пакете из 8575 пакетов, доступных в репозиториях Debian. Таким образом, описанные в работе  проблемы не являются единичными, а широко распространены и могут быть использованы злоумышленниками для организации новых типов атак.

URL: http://www.itworld.com/security/380406/how-your-compiler-may...
Новость: https://www.opennet.ru/opennews/art.shtml?num=38293

 

Ваше сообщение
Имя*:
EMail:
Для отправки ответов на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру