15 добри практики за защита на приложенията – за разработчици и клиентите им
Разработката на мобилни и уеб app-ове преживява безпрецедентен растеж от 2010 г. насам. Днес всяка организация използва приложения, които са от ключово значение за функционирането й. Същевременно, техните слабости и уязвимостите на софтуера продължават да бъдат най-често срещания метод за външна атака.
Какво е сигурност на приложенията и защо тя е важна
Application Security е процесът на повишаване сигурността на приложенията чрез тестване, коригиране и подобряване на тяхната защита. Той се извършва предимно през фазата на разработка, но включва също инструменти и методи за защита на приложенията, след като те бъдат внедрени.
В доклад са представени резултатите от тестването на 85 хил. приложения: Установени са общо 10 млн. проблема със защитата. 83% от всички апликации са имали поне един недостатък в сигурността. Това означава, че много от тестваните софтуери са имали доста повече от един недостатък. 20% от всички разглеждани приложения са имали поне един проблем със сигурността с висока степен на сериозност.
Прочетете още: Android вирус срещу банкови приложения вече краде пароли за социални мрежи и криптовалути
Повече приложения – повече проблеми
Днес приложенията се създават, внедряват и интегрират ежедневно, понякога за часове. Често липсва внимателно прецизиране на изискванията, създаване и тестване на прототипи – директно се доставя завършено решение за крайните потребители. Какви са недостатъците води след себе си този бум:
- Все повече програмисти–аматьори: Все повече самоуки начинаещи програмисти пишат мобилни приложения. Често на тях им липсват знания относно потенциалните проблемите със сигурността. За съжаление, подобни пропуски се откриват и при някои по-опитни екипи за разработка на приложения.
- Неефективна употреба на инструменти: Програмистите често не успяват да тестват сигурността на разработваните от тях приложения по най-оптималния начин, тъй като смятат, че това ще забави процеса по разработване.
- Липса на DevSecOps: Често софтуерът не се разработва по установените най-добри практики за сигурност. Пренебрегва се DevSecOps процеса (подхода“shift-left”), който е жизненоважен за откриването и отстраняването на проблемите със сигурността на възможно най-ранен етап.
- Уязвимости, свързани с open-source източници: Изчислено е, че 96% от корпоративните приложения използват open-source софтуер и библиотеки, които сами по себе си съдържат голям брой уязвимости.
- Непознаване на използваните приложения: Ако горните пропуски са присъщи на разработчиците, то този касае конкретно потребителите. Те трябва да са наясно с наличните приложения и свързаните с тях функционални рискове. Много организации биват хаквани през app, за чието наличие не са подозирали.
Разработчици, положете добрите основи за защита на приложенията
- Имплементирайте DevSecOps подход. DevSecOps (shift-left) открива пропуски в сигурността на разработваните приложения още от самото начало. Чрез него може да предотвратите потенциалното възникване на проблеми или да ги разрешите възможно най-бързо ако такива се появят. Този метод позволява да засечете слабостите в сигурността по време на всеки етап от развитието на софтуера – от дизайна до пускането му на пазара.
- Имплементирайте процес за управление на жизнения цикъл на разработвания софтуер от гледна точка на сигурността (Secure Software Development Life Cycle Management Process – SSDLC). SSDLC следи дали във всеки един етап софтуерът: 1) се разработва и поддържа от обучени и запознати с изискванията за сигурност служители, 2) се разработва в сигурна среда, 3) се доставя до клиентите сигурно.
- Справете се с open-source уязвимостите. Следете постоянно за наличие на грешки и ги елиминирайте посредством прилагане на навременен patch и регулярни ъпдейти.
- Aвтоматизирайте. Това е жизненоважно. Автоматизирането ще позволи на екипа ви да се съсредоточи върху по-сложните предизвикателства за сигурността.
- Посещавайте редовни обучения по киберсигурност. Подсигуряването на кода на приложението е ваша отговорност. Затова е важно вие и екипът ви да бъдете обучени от специалисти по киберсигурност – съгласно спецификите на вашата работа и роля.
- Регулярно обновявайте и прилагайте пачове. Това е един от най-ефективните начини да подсигурите софтуера си. Важна точка от този процес е планирането на самото обновяване – кой, какво и кога да направи. Предварителното дефиниране на подходящата архитектура ще предотврати проблеми, свързани с евентуална несъвместимост на приложенията с новите версии.
- Осигурете възможност за събиране на логове. Без тази информация е почти невъзможно да се определи кога се случва пробив. Анализирането на информацията за периода, предхождащ атаката, би имало пряко влияние върху нивото на сигурността и би било от полза при разследването.
- Криптирайте информацията. Най-базовото криптиране е това, което използва SSL с валиден сертификат. Недопустимо е чувствителна информация като лични данни и пароли да се съхранява некриптирана, тъй като при една man-in-the-middle атака тя би попаднала незащитена в ръцете на недоброжелатели.
- Провеждайте Pentesting. Pentester-ът ще се опита да хакне приложението с цел да открие уязвимости и потенциални вектори на атака. След това ще помогне за разрешаване на идентифицираните проблеми, за да предпази приложението от истинска атака. Добра практика е човекът, който ще извършва pentesting, да е външен експерт, който не е участвал в създаването на самото приложение.
- Заложете валидиране на входните данни. Данните, които потребителят ще въвежда в приложението трябва да бъдат синтактично и семантично правилни. Предвидете нужните проверки на въвежданите цифри, символи, знаци и др.
- Разрешавайте проблемите дългосрочно. Някои видове уязвимости се повтарят във времето (cross-site scripting (XSS), SQL injection, buffer overflow). Вместо да правите частична кръпка на проблема (patch), изкоренете уязвимостта в дългосрочен план: Определете кои са местата във вашето приложение, на които могат да се наблюдават тези уязвимости и елиминирайте причината за наличието им.
- Управлявайте правилно контейнерите. Уверете се, че вашите контейнерни изображения са подписани цифрово. Стартирайте автоматично сканиране за уязвимости с отворен код.
Потребители, погрижете се за сигурното използване приложенията
13. Познавайте съдържанието. Идентифицирайтe и разпознавайтe функционалностите на приложенията, които използвате.Не може да защитите от нещо, за което не знаете, че съществува.
14. Оценете риска от гледна точка на атакуващия. Може да си помогнете със следните стъпки:
- Създайте списък на всички активи, които изискват защита
- Идентифицирайте заплахите и определете как те да бъдат изолирани и премахнати
- Идентифицирайте вектори на атака, през които приложението може да бъде компрометирано
- Уверете се, че правилните мерки за сигурност са приложени и могат да засекат и предотвратят потенциални атаки
- Преценете дали има нужда от допълнителни или различни инструменти за защита
- Ако не можете да се справите сами, обърнете се към външен специалист по информационна сигурност
15. Ограничете достъпа до приложението.
- Определете кой потребител от какъв достъп има нужда
- Създайте правила за достъп
- Добра практика е прилагането на принципа на най-необходимия достъп (least privilege access)
В заключение
Application Security е процес, който се провежда, както от разработчици, така и от ползватели и външни специалисти. От планиране, реализиране, проверка за уязвимости и закърпване на дупките до сигурното използване на приложенията и ограничаване на достъпа до тях.
При инцидент, свързан с изтичане на данни, криптирани сървъри или друго, неприятностите са за всички.
Обезпечаването на сигурността става много по-лесно, когато всички участници се стремят към обща цел, а не прехвърлят собствената си отговорност на другите.