Сигурност

10 Видове уязвимости в сигурността

10 Видове уязвимости в сигурността
Неволен или случаен дефект в софтуерния код или която и да е система, която го прави потенциално експлоатационен по отношение на достъпа до незаконни потребители, злонамерено поведение като вируси, троянски коне, червеи или друг зловреден софтуер, се нарича уязвимост в сигурността. Използването на софтуер, който вече е експлоатиран, или използването на слаби и пароли по подразбиране също води до това системата да стане уязвима за външния свят. Този тип уязвимости на сигурността изискват корекция, за да се предотврати повторното използване на хакери, използвани върху тях, за да се получи неоторизиран достъп до системата. Уязвимостта в сигурността, наречена още дупка или слабост в сигурността, е недостатък, грешка или грешка при изпълнението на код, дизайн и архитектура на уеб приложение и сървъри, което, ако не бъде адресирано, може да доведе до компрометиране на системата и прави цяла мрежа, уязвима към атаката. Хората, които ще бъдат заразени, включват собственика на приложението, потребителите на приложението и всяко друго лице, разчитащо на това приложение. Нека разгледаме най-опасните и често срещани рискове за сигурността на уеб приложенията.

Съдържание

  1. Инжектиране на база данни
  2. Счупено удостоверяване
  3. Излагане на чувствителни данни
  4. XML външни обекти (XEE)
  5. Контрол на счупен достъп
  6. Неправилно конфигуриране на сигурността
  7. Скриптиране между сайтове (XSS)
  8. Несигурна десериализация
  9. Използване на компоненти с известни уязвимости
  10. Недостатъчно регистриране и наблюдение

Инжектиране на база данни:

В случай на изпращане на ненадеждни парчета данни до интерпретатора като част от командата през която и да е област, която взема потребителско въвеждане i.При въвеждане на формуляр или друга област за подаване на данни възникват недостатъци при инжектиране. Злонамерените заявки на нападателя могат да подлъжат интерпретатора да изпълни команди, които могат да покажат поверителни данни, които потребителят няма разрешение да погледне. Например при атака на SQL инжектиране, когато въведената форма не е правилно дезинфекцирана, нападателят може да влезе в базата данни на SQL и да получи достъп до нейното съдържание без разрешение, само като въведе злонамерен код на база данни на SQL във форма, която очаква открит текст. Всеки тип поле, което взема въведеното от потребителя, може да се инжектира i.e параметри, променливи на средата, всички уеб услуги и др.

Приложението е уязвимо към инжекционната атака, когато предоставените от потребителя данни не са санирани и валидирани, чрез използване на динамични заявки без избягване на контекст и директно използване на враждебни данни. Недостатъците на инжектирането могат лесно да бъдат открити чрез изследване на кода и с помощта на автоматизирани инструменти като скенери и размиващи устройства. За да се предотвратят инжекционни атаки, има някои мерки, които могат да бъдат взети като отделяне на данните от команди и заявки, използване на безопасен API, който осигурява параметризиран интерфейс, използване на проверка на входния сигнал от страна на сървъра чрез инструменти като Snort, избягване на специални символи, използвайки специфичен синтаксис на бягство и т.н.

Инжекционната атака може да доведе до огромна загуба на данни, разкриване на поверителна информация, отказ на достъп и дори може да доведе до пълно поглъщане на приложения. Някои SQL контроли като LIMIT могат да се използват за контрол на огромни количества загуба на данни в случай на атака. Някои видове инжекционни атаки са SQL, OS, NoSQL, LDAP инжекционни атаки.

Счупено удостоверяване:

Атакуващите могат да имат достъп до потребителски акаунти и дори могат да компрометират цялата хост система чрез администраторски акаунти, използвайки уязвимостите в системите за удостоверяване. Недостатъците на удостоверяването позволяват на атакуващия да компрометира пароли, токени на сесии, ключове за удостоверяване и може да бъде обвързан с други атаки, които могат да доведат до неоторизиран достъп до всеки друг потребителски акаунт или сесия временно, а в някои случаи и за постоянно. Да предположим, че потребителят има списък с думи или речник с милиони валидни потребителски имена и пароли, получени по време на нарушение. Той може да ги използва един по един за изключително по-малко време, използвайки автоматизирани инструменти и скриптове в системата за вход, за да види дали някой работи. Лошото изпълнение на управлението на самоличността и контрола на достъпа води до уязвимости като нарушено удостоверяване.

