Анализа на оддалечена експлоатациjа во linux кернел

20
Факултет за Информатички Науки и Компjутерско Инжeнерство Насока: Мрежни Технологии http://www.finki.ukim.mk Дипломска Работа Анализа на оддалечена експлоатациjа во Linux кернел 18.11.2016, 19 страни Ментор: д-р Боро Jакимовски Кандидат: Ева Танаскоска - 122124 {[email protected]} Установа: Универзитет Св. Кирил и Методиj - Скопjе Клучни зборови: Linux, оддалечена експлоатациjа, ранливост, подсистем, кернел

Upload: zero-science-lab

Post on 05-Apr-2017

67 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: Анализа на оддалечена експлоатациjа во Linux кернел

Факултет за Информатички Наукии Компjутерско ИнжeнерствоНасока: Мрежни Технологииhttp://www.finki.ukim.mk

Дипломска Работа

Анализа на оддалечена експлоатациjа во Linuxкернел

18.11.2016, 19 страни

Ментор: д-р Боро JакимовскиКандидат: Ева Танаскоска - 122124 {[email protected]}Установа: Универзитет Св. Кирил и Методиj - СкопjеКлучни зборови: Linux, оддалечена експлоатациjа, ранливост, подсистем, кернел

Page 2: Анализа на оддалечена експлоатациjа во Linux кернел

Содржина

Абстракт 2

1 Вовед 31.1 Мотивациjа и цел на истражувањето . . . . . . . . . . . . . . . . . . . . . . . . . . . 51.2 Слични истражувања . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

2 Стандарди за ранливости 62.1 Common Vulnerabilities and Exposures (CVE) . . . . . . . . . . . . . . . . . . . . . . 62.2 Common Vulnerability Scoring System (CVSS) . . . . . . . . . . . . . . . . . . . . . . 72.3 Common Weaknesses Enumeration (CWE) . . . . . . . . . . . . . . . . . . . . . . . . 9

3 Детали од истражувањето 113.1 Методологиjа . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113.2 Резултати . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

3.2.1 Дистрибуциjа на ранливости . . . . . . . . . . . . . . . . . . . . . . . . . . . 113.2.2 CVSSv2 базни оценки . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143.2.3 CWE класи . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

3.3 Анализа . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163.4 Заклучок . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

Библиографиjа 19

1

Page 3: Анализа на оддалечена експлоатациjа во Linux кернел

Абстракт

Голем дел од серверите, паметните уреди и суперкомпjутерите работат на Linux кернелот.Сеприсутноста на Linux е една од причините зошто безбедноста на овоj кернел треба да бидеприоритетна при дизаjн и имплементациjа.

Во ова истражување се опфатени ранливости кои се jавно познати и имаат доделен CVEидентификатор во National Vulnerability Database. Истражувањето покажа дека наjранливиотподсистем од Linux кернелот во однос на оддалечена експлоатациjа е мрежниот стек. Одреденимрежни драjвери и имплементации на мрежни податочни системи исто така сочинуваат значаендел од познатите мрежни ранливости во Linux.

Причините се употреба на небезбеден програмски jазик и ранливости кои настануваат какорезултат на несоодветни проверки на влез, што може да се заклучи по CWE класите кои сенаjприсутни во анализираните 192 ранливости. Мнозинството од ранливостите се оценети какосредно-ризични, но и броjот на критични ранливости е релативно висок.

2

Page 4: Анализа на оддалечена експлоатациjа во Linux кернел

Глава 1

Вовед

Linux историjата започнува во 1991 како личен проект на Линус Торвалдс со цел да креиранов бесплатен кернел за оперативен систем. Од тогаш, Linux кернелот постоjано е надградувани напредува. Linux кернелот е еден од наjголемите софтверски проекти со отворен код воисториjата. На секои 2-3 месеци има стабилни верзии, секоjа со значителни нови карактеристикии подобрени перформанси. Ратата на промени во кернелот постоjано се зголемува како што сезголемува и броjот на развивачи и компании кои придонесуваат со своjот код.

Флексибилноста на Linux кернелот е причина зошто истиот се употребува во наjразличнисредини, од телефони, возила, домакински апарати, до сервери и суперкомпjутери. Мегутоа,овоj брз развоj и различни примени доагаат со одредена цена. Секоjа нова промена во кернелотпретставува потенциjална опасност бидеjки често се прават промени кои иако се потполнофункционални, претставуваат нова закана за корисниците на овоj кернел доколку не се извршатодредени безбедносни проверки, наjчесто во подсистеми и функции кои примаат и манипулираатвлез од корисник, мрежа или друга функциjа.

Главниот проблем потекнува од фактот што Linux, како и сите UNIX базирани системи, несе развиени со фокус на безбедноста, [1] што гарантира голем броj на безбедносни пропусти.Областа во коjа UNIX-базираните системи се наjслаби во минатото беше заштита против падовии попречување на нормалната работа на системот - што воедно важи и до ден денес. Недостатокод проверки кои спречуваат да се користат голем броj (или бесконечно) ресурси сеуште претставу-ваат проблем во развоjот на Linux кернелот. Со оглед на тоа што самиот кернел не е првичнодизаjниран со акцент на безбедност, проблемот станува потежок бидеjки е покомплицирано да сепронаjде решение кое ке ги реши постоечките безбедносни проблеми, но и ке биде компатибилносо системите и апликациите кои го користат, без да предизвика дополнителни проблеми.

Со текот на времето, одредени безбедносни проблеми, како што е неправилна употреба на set-UID и set-GID битовите, постепено се редуцирани, но кернелот сеуште се соочува со одреденибезбедносни пропусти за кои нема унифициран пристап на решавање. Овие карактеристикипотекнуваат од основниот UNIX безбедносен модел - Discretionary Access Control (DAC) [2], коjе имплементиран во Linux. DAC е едноставен и ефективен метод, но не е соодветен за модернисредини бидеjки не заштитува од небезбеден код, и не покрива одредени ресурси, како што сепакетни текови. Еден од основните принципи при развоj на нови безбедносни карактеристики воLinux кернелот е што не смее да се попречи функционирањето на постоечките апликации, штоги ограничува можностите за развоj на напредни безбедносни механизми. Поради овие причини,инициjалните безбедносни механизми се базираат на постоечките DAC карактеристики. Една однив е POSIX Access Control Lists (ACL) - листи за пристап кои ги прошируваат постоечките DACлисти за пристап во однос на грануларност, овозможуваjки посебни пермисии за индивидуалникорисници и различни групи. Овие листи за пристап се менаџираат на диск со проширениатрибути кои содржат метаподатоци за датотеките. Друга карактеристика се POSIX Capabilities

