Атака повернення в бібліотеку (англ. Return-to-libc attack) — один з видів комп'ютерних атак, популярних на x86-сумісних машинах і схожих з ними[], пов'язаних з переповненням буфера, коли адреса повернення у функцію у стеку викликів підміняється адресою іншої функції в програмі, і в наступну частину стека записуються параметри для виклику функції. Ця техніка дозволяє нападнику виконати якусь існуючу функцію без необхідності впроваджувати шкідливий код в програму.
У GNU, GNU/Linux та інших UNIX-подібних ОС є спільна бібліотека libc, що надає функції мови Сі та стандарту POSIX, наприклад system() для виконання довільних програм. Подібні бібліотеки існують і в ОС сімейства Windows. Хоча атакуючий може змусити програму здійснити перехід на будь-яку адресу, більшість програм використовують libc (злінковані з нею), в ній є зручні функції запуску довільних програм. Тому функції стандартної бібліотеки є найбільш ймовірною метою подібних експлойтів, що і дало назву класу атак. Тим не менш можливо використання інших адрес повернення, у тому числі функцій з інших бібліотек і (або) фрагментів коду (у тому числі повернення на середину інструкції), докладніше див. Зворотно-орієнтоване програмування.
Захист від атаки
Стек з захистом від виконання коду може запобігти деяким способам використання переповнення буфера, але не повернення в бібліотеку, оскільки в даній атаці використовується вже існуючий в адресному просторі процесу виконуваний код. З іншого боку, на відміну від класичних shellcode, дана атака може використовувати тільки існуючі функції. [en] з GCC (відомий як ProPolice) і подібні захисти інших систем можуть запобігти або значно ускладнити цю атаку, так як вони виявляють порушення цілісності стека і, можливо, помітять впроваджені дані.
Технологія Address Space Layout Randomization (ASLR), що додає випадковість в розташування бібліотек в межах адресного простору процесів, робить атаку даного типу надзвичайно складною і практично даремною на 64-бітних системах, тому що адреси функцій стають випадковими. Для систем з 32-бітною адресацією технологія ASLR менш корисна, оскільки для додавання випадковості доступно лише близько 16 біт, і з подібними випадками можна боротися за допомогою перебору грубою силою в рамках декількох хвилин.
Як і з звичайними переповненнями буфера, дана атака значно ускладнена для архітектур, які не зберігають адресу повернення у тому ж стеку, що і дані. Такими архітектурами є, наприклад, SPARC, що зберігає адресу повернення з поточної функції у регістрі %i7
, і MIPS (регістр $ra
). Атака може бути неможливою для процесорів, що зберігають регістрові вікна попередніх функцій в тіньових регістрах, наприклад PowerPC, стек викликів в якому реалізований як регістр що стекується (зберігає старе значення в тіньовій зоні, недоступній програмісту).
Схожі атаки
Техніка «Зворотно-орієнтоване програмування» є розвитком ідей, що лежать в основі цієї атаки, і дозволяє виконувати більш складні дії за рахунок послідовного об'єднання декількох менших атак, кожна з яких виконує невелику кількість інструкцій за раз. У цій техніці не обов'язково використовувати переходи на початок функцій, а допустимо робити «повернення» на інструкцію, що знаходиться недалеко від інструкції повернення управління з функції (ret). Після виконання одного фрагмента, команда ret візьме зі стека наступну адресу і запустить своїм поверненням інший фрагмент. Таким чином, за допомогою ретельного компонування стека можливо створення достатньо складних послідовностей інструкцій.
Див. також
Примітки
- Shacham, Hovav; Page, Matthew; Pfaff, Ben; Goh, Eu-Jin; Modadugu, Nagendra; and Boneh, Dan. (PDF). Proceedings of Computer and Communications Security (CCS'04), October 25–29, 2004, Washington (DC). Архів оригіналу (PDF) за 15 вересня 2011. Процитовано 19 квітня 2018.
- . Архів оригіналу за 16 травня 2018. Процитовано 19 квітня 2018.
Посилання
- Bypassing non-executable-stack during exploitation using return-to-libc [ 25 липня 2011 у Wayback Machine.] by at c0ntex InfoSecWriters.com
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Ataka povernennya v biblioteku angl Return to libc attack odin z vidiv komp yuternih atak populyarnih na x86 sumisnih mashinah i shozhih z nimi dzherelo pov yazanih z perepovnennyam bufera koli adresa povernennya u funkciyu u steku viklikiv pidminyayetsya adresoyu inshoyi funkciyi v programi i v nastupnu chastinu steka zapisuyutsya parametri dlya vikliku funkciyi Cya tehnika dozvolyaye napadniku vikonati yakus isnuyuchu funkciyu bez neobhidnosti vprovadzhuvati shkidlivij kod v programu U GNU GNU Linux ta inshih UNIX podibnih OS ye spilna biblioteka libc sho nadaye funkciyi movi Si ta standartu POSIX napriklad system dlya vikonannya dovilnih program Podibni biblioteki isnuyut i v OS simejstva Windows Hocha atakuyuchij mozhe zmusiti programu zdijsniti perehid na bud yaku adresu bilshist program vikoristovuyut libc zlinkovani z neyu v nij ye zruchni funkciyi zapusku dovilnih program Tomu funkciyi standartnoyi biblioteki ye najbilsh jmovirnoyu metoyu podibnih eksplojtiv sho i dalo nazvu klasu atak Tim ne mensh mozhlivo vikoristannya inshih adres povernennya u tomu chisli funkcij z inshih bibliotek i abo fragmentiv kodu u tomu chisli povernennya na seredinu instrukciyi dokladnishe div Zvorotno oriyentovane programuvannya Zahist vid atakiStek z zahistom vid vikonannya kodu mozhe zapobigti deyakim sposobam vikoristannya perepovnennya bufera ale ne povernennya v biblioteku oskilki v danij ataci vikoristovuyetsya vzhe isnuyuchij v adresnomu prostori procesu vikonuvanij kod Z inshogo boku na vidminu vid klasichnih shellcode dana ataka mozhe vikoristovuvati tilki isnuyuchi funkciyi en z GCC vidomij yak ProPolice i podibni zahisti inshih sistem mozhut zapobigti abo znachno uskladniti cyu ataku tak yak voni viyavlyayut porushennya cilisnosti steka i mozhlivo pomityat vprovadzheni dani Tehnologiya Address Space Layout Randomization ASLR sho dodaye vipadkovist v roztashuvannya bibliotek v mezhah adresnogo prostoru procesiv robit ataku danogo tipu nadzvichajno skladnoyu i praktichno daremnoyu na 64 bitnih sistemah tomu sho adresi funkcij stayut vipadkovimi Dlya sistem z 32 bitnoyu adresaciyeyu tehnologiya ASLR mensh korisna oskilki dlya dodavannya vipadkovosti dostupno lishe blizko 16 bit i z podibnimi vipadkami mozhna borotisya za dopomogoyu pereboru gruboyu siloyu v ramkah dekilkoh hvilin Yak i z zvichajnimi perepovnennyami bufera dana ataka znachno uskladnena dlya arhitektur yaki ne zberigayut adresu povernennya u tomu zh steku sho i dani Takimi arhitekturami ye napriklad SPARC sho zberigaye adresu povernennya z potochnoyi funkciyi u registri i7 i MIPS registr ra Ataka mozhe buti nemozhlivoyu dlya procesoriv sho zberigayut registrovi vikna poperednih funkcij v tinovih registrah napriklad PowerPC stek viklikiv v yakomu realizovanij yak registr sho stekuyetsya zberigaye stare znachennya v tinovij zoni nedostupnij programistu Shozhi atakiTehnika Zvorotno oriyentovane programuvannya ye rozvitkom idej sho lezhat v osnovi ciyeyi ataki i dozvolyaye vikonuvati bilsh skladni diyi za rahunok poslidovnogo ob yednannya dekilkoh menshih atak kozhna z yakih vikonuye neveliku kilkist instrukcij za raz U cij tehnici ne obov yazkovo vikoristovuvati perehodi na pochatok funkcij a dopustimo robiti povernennya na instrukciyu sho znahoditsya nedaleko vid instrukciyi povernennya upravlinnya z funkciyi ret Pislya vikonannya odnogo fragmenta komanda ret vizme zi steka nastupnu adresu i zapustit svoyim povernennyam inshij fragment Takim chinom za dopomogoyu retelnogo komponuvannya steka mozhlivo stvorennya dostatno skladnih poslidovnostej instrukcij Div takozhPerepovnennya bufera No eXecute NX bit Address Space Layout RandomizationPrimitkiShacham Hovav Page Matthew Pfaff Ben Goh Eu Jin Modadugu Nagendra and Boneh Dan PDF Proceedings of Computer and Communications Security CCS 04 October 25 29 2004 Washington DC Arhiv originalu PDF za 15 veresnya 2011 Procitovano 19 kvitnya 2018 Arhiv originalu za 16 travnya 2018 Procitovano 19 kvitnya 2018 PosilannyaBypassing non executable stack during exploitation using return to libc 25 lipnya 2011 u Wayback Machine by at c0ntex InfoSecWriters com