Приложението е уязвимо за атака за удостоверяване, когато позволява изпробване на различни потребителски имена и пароли, разрешава атаки в речник или атаки с груба сила без никаква стратегия за защита, използва лесни пароли по подразбиране или пароли, които са изтекли при всяко нарушение, излага идентификатори на сесии в URL, използва лоша схема за възстановяване на парола, използва модел на бисквитки. Счупеното удостоверяване може да се използва лесно, като се използват прости инструменти за грубо форсиране и речникови атаки с добър речник. Този тип атаки могат да бъдат предотвратени с помощта на многофакторни системи за удостоверяване, чрез прилагане на слаби проверки на пароли чрез пускане на парола през базата данни с лоши пароли, като не се използват идентификационни данни по подразбиране, чрез привеждане в съответствие на политиката за сложност на паролата, чрез използване на добра сървърна страна диспечер на сесии, който генерира нов произволен идентификатор на сесия след влизане и т.н.

Счупената уязвимост за удостоверяване може да доведе до компрометиране на няколко потребителски акаунта и администраторски акаунт, това е всичко, което нападателят трябва да компрометира система. Този тип атаки водят до кражба на самоличност, измами със социална сигурност, пране на пари и разкриване на строго класифицирана информация. Атаките включват атаки на речници, принуждаване към грубост, отвличане на сесии и атаки за управление на сесии.

Излагане на чувствителни данни:

Понякога уеб приложенията не защитават чувствителни данни и информация като пароли, идентификационни данни на база данни и т.н. Нападателят може лесно да открадне или модифицира тези слабо защитени идентификационни данни и да ги използва за незаконни цели. Чувствителните данни трябва да бъдат криптирани, докато са в покой или в транспорт, и да имат допълнителен слой сигурност, в противен случай нападателите могат да ги откраднат. Атакуващите могат да се доберат до чувствителни изложени данни и да откраднат хеширани или изчистили текстови потребители и идентификационни данни на базата данни от сървъра или уеб браузъра. Например, ако база данни с пароли използва несолени или прости хешове за съхраняване на пароли, недостатък при качване на файлове може да позволи на нападателя да извлече базата данни с пароли, което ще доведе до излагане на всички пароли с дъгова таблица с предварително изчислени хешове.

Основният недостатък е не само в това, че данните не са криптирани, дори и да са криптирани, но слабото генериране на ключове, слабите алгоритми за хеширане, слабото използване на шифър също могат да доведат до тези видове една от най-често срещаните атаки. За да предотвратите тези видове атаки, първо класифицирайте кой тип данни могат да се считат за чувствителни според законите за поверителност и прилагайте контроли според класификацията. Опитайте се да не съхранявате никакви класифицирани данни, които не са ви необходими, измийте ги веднага щом ги използвате. За данните в транзит ги криптирайте със защитени протоколи i.e TLS с PFS шифри и др.

Този тип уязвимости могат да доведат до разкриване на изключително чувствителна информация като идентификационни данни на кредитни карти, здравни досиета, пароли и всякакви други лични данни, които могат да доведат до кражба на самоличност и банкови измами и т.н.

XML външни обекти (XEE):

Лошо конфигурираните XML процесори обработват препратки към външни обекти в XML документи. Тези външни обекти могат да се използват за извличане на данни на вътрешни файлове като / и т.н. / passwd файл или да изпълнява други злонамерени задачи.  Уязвимите XML процесори могат лесно да бъдат използвани, ако нападателят може да качи XML документ или да включи XML и т.н. Тези уязвими XML обекти могат да бъдат открити с помощта на SAST и DAST инструменти или ръчно чрез проверка на зависимости и конфигурации.

Уеб приложението е уязвимо за атаката XEE поради много причини, като например ако приложението приема директни XML входни данни от ненадеждни източници, дефинициите на типове документи (DTD) в приложението са активирани, приложението използва SAML за обработка на идентичност, тъй като SAML използва XML за идентичност вмъквания и др. XEE атаките могат да бъдат смекчени чрез избягване на сериализация на чувствителни данни, като се използват по-малко сложни формати на данни i.e JSON, закърпване на XML процесори, приложението се използва в момента и дори библиотеките, деактивира DTD във всички XML парсери, валидиране на функционалността за качване на XML файлове чрез XSD проверка и т.н.