3

Page 5: Анализа на оддалечена експлоатациjа во Linux кернел

чиjа цел е да се редуцира мокта на суперкорисникот, така што кога на одредена апликациjа исе потребни привилегии, ке ги добие само оние привилегии што и се потребни за да jа извршизадачата. Пример е CAP_MAC_ADMIN способноста коjа му овозможува на процесот привилегии заизвршување на мрежни операции, како што е конфигурациjа на интерфеjси, модификациjа нарутирачки табели и администрациjа на огнени ѕидови. Дел од овие привилегии не се доволногрануларни и му овозможуваат на процесот повеке привилегии од што реално му се потребни.Доколку напагач компромитира процес со одредена привилегиjа, се стекнува со истите привилегиисо кои располага процесот.

Namespaces (именски простори) се карактеристики кои изолираат и виртуелизираат ресурсиза процесите во системот, така што ресурсите на еден процес не се пристапни за друг. Често сеимплементираат со помош на Pluggable Authentication Modules (PAM).

Во однос на мрежна безбедност, Linux иплементира системи како што е Netfilter. Netfilter ерамка за филтрирање пакети коjа е имплементирана во Linux кернелот и игра многу важнаулога во безбедноста на Linux бидеjки Linux системи често се користат како jазли во мрежа,со што има потреба од анализа на сите протоколи кои ги поддржува и користи системот. Net-filter функционира на IP ниво и ги анализира сите пакети кои пристигнуваат и го напуштаатсистемот. Кернел модули можат да се закачат за оваа рамка за да jа анализираат содржинатана пакетите кои поминуваат низ системот. Еден од нив е iptables модулот коj се конфигурира одuserland (корисничкиот простор), со помош на IPv4 листи за пристап, и ip6tables за IPv6. Слично,ebtables овозможува филтрирање на линк ниво, а arptables нуди филтрирање на ARP пакети.Дополнително, мрежниот стек содржи и имплементациjа на IPsec што се користи за заштитана IP комуникации со имплементациjа на виртуелна приватна мрежа (VPN) или точка-до-точкабезбедност (point-to-point security).

Криптографското API е исто така неизбежна компонента од безбедносната архитектура наLinux кернелот и се употребува од страна на подсистемите, како што е IPsec имплементациjата.Linux Security Modules (LSM) API им овозможува на корисниците да се регистрираат и дадобиваат callback за одредни информации поврзани со безбедноста, слично на Netfilter.

Security Enhanced Linux (SELinux) е имплементациjа на грануларна контрола на пристапконфигурирана од администратор, и заштитува од одредени userland напади базирани на софтвер-ски грешки и погрешни конфигурации. Покраj овие безбедносни механизми, постоjат и ред другиимплементирани во различни дистрибуции, но не се во можност да нудат целосна заштита однапади на кернелот.

Во однос на безбедност на мемориjата, Linux имплементира механизми како што е AddressSpace Layout Randomization (ASLR) и NX (No eXecute) битот коj е често поддржан хардверскиили преку емулациjа. ASLR сместува одредени мемориски региони на кориснички процеси наслучаjни локации што спречува напади кои таргетираат специфични мемориски адреси. Оваатехника е прилично успешна во системи кои генерираат повеке ентропиjа, со што напагачотима потешкотии да ги погоди мемориските адреси кои му овозможуваат да го контролира текотна извршување, но во одредени случаеви е лесно да се заобиколи со внесување на NOP Sled- низа од NOP (No oPeration) инструкции кои го лизгаат текот на извршување до краjот нанизата каде се наога наjчесто jump инструкциjа што го пренасочува текот на извршување пожелба на напагачот. NX битот се користи за да се раздели мемориjата коjа содрши извршниинструкции од мемориjата коjа чува податоци. Оперативниот систем означува одредени областиод мемориjата како неизвршни, со што процесорот ке одбие да изврши код коj се наога во овиемемориски региони. Успехот на напагачот коj експлоатира ранливости во Linux кернелот зависиод имплементациjа на горенаведените заштитни мерки, но и од површината за напад коjа муовозможува да искористи различни вектори за напад. Поради овие причини, имплементациjана заштитни мерки не е доволна за одбрана од напагачи, особено кога станува збор за одбранаод напади кои може да се злоупотребат преку мрежа (remote exploits). Ранливости што можат

4

Page 6: Анализа на оддалечена експлоатациjа во Linux кернел

да се злоупотребат од оддалечен напагач претставуваат поголем ризик од локални ранливостибидеjки се полесни за експлоатациjа.

1.1 Мотивациjа и цел на истражувањетоОва истражување ги опфака мрежните ранливости кои се наогаат во Linux кернелот и можат

да се злоупотребат од оддалечен напагач, без локален пристап на системот. Оддалечена експлоата-циjа на кернелот има предност што резултира со root привилегии, за разлика од оддалеченаексплоатациjа во кориснички простор каде се во функциjа заштитните мерки на кернелот и честорезултираат со редуцирани привилегии. Од друга страна, неуспешна оддалечена експлоатациjаво кернелот резултира со пад на целиот оперативен систем, додека неуспешна оддалечена експлоа-тациjа во кориснички простор резултира само со пад на процесот или сервисот коj бил предметна експлоатациjа. Целта е да се идентификуваат наjранливите подсистеми, функциите коисодржат наjмногу ранливости, но и класите на ранливости кои се наjприсутни во Linux кернелот.Истражувањето ги опфака мрежните ранливости во Linux кернелот во периодот од 2004 до 2016година - 192 на броj. Податоците се собрани со помош на Python скрипта коjа парсира CVE(Common Vulnerabilities and Exposures) идентификатори од nvd.nist.gov базата (National Vulner-ability Database) и се класифицирани во однос на подсистемот во коj се наогаат, годината вокоjа се пронаjдени, влиjанието што го имаат, CWE (Common Weaknesses Enumeration) класатаи CVSS (Common Vulnerability Scoring System) оценката за проценка на ризик.

1.2 Слични истражувањаКонцептот на оддалечена експлоатациjа во кернел прв го претставува Barnaby Jack на Black

