Система Orphus

Атаки на плохие указатели. Причины и последствия. Детальное описание (без примера на ассемблере).

Пример:
char *someFn1(){
   char szBuf[128];
   return szBuf;
}
 
char *someFn2(){
   char *psz = malloc(128);
   free(psz);
   return psz;
}
В дальнейшем обращение к чужой области памяти и:
Обращение на чтение
  • Утечка данных
Обращение на запись
  • Разрушение данных
  • Отказ в обслуживании
  • Повышение привилегий
Указатель на таблицу виртуальных функций
  • Выполнение кода
Способ защиты указателей:
void safefree(void **pp){
   if (pp!=NULL && *pp!=NULL){
      free(*pp);
      *pp = NULL
   }
}
 
void caller(){
   char *ptr = malloc(128);
   safefree(&ptr);
}

Система Orphus

Комментарии