Приложението, уязвимо към тези видове атаки, може да доведе до DOS атака, атака на Billion Laughs, сканиране на вътрешни системи, вътрешно сканиране на портове, изпълнение на отдалечена команда, което води до засягане на всички данни на приложението.

Контрол на счупен достъп:

Контролът на достъп дава на потребителите привилегии за изпълнение на конкретни задачи. Счупена уязвимост при контрол на достъпа се получава, когато потребителите не са правилно ограничени в задачите, които могат да изпълняват. Атакуващите могат да използват тази уязвимост, която може да доведе до достъп до неоторизирана функционалност или информация. Да приемем, че уеб приложението позволява на потребителя да промени акаунта, от който е влязъл, само чрез промяна на URL адреса на акаунт на друг потребител без допълнителна проверка.  Използването на уязвимостта на контрола на достъпа е атака на всеки нападател, тази уязвимост може да бъде намерена ръчно, както и с помощта на инструменти SAFT и DAFT. Тези уязвимости съществуват поради липса на тестване и автоматично откриване на уеб приложения, въпреки че най-добрият начин да ги намерите е да го направите ръчно.

Уязвимостите съдържат ескалация на привилегии i.действайки като потребител, който не сте, или като администратор, докато сте потребител, заобикаляйки проверките за контрол на достъпа само чрез модифициране на URL адреса или промяна на състоянието на приложението, манипулиране на метаданни, позволявайки първичния ключ да бъде променен като първичен ключ на друг потребител, и т.н. За да се предотвратят тези видове атаки, механизмите за контрол на достъпа трябва да бъдат внедрени в сървърния код, където нападателите не могат да променят контролите за достъп. Трябва да се осигури прилагане на уникални бизнес ограничения на приложения от модели на домейни, деактивиране на списъка със сървърни директории, предупреждение за многократни неуспешни опити за влизане, обезсилване на JWT маркери след излизане, за да се смекчат тези видове атаки.

Атакуващите могат да действат като друг потребител или администратор, използвайки тази уязвимост, за да изпълняват злонамерени задачи като създаване, изтриване и модифициране на записи и т.н. Може да възникне голяма загуба на данни, ако данните не са защитени дори след нарушение.

Неправилно конфигуриране на защитата:

Най-честата уязвимост е неправилно конфигуриране на защитата. Основната причина за уязвимостта е използването на конфигурация по подразбиране, непълна конфигурация, Adhoc конфигурации, лошо конфигурирани HTTP заглавки и подробни съобщения за грешки, съдържащи повече информация, отколкото потребителят всъщност трябва да знае. На всяко ниво на уеб приложение могат да възникнат неправилни конфигурации на защитата i.База данни, уеб сървър, сървър за приложения, мрежови услуги и др. Атакуващите могат да използват неизправени системи или да имат достъп до незащитени файлове и директории, за да имат неоторизирано задържане на системата. Например приложение, прекалено подробни съобщения за грешки, които помагат на нападателя да знае уязвимостите в системата за приложения и начина, по който тя работи. Автоматизирани инструменти и скенери могат да се използват за откриване на тези видове недостатъци в сигурността.

Уеб приложение съдържа уязвимост от този тип, ако липсват мерки за втвърдяване на защитата във всяка част на приложението, ненужни портове са отворени или позволява ненужни функции, използват се пароли по подразбиране, обработката на грешки разкрива информативни грешки на нападателя, използва непоправен или остарял софтуер за сигурност и др. Това може да бъде предотвратено чрез премахване на ненужните функции на кода, т.е.минимална платформа без излишни функции, документация и т.н., позволяваща задача за актуализиране и закърпване на дупките в сигурността като част от процесите за управление на кръпки, използване на процес за проверка на ефективността на предприетите мерки за сигурност, използване на повтарящ се процес на втвърдяване лесно е да разположите друга среда, която е правилно заключена.

Този тип уязвимости или недостатъци позволяват на нападателя да получи неоторизиран достъп до системни данни, което води до пълния компрометиране на системата.

Cross-Site Scripting (XSS):