Hat USA конференциjата во 2005 година со неговата презентациjа Remote Windows Kernel Ex-ploitation: Step into the Ring 0 [3]. После него, други истражувачи, како што се Alfredo Ortegaи Gerardo Richarte почнаа да развиваат различни техники за експлоатациjа на кернелот и во2007 година jа обjавиjа првата ранливост предизвикана од претекување на heap структуратаво OpenBSD кернелот во IPv6 имплементациjата [4]. Dan Rosenberg, како еден од наjдобритеистражувачи во полето на безбедноста на Linux кернелот, во 2011 jа обjавува своjата презентациjаAnatomy of a Remote Kernel Exploit [5] со детална процедура за развивање на код за оддалеченазлоупотреба на Linux кернелот со помош на ранливост во ROSE протоколот. Други истражувачи,мегу кои и Jeff Vander Stoep во 2016, се занимаваат со други оперативни системи кои го користатLinux кернелот, како што е Android [6]. Во однос на заштита, Serguei A. Mokhov, Marc-AndreLaverdiere и Djamel Benredjem со своето истражување Taxonomy of Linux Kernel VulnerabilitySolutions [7] ги анализираат заштитните мерки против наjчестите ранливости во Linux кернелот,како и Haogang Chen, Yandong Mao, Xi Wang, Dong Zhou, Nickolai Zeldovich и M.Frans Kaashoekсо истражувањето Linux kernel vulnerabilities: State-of-the-art defenses and open problems [8].

5

Page 7: Анализа на оддалечена експлоатациjа во Linux кернел

Глава 2

Стандарди за ранливости

2.1 Common Vulnerabilities and Exposures (CVE)CVE [9] е речник од имиња за jавно познати безбедносни ранливости. CVE системот се

користи за референцирање на jавно познати безбедносни ранливости. Системот е одржуван одстрана на National Cybersecurity FFRDC, под MITRE корпорациjата. Документациjата дефинираCVE идентификатори, исто познати како CVE имиња и CVE броеви, кои се уникатни за jавнопознатите ранливости. Во минатото, CVE идентификаторите имаа статус на кандидати со префиксCAN- и потоа можеа да бидат унапредени во CVE, мегутоа кандидатски идентификатори повекене се користат и сите идентификатори се стандардно CVE. CVE идентификатори се доделуваатод CVE Numbering Authority (CNA), како што се:

1. MITRE Corporation функции како едитори и примарни CNA.

2. Одредени CNA доделуваат CVE идентификатори за своите продукти, како што се Mi-crosoft, Oracle, HP, Red Hat, и сл.

3. Трета страна координатор како што е CERT координациски центар може да додели CVEидентификатор на продукти што не се покриени од други CNA.

При истражување на ранливости или потенциjални ранливости, CVE идентификаторот помагаво процедурата. Причината зошто CVE системот помага е бидеjки во минатото, ранливоститево продукти добивале различни идентификатори и поради овие разлики, тешко било да сепроцени кога различни бази со ранливости референцираат една иста ранливост. Последицитебиле потенциjални дупки во покриеност на безбедносни дупки и недостаток од ефективна интеро-перабилност помегу различни бази со ранливости и алатки. Секоj производител користел различнаметрика за да го обjави броjот на ранливости или слабости кои ги пронашле, без стандарди заевалуациjа. CVE идентификаторите може да не се поjават во MITRE или NVD CVE базитеодредено време поради проблеми и пречки, или во случаеви кога ранливоста не е доволноинстражена. CVE идентификатори се доделуваат само за софтвер што е jавно обjавен, вклучител-но со бета верзии и други верзии кои се во широка употреба. Софтвер што не е jавно достапенне добива CVE. Дополнително, сервиси не добиваат CVE за ранливости во сервисот, освен акоранливоста постои во софтверски продукт коj е jавно достапен и го имплементира тоj сервис.

Во секоjа база на ранливости, има неколку полиња што се секогаш присутни:

• Опис: стандардизиран текстуален опис на проблемот. Пред да се обjават jавно деталитеод ранливоста, ова поле се обележува како резервирано до моментот кога ке се обjаватинформациите jавно. Некои CNA побаруваат блокови од CVE идентификатори однапред,со што истите се обележуваат како резервирани, иако можеби сеуште не се искористени заодредена ранливост. Овие описи се обележани со ** RESERVED **.

• Референци: листа од URLа и други информации за проблемот.

6

Page 8: Анализа на оддалечена експлоатациjа во Linux кернел

• Датум на записот: датумот кога е креиран записот. За CVE доделени од MITRE, датумотсоодветствува со тоj кога записот бил креиран. За записи доделени од CNA, датумот еистиот кога записот е исто така креиран од MITRE, не од CNA.

Форматот на CVE идентификатори до 1 Jануари 2014 година беше CVE-YYYY-NNNN, кадеYYYY jа претставува годината во коjа е пронаjдена ранливоста, а NNNN е секвентен броj коjсе инкрементира за секоjа последователна ранливост за коjа е доделен CVE ID. Денес CVEидентификаторите може да имаат четири или повеке цифри во секвентниот броj на идентифика-торот, така што може да се користат идентификатори во формат CVE-YYYY-NNNNN и CVE-YYYY-NNNNNN со цел да може да се доделат повеке од 9999 идентификатори годишно. СекоjCVE запис во National Vulnerability Database (NVD), покраj основните CVE информации, има иинформации околу влиjанието на ранливоста и ризиците. На пример, ранливоста CVE-2015-1465[10] е пронаjдена во 2015 година, што може да се види од самиот идентификатор на ранливоста.NVD записот ги содржи сите потребни информации што ги опишуваат ризиците и векторите занапад.

2.2 Common Vulnerability Scoring System (CVSS)CVSS [11] е бесплатен и отворен индустриски стандард за проценка на сериозноста на ранливос-

тите. Одржуван е од страна на Forum of Incident Response and Security Teams (FIRST), чиjа целе да им помогне на тимовите за одговор на компjутерски инциденти. CVSS доделува оценкиза сериозноста, со цел да помогне во приоретизирање на одговор и распределба на ресурси засанирање на заканите. Оценката се пресметува со помош на формула коjа зависи од неколкуметрики што земаат во предвид параметри како што се едноставност на експлоатациjа и импактна злоупотребата.

CVSS се состои од три метрички групи: базни, временски и околински, прикажано на слика2.1 Базната група ги претставува внатрешните квалитети на ранливоста, временската група гирефлектира карактеристиките на ранливост коjа се менува со текот на времето, и околинскатагрупа ги претставува карактеристиките на ранливоста што се уникатни за средината на корисни-кот. Базните метрики резултираат со оценка од 0 до 10, каде што 10 претставува сериознаранливост. Оваа оценка може да се модифицира со помош на временските и околинските метрики.CVSS оценката исто така се претставува како векторска низа коjа е комперсирана верзиjа одвредностите што се користат за изведување на оценката. Моменталната верзиjа на CVSS е v3,мегутоа дел од CVE записите кои се опфатени во ова истражување немаат CVSSv3 оценка,поради што само CVSSv2 оценките се земени во предвид. Главните промени во CVSSv3 сеоднесуваат на ранливости во веб апликации, кои со новиот систем добиваат попрецизна проценкана ризиците со помош на додатни метрики. Сите CVE записи во NVD базата содржат информацииза CVSSv2 базната оценка, но моментално не содржат информации за временските и околинскитеоценки.

