Кіріспе

Linux жүйелеріне шабуыл жасау қаупін азайтуға бағытталған жоба. Exec Shield – Red Hat, Inc компаниясында 2002 жылдың соңында Linux жүйелеріне құрттар немесе басқа да автоматтандырылған қашықтан шабуыл жасау қаупін азайту мақсатында басталган жоба. Жобаның алғашқы нәтижесі – Linux ядросының қауіпсіздік жаңартуы болды, ол аппараттық құралда NX мүмкіндігі жоқ x86 процессорларында NX битін эмуляциялайды. Exec Shield жобасының көптеген басқа да компоненттері болғанмен, кейбір адамдар осы алғашқы жаңартуды Exec Shield деп атайды. Бірінші Exec Shield жаңартуы деректер жадын орындалмайтын, ал бағдарламалық жадын жазылмайтын деп белгілеуге тырысады. Бұл буферлік ағын және деректерді жазу арқылы кодты енгізу сияқты көптеген қауіпсіздік бұзушылықтарын болдырмайды. Exec Shield сонымен қатар mmap және heap базасы үшін жад кеңістігінің орналасуын кездейсоқ түрде өзгертеді. Жаңарту кодты енгізу және орындау қиындығын арттырады, көптеген эксплойттарды тиімсіз етеді. Exec Shield-ті толыққанды пайдалану үшін қосымшаларды қайта құрастыру қажет емес, бірақ кейбір қосымшалар (Mono, Wine, XEmacs, Mplayer) толық үйлесімді емес. Exec Shield жобасының нәтижесінде пайда болған басқа мүмкіндіктер: позицияға тәуелсіз орындалатын файлдар (PIE), Linux ядролары үшін жад кеңістігін кездейсоқ өзгерту, glibc ішкі қауіпсіздік тексерулерінің кең жиынтығы (үйінді және пішімдік тізбектерді пайдалануды қиындатады), GCC Fortify Source мүмкіндігі және GCC стек қорғаушысының портталуы мен біріктірілуі.

Іске асыру

Exec Shield код сегменті шегін пайдаланатын барлық x86 процессорларында жұмыс істейді. Exec Shield жұмыс істеу механизміне байланысты өте жеңіл, бірақ кездейсоқ виртуалды жад орналасуын толық қорғамайды. Егер CS шегі көтерілсе, мысалы, жоғары жадты орындау үшін mprotect функциясын шақыру арқылы, онда осы шектен төменгі жадтың қорғанысы жоғалады. Инго Молнар бұл туралы электрондық хат арқылы сөйлескенде атап көрсетті. Көптеген қосымшалар осы жағынан дұрыс жұмыс істейді; стек (маңызды бөлігі) кем дегенде, карталанған кітапханалардың үстінде орналасады, сондықтан қосымшаның тікелей шақырулары болмаса, орындалмайды. 2004 жылдың тамызынан бастап Exec Shield жобаларының ешқайсысы mprotect функциясын кез келген архитектурада шектеу арқылы жадты қорғауға тырыспайды; жад бастапқыда орындалмайтын болса да, кейін орындалуы мүмкін, сондықтан ядро қосымшаға жад беттерін бір уақытта жазуға және орындауға болатындай етіп белгілеуге рұқсат береді. Дегенмен, Қауіпсіздікті күшейтілген Linux жобасымен (SELinux) бірлесіп, Fedora Core дистрибутивінің стандартты саясаты көптеген орындалатын файлдар үшін мұндай әрекеттерге тыйым салады, тек үйлесімділік үшін бірнеше ерекшеліктер қарастырылған.

Тарих

Exec Shield Red Hat-тың түрлі адамдарымен әзірленді; алғашқы түзетуді Red Hat-тың Инго Молнар жасады және ол 2003 жылдың мамырында алғаш рет жарияланды. Ол Fedora Core 1-ден 6-ға дейін және Red Hat Enterprise Linux 3-ші нұсқасынан бастап қолданылады. Бұл жобаға Якуб Елинек, Ульрих Дреппер, Ричард Хендерсон және Арян ван де Вен сияқты мамандар да қатысты. Молнар 2007 жылы LWN.net сайтында: "[Exec Shield] бөліктері негізгі кодқа қосылды, бірақ оның маңызды бөлігі қосылмады" деп мәлімдеді.