Уязвимостите на XSS се случват в момента, когато уеб приложение включва недоверени данни в нова страница на уебсайт без легитимно одобрение или избягване, или опреснява текущата страница на сайта с предоставени от клиента данни, използвайки API на браузъра, който може да направи HTML или JavaScript.  XSS недостатъци се появяват в случай, че уебсайтът позволява на потребителя да добавя персонализиран код в URL път, който може да бъде видян от други потребители. Тези недостатъци се използват за стартиране на злонамерен JavaScript код в браузъра на целта. Да предположим, че нападателят може да изпрати връзка до жертвата, съдържаща връзка към уебсайт на всяка компания. В тази връзка може да има вграден злонамерен JavaScript код. В случай, че уеб страницата на банката не е защитена по подходящ начин срещу XSS атаки, при щракване върху връзката зловредният код ще се стартира в браузъра на жертвата.

Cross-Site Scripting е уязвимост в сигурността, която присъства в почти ⅔ от уеб приложенията. Приложението е уязвимо за XSS, ако приложението съхранява несинизиран потребителски вход, който може да бъде видян от друг потребител, чрез използването на JavaScript структури, приложения на една страница и API, които мощно включват контролирана от атакуваща информация на страница, са безпомощни срещу DOM XSS. XSS атаките могат да бъдат смекчени чрез използване на рамки, които избягват и дезинфекцират входа на XSS от природата като React JS и т.н., изучавайки ограниченията на рамките и ги покривайки, използвайки собствени случаи, избягвайки ненужни и ненадеждни HTML данни навсякъде i.e в HTML атрибути, URI, Javascript и др., използване на контекстно-чувствително кодиране в случай на модифициране на документ от страна на клиента и т.н.

Атаките, базирани на XSS, са от три вида i.e Отразени XSS, DOM XSS и Съхранени XSS. Всички видове тези атаки имат значително въздействие, но в случай на Stored XSS въздействието е още по-голямо i.e кражба на идентификационни данни, изпращане на злонамерен софтуер до жертвата и др.

Несигурна десериализация:

Сериализацията на данни означава вземане на обекти и конвертирането им във всякакъв формат, така че тези данни да могат да се използват за други цели по-късно, докато десериализацията на данни означава обратното на това. Десериализацията разопакова тези сериализирани данни за използване на приложения. Несигурната десериализация означава закаляване на данни, които са сериализирани непосредствено преди това да бъде разопаковано или десериализирано.  Несигурната десериализация води до отдалечено изпълнение на код и се използва за изпълнение на други задачи за злонамерени цели като ескалация на привилегии, атаки за инжектиране, атаки за повторно изпълнение и т.н. Налични са някои инструменти за откриване на тези видове недостатъци, но често е необходима човешка помощ за потвърждаване на проблема. Експлоатацията на десериализацията е малко трудна, тъй като експлоитите няма да работят без някои ръчни промени.

Когато приложението десериализира злонамерени обекти, предоставени от атакуващия обект. Това може да доведе до два вида атаки i.Атаките, свързани със структурата на данните и обектите, в които атакуващият модифицира логиката на приложението или изпълнява отдалечен код и типични атаки за фалшифициране на данни, при които съществуващите структури от данни се използват с модифицирано съдържание, например атаки, свързани с контрола на достъпа.  Сериализацията може да се използва в комуникация от разстояние (RPC) или комуникация между процеси (IPC), кеширане на данни, уеб услуги, сървър за кеширане на бази данни, файлови системи, маркери за удостоверяване на API, HTML бисквитки, параметри на HTML формуляра и т.н. Атаките за десериализация могат да бъдат смекчени чрез неизползване на сериализирани обекти от ненадеждни източници, внедряване на проверки на целостта, изолиране на кода, работещ в ниско привилегирована среда, наблюдение на входящите и изходящите мрежови връзки от сървъри, които често десериализират.

Използване на компоненти с известни уязвимости:

Различни компоненти като библиотеки, рамки и софтуерни модули се използват от повечето разработчици в уеб приложението. Тези библиотеки помагат на разработчика да избегне ненужната работа и предоставят необходимата функционалност. Атакуващите търсят недостатъци и уязвимости в тези компоненти, за да координират атака. В случай на намиране на вратичка за сигурност в даден компонент може да направи всички сайтове, използващи един и същ компонент, уязвими. Експлоитите на тези уязвимости вече са налични, докато писането на персонализиран експлойт от нулата отнема много усилия. Това е много често срещан и широко разпространен проблем, използването на големи количества компоненти при разработването на уеб приложение може да доведе дори до непознаване и разбиране на всички използвани компоненти, закърпването и актуализирането на всички компоненти е дълъг ход.

Приложението е уязвимо, ако разработчикът не знае версията на използвания компонент, софтуерът е остарял i.д операционната система, СУБД, работещият софтуер, средата на изпълнение и библиотеките, сканирането на уязвимост не се извършва редовно, съвместимостта на закърпения софтуер не се тества от разработчиците. Тя може да бъде предотвратена чрез премахване на неизползвани зависимости, файлове, документация и библиотеки, редовно проверяване на версията на клиента и компонентите от страна на сървъра, получаване на компоненти и библиотеки от официални и надеждни сигурни източници, наблюдение на неизправените библиотеки и компоненти, осигуряване на план за редовно актуализиране и закърпване на уязвими компоненти.

Тези уязвимости водят до незначителни въздействия, но могат да доведат и до компрометиране на сървъра и системата. Много големи пробиви разчитаха на известни уязвимости на компонентите. Използването на уязвими компоненти подкопава защитата на приложенията и може да бъде отправна точка за голяма атака.

Недостатъчно регистриране и наблюдение:

Повечето системи не предприемат достатъчно мерки и стъпки за откриване на нарушения на данни. Средното време за реакция на инцидент е 200 дни след като се е случило, това е много време, за да се направят всички гадни неща за атакуващо лице. Недостатъчното регистриране и наблюдение позволяват на нападателя да атакува допълнително системата, да поддържа нейното задържане в системата, да подправя, задържа и извлича данни според нуждите. Нападателите използват липсата на мониторинг и реакция в своя полза, за да атакуват уеб приложението.
По всяко време се случва недостатъчно регистриране и наблюдение i.Дневниците на приложенията, които не се наблюдават за необичайни дейности, подлежащи на проверка събития като неуспешни опити за влизане и високи стойности на транзакции не се регистрират правилно, предупрежденията и грешките генерират неясни съобщения за грешки, без предупреждение за задействане в случай на тестване с помощта на автоматизирани инструменти DAST, невъзможност за откриване или бързо предупреждавайте за активни атаки и т.н. Те могат да бъдат смекчени чрез осигуряване на всички входни данни, неуспехи в контрола на достъпа и валидиране на вход от страна на сървъра могат да бъдат регистрирани за идентифициране на злонамерен потребителски акаунт и да се задържат достатъчно време за забавено съдебно разследване, като се гарантира, че генерираните регистрационни файлове са във формат съвместим с централизирани решения за управление на журнали, чрез осигуряване на проверки на целостта при транзакции с висока стойност, чрез създаване на система за навременни сигнали за подозрителни дейности и т.н.

Повечето от успешните атаки започват с проверка и сондиране за уязвимости в системата, което позволява тези сондиране на уязвимости да доведат до компрометиране на цялата система.

Заключение:

Уязвимостите в сигурността в уеб приложение засягат всички обекти, свързани с това приложение. Тези уязвимости трябва да се полагат, за да се осигури безопасна и сигурна среда за потребителите. Атакуващите могат да използват тези уязвимости, за да компрометират система, да се доберат до нея и да повишат привилегиите. Въздействието на компрометирано уеб приложение може да се визуализира от откраднати идентификационни данни на кредитни карти и кражба на самоличност до изтичане на силно поверителна информация и т.н. в зависимост от нуждите и атакуващите вектори на злонамерени обекти.

Пристанища с отворен код на търговски игрални машини
Безплатни разширения на играта с отворен код и междуплатформени игри могат да се използват за възпроизвеждане на стари, както и някои от доста скорошн...
Най-добрите игри за команден ред за Linux
Командният ред не е само най-големият ви съюзник при използване на Linux - той може да бъде и източник на забавление, защото можете да го използвате, ...
Най-добрите приложения за картографиране на геймпад за Linux
Ако искате да играете игри на Linux с геймпад вместо типична система за въвеждане на клавиатура и мишка, има някои полезни приложения за вас. Много ко...