CVSSv2 базните метрики вклучуваат шест параметри, од кои три се однесуваат на оценкатана злоупотребливост:

• Access Vector (AV) - рефлектира како ранливоста се злоупотребува. Возможни вредностиза оваа метрика се Local (L) - напагачот може да jа злоупотреби ранливоста локално; Adja-cent Network (A) - напагачот може да jа злоупотреби ранливоста во локален или колизискидомен; Network (N) - напагачот може да jа злоупотреби ранливоста преку оддалеченамрежа.

• Access Complexity (AC) - оваа метрика jа мери комплексноста на нападот откако напага-чот ке доjде во контакт со системот. Возможни вредности се High (H) - потребни сеспециjализирани услови за експлоатациjа; Medium (M) - пристапните услови имаат делумниограничувања; Low (L) - не се потребни специjализирани услови.

7

Page 9: Анализа на оддалечена експлоатациjа во Linux кернел

Слика 2.1: CVSSv2 метрички групи.

• Authentication (Au) - мери колку пати е потребно напагачот да се автентицира насистемот со цел да jа експлоатира ранливоста. Возможни вредности се Multiple (M) -напагачот е потребно да се автентицира два или повеке пати на системот; Single (S) -потребно е напагачот еднаш да се автентицира на системот; None (N) - не е потребнаавтентикациjа за злоупотреба.

Останатите три метрики се однесуваат на влиjанието на ранливоста:

• Confidentiality Impact (C) - оваа метрика го мери влиjанието на доверливоста приуспешна експлоатациjа. Возможни вредности се None (N) - нема влиjание на доверливоста;Partial (P) - има делумно откривање на информации или пристап до одредени датотеки;Complete (C) - целосно откривање на информации и пристап до сите податоци во системот.

• Integrity Impact (I) - влиjание врз интегритетот при успешна експлоатациjа. Возможнивредности се None (N) - интегритетот не е загрозен; Partial (P) - возможна е модификациjаврз дел од податоците од системот; Complete (C) - интегритетот на системот е целоснокомпромитиран и напагачот може да ги модифицира сите податоци.

• Availability Impact (A) - влиjание на достапноста на системот при успешна експлоатациjа.Возможни вредности се None (N) - нема влиjание врз достапноста на системот; Partial(P) - редуцирани перформанси или прекини во достапноста на ресурсот; Complete (C) -компромитираниот ресурс е целосно недостапен.

Краjната базна оценка на ранливоста се изведува со помош на горенаведените метрики. Например, ранливоста CVE-2015-1465 во NVD базата е со CVSSv2 базна оценка 7.8, што jа става вогрупата на високо-ризични ранливости. Векторот на ранливоста е AV:N/AC:L/Au:N/C:N/I:N/A:C,што укажува дека ранливоста може да се злоупотреби од оддалечена мрежа, нападот е со нискакомплексност, не е потребна автентикациjа, нема влиjание врз доверливоста и интегритетот, ноцелосно jа оневозможува достапноста на системот. Оценката за влиjание е 6.9, додека оценкатаза злоупотребливост е 10.

8

Page 10: Анализа на оддалечена експлоатациjа во Linux кернел

2.3 Common Weaknesses Enumeration (CWE)Скоро секоjа ранливост во NVD базата има доделен CWE идентификатор коj jа определува

класата на слабости. CWE [12] е:

• Формална листа од типови на софтверски слабости коjа се користи за да се опишат софтвер-ски ранливости во архитектура, дизаjн или код.

• Стандард за мерење на безбедносни алатки кои ги таргетираат овие ранливости.

• Како заеднички основен стандард за идентификациjа на ранливости, и начини за справувањеи намалување на ризиците.

Проектот е спонзориран од страна на National Cybersecurity FFRDC под сопственост на MITREкорпорациjата. MITRE работи на категоризациjа на ранливости од 1999, почнуваjки со CVE(Common Vulnerabilities and Exposures) листата. Како дел од развоjот на CVE, MITRE развивапрелиминарна класификациjа и категоризациjа на ранливости, напади, грешки и други концептиза полесно да се дефинираат софтверски слабости, коjа со тек на време еволуира во денешнатаCWE листа и класификациско дрво кои служат како механизам за опишување на можностиза проценка на код во однос на покриеност на различни CWE класи. CWE листата е постоjанонадградувана со нови класификации и категории кои помагаат за прецизна проценка на ризикотод одредена слабост, како може таа слабост да се трансформира во ранливост во системот итехниките за намалување на истиот. CWE категориите се во форма на дрво, каде една категориjаима повеке деца категории кои споделуваат заеднички карактеристики.

Во однос на CWE категориjата, ранливостите кои влегуваат во опсегот на ова истражувањеспагаат во една од следните категории:

• CWE-399 - Resource Management Errors: опфака ранливости кои се поврзани сонесоодветно менаџирање на системски ресурси од страна на кернелот. Во оваа категориjаспагаат грешки како што се: неконтролирано трошење на ресурси, протекување на мемориjа,недоволна алокациjа на ресурси, користење на мемориjа по ослободување, дереференцирањена невалиден покажувач и сл.

• CWE-119 - Improper Restriction of Operations within the Bounds of a Memo-ry Buffer: софтверот извршува операции на мемориски бафер, но може да чита или дазапишува во мемориски локации надвор од предвидените граници на баферот. Одредениjазици, како што се C и C++, дозволуваат директно адресирање на мемориски локации и невршат автоматски проверски дали овие локации се валидни за меморискиот бафер што сереференцира. Ова овозможува на напагач да изврши операции за читање или запишувањена мемориски локации што се асоцирани со други променливи, податочни структури иливнатрешни програмски податоци. Како резултат, напагач може да изврши произволен код,да го измени текот на извршување, да чита осетливи информации или да предизвика пад насистемот. Друго име за оваа класа на слабости е корупциjа на мемориjа. Слабости во оваакатегориjа се класично претекување на баферот, читање и запишување надвор од граници,несоодветно справување со параметар за должина, повратна вредност на покажувач надвород очекуван опсег, пристап до мемориска локациjа пред почетокот на баферот, пристап донеинициjализиран покажувач, и сл.

• CWE-20 - Improper Input Validation: софтверот не валидира или неточно валидиравлез што може да влиjае на контролниот или податочниот тек на програмата. Напагач можеда внесе влез во форма што не е очекувана од апликациjата, со што делови на системот кепримат невалиден влез што може да резултира со изменет тек на извршување, произволнаконтрола на ресурс или произволно извршување код. Овоj проблем може да се поjави восекоj програмски jазик и зависи од контролите што ги има поставено програмерот. Во оваакатегориjа спагаат претежно веб апликациски ранливости, како што се SQL инjекциjа иCross-site scripting, но вклучува и ранливости кои го афектираат кернелот, како што се

9

Page 11: Анализа на оддалечена експлоатациjа во Linux кернел

контрола на подесувања, несоодветно валидирање на индекс на низи, NULL покажувачдереференцирање, претекување на цел броj, и сл.

• CWE-189 - Numeric Errors: се jавуваат како резултат на несоодветни пресметки иликонверзии на броеви. Често резултираат со алокациjа на поголем броj на мемориски локацииво бафер кои можат да бидат искористени од напагач. Тука спагаат слабости како што сенесоодветна валидациjа на индекс на низи, претекување и подтекување на баферот, неточнипресметки, неточна конверзиjа помегу нумерички типови и сл.

• CWE-362 - Concurrent Execution using Shared Resource with Improper Syn-chronization (’Race Condition’): слабости кои настануваат кога програмата содржикодна секвенца коjа работи конкурентно со друг код, и на кодната секвенца и е потребенпривремен, ексклузивен пристап до споделен ресурс, но постои временски прозорец вокоj споделениот ресурс се модифицира од друга кодна секвенца коjа работи конкурентно.Безбедносни импликации има кога синхронизациjата е во безбедносно-критичен сегмент,како што е проверки дали корисникот е автентициран или модификациjа на важни состоjбе-ни информации. Програмерите често претпоставуваат дека одредени кодни секвенци сеизвршуваат премногу брзо за да бидат афектирани од друга кодна секвенца. Пример заваква операциjа е x++ операциjата коjа во кодот можеби изгледа атомично, но е всушностнеатомична бидеjки вклучува три операции - читање на оригиналната вредност на x,пресметка x+1 и запишување на резултатот во x. Примери се справувачите со сигналикои можат да доjдат до ваква состоjба, трка во нишки, Time-of-check Time-of-use трка,трка во промена на контекст и сл.

• CWE-200 - Information Exposure: намерно или ненамерно откривање на информациикои не треба да бидат достапни. Информациjата може да биде осетлива во зависностод функционалноста на програмот, како што се приватни пораки во апликациjа, или даоткрива информации за апликациjата или средината што може да се искористат во усовршу-вање на поуспешен напад, како што е инсталациски пат на апликациjа. Во оваа категориjаспагаат слабости како што се изложување на информации преку испратени податоци,изложување на информации преку пораки за грешки, намерно откривање податоци, и сл.

• CWE-264 - Permissions, Privileges, and Access Controls: слабости кои се поврзанисо менаџирање на пермисии, привилегии и други безбедносни мерки кои се користат заспроведување контрола на пристап. Вклучува слабости во однос на несоодветно менаџирањена сопственост на ресурси, несоодветна контрола на пристап, и сл.

Останатите CWE категории вклучуваат конфигурациски слабости, криптографски слабости,автентикациски слабости и друго. Дел од ранливостите немаат доделен CWE идентификатор,бидеjки нема доволно информации околу слабоста или бидеjки ранливоста вклучува експлоатациjана повеке класи на слабости.

10

Page 12: Анализа на оддалечена експлоатациjа во Linux кернел

Глава 3

Детали од истражувањето

3.1 МетодологиjаВо истражувањето влегуваат 192 ранливости со доделени CVE идентификатори. Податоците

се собрани со помош на Python скрипта коjа со Xpath изрази ги собира релевантните податоциза секоj CVE идентификатор соодветно од NVD базата. Треба да се напомене дека некои CVEидентификатори со еден запис опфакаат две или повеке софтверски грешки кои индивидуалноили заедно можат да се злоупотребат од напагач. Бидеjки целта е да се идентификуваат наjранли-вите подсистеми во кернелот, како и класите на ранливости кои се наjзастапени, секоj CVE записе независно анализиран.

Некои CVE записи не содржат целосни податоци за техничките детали на ранливоста, нонаправена е наjприближна проценка во однос на подсистемите кои би биле наjвероjатно опфатениод истата. Некои CVE записи во NVD базата содржат информациjа дека имаат мрежен векторза напад (Access Vector: Network или Adjacent Network), но всушност напагачот мора да ималокален пристап на системот за да ги злоупотреби. Овие ранливости не се опфатени во истражува-њето, туку само оние ранливости кои вистински можат да се злоупотребат од оддалечен напагач,пример преку испракање на специjално изградени пакети кои предизвикуваат софтверски грешкина страната на примачот. Земени се во предвид ранливости кои се од 2004 година - поточноранливости во кернелите од верзиjа 2.6, до 2016 верзиjа 4.8, кои имаат 3+ базна оценка поCVSSv2.

Извршена е анализа на дистрибуциjата на ранливостите низ годините со цел да се утврди далиновите подсистеми кои се имплементираат се дизаjнираат со безбедност во предвид и дали тоавлиjае на броjот на ранливости годишно. Полиња од интерес се CVSSv2 оценката, тип на влиjание(Impact Type) и CWE идентификатор. Со оглед на тоа што CVE записите не содржат техничкиинформации за функциите и подсистемите кои ги опфака ранливоста, направена е анализа насекоjа ранливост со цел да се добие статистика за броjот на ранливости по подсистем.

3.2 Резултати

3.2.1 Дистрибуциjа на ранливостиОд сите 192 ранливости кои можат да се злоупотребат од оддалечена мрежа, како што може да

се види на слика 3.1, 126 (65.62%) се наогаат во мрежниот стек на кернелот - net/ , 32 (16.66%)се во подсистемот за драjвери - drivers/, 21 (10.93%) во подсистемот на податочните системи -fs/ , 3 (1.56%) во include подсистемот - include/ , а останатите 10 (5.20%) ранливости спагаатво некоj друг подсистем или нема доволно информации за соодветно да се категоризираат. Од

11

Page 13: Анализа на оддалечена експлоатациjа во Linux кернел

65.62%

16.66%10.93%

1.56%5.20%

net/drivers/fs/include/Other

Слика 3.1: Дистрибуциjа на ранливости во подсистемите.

126 ранливости во мрежниот стек, прикажано на слика 3.2, наjголем броj ранливости содржиnet/ipv4 - 28 (22.22%). Во овоj подсистем карактеристични се Netfilter кодот коj е задолженза пакетна анализа во кернелот со 6 ранливости, tcp_input.c со 5, ICMP имплементациjата со3 и механизмот за фрагментациjа со 3. Втор е Stream Control Transmission Protocol (SCTP)- net/sctp подсистемот со вкупно 24 (19.04%) ранливости. Посебно ранливи се датотекитеassociola.c, sm_make_chunk.c и sm_statefuns.c со по 4 ранливости во секоjа, и input.c со 3ранливости. Трет по броjност е net/ipv6 подсистемот со 19 (15.07%) ранливости. Иако ранливос-тите се претежно дистрибуирани низ различните датотеки, карактеристични се exthdrs.c соJumbo frame функционалноста во IPv6 со 3 ранливости и addrconf.c со 2 ранливости. Netfilter -net/netfilter подсистемот содржи 12 (9.52%) ранливости, каде 6 се во conntrack функционал-носта за следење на состоjба на конекции, од кои 3 се во nf_conntrack_proto_sctp.c. 7 (5.55%)ранливости има во jадрото на мрежниот подсистем - net/core кои се дистрибуирани низ различнидатотеки, од кои 2 се во sock.c.

22.22%19.04%

15.07%

9.52%

5.55%3.17%3.17%2.38%2.38%2.38%1.58%1.58%1.58%1.58%

1.58%

7.14%

net/ipv4net/sctpnet/ipv6net/netfilternet/corenet/cephnet/rosenet/dccpnet/mac80211net/8021qnet/x25net/econetnet/wirelessnet/batman_advnet/bridge

Other

Слика 3.2: Дистрибуциjа на ранливости во net/ подсистемот.

12

Page 14: Анализа на оддалечена експлоатациjа во Linux кернел

Останатите ранливости се дистрибуирани низ различни подсистеми, како што се Remote Op-erations Service Element (ROSE) протоколот - net/rose и Ceph имплементациjата во net/ceph,двата со по 4 (3.17%) ранливости. Во Ceph имплементациjата, 3 ранливости се во auth_x.cдатотеката коjа се справува со автентикациjа. Следуваат net/dccp, net/mac80211 и net/8021q сопо 3 (2.38%) ранливости поединечно. Со по 2 (1.58%) ранливости се net/x25 во x25_facilities.c,net/econet во af_econet.c, net/wireless во scan.c, net/batman_adv и net/bridge. Останатитеранливости се во другите подсистеми во net/ и сочинуваат 7.14% од вкупниот броj на ранливостиво мрежниот стек.

Од 192 ранливости, прикажано на слика 3.3, 32 (16.66%) се во драjверите - претежно драjверишто се задолжени за справување со мрежен сообракаj. Од вкупно 32 ранливости, 19 (59.37%)се во drivers/net од кои 6 се во имплементациjата за безжична комуникациjа, и по 3 воe1000_main.c и r8169.c. 4 (12.5%) ранливости се во drivers/staging/ozwpan. Со по 2 (6.25%)ранливости се подсистемите drivers/infiniband во cma.c, drivers/media/dvb во dvb_net.c иdrivers/usb. Останатите 3 ранливости се наогаат во други подсистеми под drivers/ .

59.37%

12.5%6.25%6.25%

6.25%

9.37%

drivers/netdrivers/staging/ozwpandrivers/infinibanddrivers/media/dvbdrivers/usbOther

Слика 3.3: Дистрибуциjа на ранливости во drivers/ подсистемот.

Во однос на ранливостите во податочните системи во Linux, прикажано на слика 3.4, 21(10.93%) ранливост, од вкупно 192, се во fs/ подсистемот. Мнозинството се во Common InternetFile System (CIFS) - fs/cifs имплементациjата, поточно 7 (33.33%), од кои 3 се во cifssmb.c,2 во connect.c. На второ место е Network File System (NFS) имплементациjата, каде 5 (23.80%)се во серверската имплементациjа на NFS лоцирана во fs/nfsd.c, од кои 2 во nfs4acl.c, а 4(19.04%) се во имплементациjата на клиентот во fs/nfs, од кои 2 се во nfs4proc.c. Со по 2(9.52%) ранливости се fs/lockd и fs/smbfs, додека една ранливост се наога во друг подсистемпод fs/.

Во include/ има 3 (1.56%) ранливости, од кои 2 (66.66%) се во include/linux во netdevice.h.Останатите 10 (5.20%) ранливости се претежно дистрибуирани низ другите подсистеми кои несе под net/, drivers/, include/ или fs/.

13

Page 15: Анализа на оддалечена експлоатациjа во Linux кернел

33.33%23.80%

19.04%9.52%

9.52%

4.76%

fs/cifsfs/nfsd.cfs/nfsfs/lockdfs/smbfsOther

Слика 3.4: Дистрибуциjа на ранливости во drivers/ подсистемот.

Сите ранливости кои влегуваат во истражувањето се пронаjдени од 2004 до 2016 и нивнатадистрибуциjа е прикажана на слика 3.5. Во 2004 биле приjавени 5 ранливости, во 2005 13ранливости, во 2006 19 ранливости, во 2007 10 ранливости, во 2008 11 ранливости, во 2009 иво 2010 по 20 ранливости, во 2011 32 ранливости, во 2012 10 ранливости, во 2012 13 ранливости,во 2013 13 ранливости, во 2014 22 ранливости, во 2015 12 ранливости и во 2016 5 ранливости, домоментот на истражувањето.

2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016

0

10

20

30

Year

Num

berof

vulnerab

ilities

Слика 3.5: Дистрибуциjа на ранливости по година.

3.2.2 CVSSv2 базни оценкиCVSSv2 базните оценки на слика 3.6 покажуваат дека мнозинството од ранливостите, поточно

98 (51.04%), имаат оценка 7.0 - 7.9 што спага во опсегот на високо-ризични ранливости. Потоаследуваат ранливостите со оценки 5.0 - 5.9 со 47 (24.47%), кои спагаат во средно-ризичниранливости. Со оценка 6.0 - 6.9 се 15 (7.81%) од ранливостите кои исто така спагаат во категориjана средно-ризични ранливости. На четврто место се ранливостите со оценка 10.0, со вкупно13 (6.77%) ранливости кои спагаат во категориjа на критични ранливости. Со оценки 9.0 -9.9 и 4.0 - 4.9 се по 6 (3.12%) ранливости поединечно, кои спагаат во групата на критични исредно-сериозни ранливости соодветно. Со оценка 3.0 - 3.9 се вкупно 4 (2.08%) ниско-ризичниранливости. Преостанатите 3 (1.56%) ранливости се со оценка 8.0 - 8.9, рангирани како високо-

14

Page 16: Анализа на оддалечена експлоатациjа во Linux кернел

ризични.

2.08%3.12%

24.47%7.81%

51.04%1.56%3.12%

6.77%

3.0 - 3.94.0 - 4.95.0 - 5.96.0 - 6.97.0 - 7.98.0 - 8.99.0 - 9.910.0

Слика 3.6: Дистрибуциjа на CVSSv2 базни оценки.

3.2.3 CWE класиИако не е совршено прецизна, CWE класата на слабости укажува коj тип на ранливости е

наjзастапен. Бидеjки CWE класификациjата е креирана веке откако CVE идентификаторите сево широка употреба, дел од CVE записите во NVD не содржат информациjа за CWE класата наслабост, претежно записите од 2004 и 2005 година, но и неколку понови. Делумно, недостатокод класификациjа се должи и на фактот дека некои CVE идентификатори покриваат две илиповеке ранливости кои би можеле да влезат во повеке класификации, или нема доволно техничкиинформации за ранливоста.

Покраj CWE класата, NVD содржи и информации за типот на влиjание кое ранливоста го имаврз нападнатиот систем. Една ранливост може да има повеке различни типови на влиjание врзсистемот, како што се овозможуваjки на напагач да открие осетливи информации за системоти притоа да му овозможува да го прекине нормалното функционирање на сервисот. Прикажаново табела 3.1, наjголем броj на ранливости резултираат со прекин на сервисот, поточно од 192ранливости 176 му овозможуваат на напагач да предизвика прекин во работата на системот. 50овозможуваат откривање на осетливи информации за системот. 31 ранливост му дозволуваатна напагач да изменува податоци во системот, нарушуваjки го интегритетот. 3 ранливостирезултираат со администраторски пристап и целосно нарушување на доверливоста, интегритетоти пристапноста, додека 4 ранливости резултираат со кориснички пристап и делумно нарушувањена доверливоста, интегритетот и пристапноста.

Табела 3.1: Броj на ранливости по влиjание.Allows unauthorized modification 31

Allows disruption of service 175

Allows unauthorized disclosure of information 50

Provides administrator access, Allows complete confidentiality,integrity, and availability violation

3

Provides user account access, Allows partial confidentiality,integrity, and availability violation

4

15

Page 17: Анализа на оддалечена експлоатациjа во Linux кернел

Според слика 3.7, наjзастапена CWE класа на слабости е Resource Management Errors со 38(19.79%) ранливости кои припагаат во оваа категориjа. Втора по броjност е Buffer Errors со29 (15.10%) ранливости. Следна е класата Input Validation со 22 (11.45%) ранливости, по коjаследи Numeric Errors со 21 (10.93%). Race Conditions ранливости се 9 (4.68%), приближно соInformation Leak / Disclosure ранливости кои се 8 (4.16%) на броj. Останатите класи имаатзначително помало присуство, од кои 3 (1.56%) спагаат под Permissions, Privileges, and AccessControl, додека Configuration, Cryptographic Issues, Authentication Issues, Code и Other имаат по2 (1.04%) ранливости од секоjа класа. На последно место е Security Features класата, од коjа имасамо 1 (0.52%) ранливост. Останатите 51 (26.56%) ранливости немаат CWE идентификатор закласа на слабост од причина што нема доволно информации или едноставно не им бил доделенпри формирање на записот.

19.79%

15.10%11.45%

10.93%

4.68%4.16%

1.56%1.04%1.04%1.04%1.04%1.04%0.52%

26.56%

Resource Management ErrorsBuffer ErrorsInput ValidationNumeric ErrorsRace ConditionsInformation Leak / DisclosurePermissions, Privileges, and Access ControlConfigurationCryptographic IssuesAuthentication IssuesCodeOtherSecurity FeaturesNo CWE

Слика 3.7: Дистрибуциjа на CVSSv2 базни оценки.

3.3 АнализаРезултатите покажуваат дека во Linux кернелот има неколку подсистеми во кои се сконцентри-

рани мнозинството од ранливостите кои можат да се злоупотребат од оддалечен напагач. net/ipv4подсистемот содржи наjголем броj на ранливости, што е очекувано со оглед на тоа што IPv4имплементациjата е стара. Во времето кога имплементациjата била првично осмислена, не билпредвиден проблемот со безбедноста на системите. net/sctp подсистемот е релативно понов, нокомплексноста на протоколот, коj воедно треба да го замени TCP во иднината, прави ранливоститево овоj подсистем да бидат неизбежни, без разлика што самиот SCTP протокол е дизаjниран собезбедност во предвид. net/ipv6, исто така релативно нов подсистем, страда од истите проблемикако SCTP - комплексен неопходен протокол коj е дизаjниран со безбедност во предвид, носамата имплементациjа не е отпорна на ранливости поради фактот што овоj подсистем треба дасе справува со скоро секоj пакет што влегува во системот. net/netfilter е исто така еден одпокритичните подсистеми коj е одговорен за анализа на сообракаjот коj влегува и излегува одсистемот, со што не е изненадно што и овоj подсистем страда од слични проблеми како и другитеимплементации на мрежни подсистеми. Модерните напади креираат потреба од грануларноследење на комуникациjа, со што се зголемува површината коjа евентуален напагач би можелда jа злоупотреби.

Мрежните драjвери во drivers/net исто така сносат голема одговорност за адаптациjа насообракаjот при влегување и излегување од системот, со што и овоj подсистем е очекувано дасодржи одреден броj на ранливости.

16

Page 18: Анализа на оддалечена експлоатациjа во Linux кернел

Во однос на податочните системи, fs/nfs* и fs/cifs подсистемите претставуваат посебенризик бидеjки мрежните податочни системи почнуваат да имаат широка примена, но и притоастрадаат од ранливости како резултат на справувањето со мрежен сообракаj кое треба да им jаовозможи нивната карактеристична функционалност.

Без разлика на броjот на ранливости, мнозинството резултираат со прекинување на сервисотили пад на системот, а само малку овозможуваат на оддалечен напагач да изврши произволенкод на системот. Ова се должи на фактот што повекето ранливости се резултат на дереференцира-ње на NULL покажувач. Наjчесто, дереференцирање на NULL покажувач го прекинува работење-то на системот со сегментациски дефект, освен кога софтверот вклучува и код коj може да сесправи со овие исклучоци. Во одредени ситуации, дереференцирање на NULL покажувач можеда резултира со прескокнување на некои безбедносни проверки, што е покритична ранливостод прекин на сервис, или да открие информации за програмата кои може да се злоупотребат.Фактот што мнозинството ранливости се во CWE класи на грешки со менаџирање на ресурси,валидациjа на влез, грешки со броеви и грешки со бафери често се должи на употребата нанебезбеден jазик, како што е C, коj овозможува поголема брзина на извршување во споредба содруги jазици, но по цена на недостаток на контроли, со што задачата за санирање на несоодветенвлез од корисник останува на програмерот. Проекти со отворен код, како што е Linux кернелот,секогаш ке бидат изложени на овие грешки од причина што е непрактично да се прави темелнапроверка на кодот за безбедносни пропусти пред да биде внесен во главната гранка.

Во однос на CVSS оценка, не изненадува фактот што повекето ранливости спагаат во опсеготна средно-ризични ранливости, но фактот што има поголем броj на ранливости со оценка 10во споредба со ниско-ризични ранливости, покажува дека е неопходно да се воведе построгаконтрола во кодот коj е пишуван од страна на припадници на заедницата на отворен код. Броjотна приjавени ранливости по година варира, со тоа што во периодот од 2009 до 2011 се приjавенинаjголем броj на ранливости. За жал, и покраj тоа што новите системи се имплементираатсо безбедност во предвид, броjот на ранливости не се редуцира со текот на годините. Броjот наранливости во 2016 не е комплетен бидеjки истражува-њето е извршено пред краjот на годината.

Класичен пример за оддалечена експлоатациjа е ранливоста CVE-2011-1493 коjа Dan Rosen-berg [5] jа обjаснува во своjата презентациjа Anatomy of a Remote Kernel Exploit. Ранливостае во ROSE протоколот каде при размена на пораки за поддржани опции во комуникациjата,не се врши проверка на вредноста за должина, со што се копираат податоци без да се извршипроверка на граници, резултираjки со преполнување во стекот. Причината е индексна грешка вонизата во rose_parse_national функциjата во net/rose/rose_subr.c. CVSSv2 базната оценкае 7.5 (високо-ризична) со вектор AV:N/AC:L/Au:N/C:P/I:P/A:P. Ранливоста се наога во следниоткод:

l = p[1];...else if (*p == FAC_NATIONAL_DIGIS) {

fac_national_digis_received = 1;facilities->source_ndigis = 0;

facilities->dest_ndigis = 0;for (pt = p + 2, lg = 0 ; lg < l ; pt += AX25_ADDR_LEN, lg += AX25_ADDR_LEN) {

if (pt[6] & AX25_HBIT)memcpy(&facilities->dest_digis[facilities->dest_ndigis++], pt, AX25_ADDR_LEN);

elsememcpy(&facilities->source_digis[facilities->source_ndigis++],pt,AX25_ADDR_LEN);

}}

17

Page 19: Анализа на оддалечена експлоатациjа во Linux кернел

Доколку напагачот jа модифицира своjата ROSE имплементациjа да испрака пакети со преголемополе за должина за FAC_NATIONAL_DIGIS, со додадени NOP (No oPeration - 0x90) инструкции,текот на извршување ке продолжи по NOP инструкциите, по што напагачот може да поставидруги инструкции, како што се jump и call и да го пренасочи повторно текот кон адреса коjасе наога во стекот и да изврши произволен код.

3.4 ЗаклучокLinux кернелот во текот на своjата еволуциjа има претрпено многу промени во своjата структура

кои влиjаеле на безбедноста. Старите протоколи од раните денови на интернетот имале многубезбедносни грешки кои не биле предвидени при имплементациjа, но и поновите протоколи коисо своjата комплексност носат и зголемен броj на ранливости. Како што напредува кернелот иму се додаваат нови протоколи и подсистеми, така ке се зголемува и површината за напад.Бидеjки оддалечена експлоатациjа претставува еден од посериозните безбедносни проблеми,потребно е да се обрне посебно внимание на подсистемите кои се задолжени со справување сомрежен сообракаj и примаат влезови од корисници. Linux кернелот се употребува се почесто вонаjразлични уреди - од домашни IoT уреди до суперкомпjутери, со што се зголемува и потребатаод безбедни протоколи. Општата состоjба на безбедноста на кернелот не се подобрува, што можево иднина да доведе до посериозни проблеми во околини каде безбедноста е од критична важност.Затоа е неопходно секоj корисник и секоj администратор да превземе дополнителни мерки противоддалечена експлоатациjа, како што се огнени ѕидови и системи за детекциjа на напади, но исекоj програмер коj работи со осетливи системи да развива код ставаjки jа безбедноста на првоместо.

18

Page 20: Анализа на оддалечена експлоатациjа во Linux кернел

Библиографиjа

[1] Ritchie, Dennis M. "‘On the Security of UNIX."UNIX Supplementary Documents (1979).

[2] Morris, James. Overview of Linux Kernel Security Features, [Online] www.linux.com (2013)

[3] Jack, Barnaby. "Remote Windows kernel exploitation: Step into the ring 0."Aliso Viejo, Cal.:eEye Digital Security (2005).

[4] Ortega, Alfredo and Richarte, Gerardo. OpenBSD’s IPv6 mbufs remote kernel buffer overflow,[Online] www.coresecurity.com (2007)

[5] Rosenberg, Dan. "Anatomy of a remote kernel exploit."Virtual Security Research (2011).

[6] Stoep, Jeff V. "Android: protecting the kernel"Linux Foundation (2016)

[7] Mokhov, Serguei A., Marc-Andre Laverdiere, and Djamel Benredjem. "Taxonomy of linux ker-nel vulnerability solutions."Innovative Techniques in Instruction Technology, E-learning, E-assessment, and Education. Springer Netherlands (2008)

[8] Chen, Haogang, et al. "Linux kernel vulnerabilities: State-of-the-art defenses and open prob-lems."Proceedings of the Second Asia-Pacific Workshop on Systems. ACM (2011).

[9] MITRE Corporation. About CVE [Online] cve.mitre.org (2016)

[10] National Vulnerability Database. Vulnerability Summary for CVE-2015-1465 [Online]web.nvd.nist.gov (2015)

[11] Forum of Incident Response and Security Teams. Common Vulnerability Scoring System [Online]www.first.org (2015)

[12] MITRE Corporation. About CWE [Online] cwe.mitre.org (2014)

19