Сигурност на приложения срещу софтуерна сигурност: Каква е разликата?

Моника Чакраборти

Термините „сигурност на приложенията“ и „софтуерна сигурност“ често се използват взаимозаменяемо. Всъщност обаче има разлика между двете. Пионерът по информационна сигурност, Гари МакГрау, поддържа, че сигурността на приложенията е реактивен подход, който се осъществява, след като софтуерът бъде внедрен. Софтуерната сигурност, от друга страна, включва проактивен подход, който се осъществява във фазата на предварително разгръщане.
За да се гарантира, че част от софтуера е сигурна, трябва да бъде вградена сигурност във всички фази на жизнения цикъл на разработката на софтуер (SDLC). По този начин сигурността на софтуера не е защитата на приложенията - тя е много по-голяма.

Сигурност на приложения като подмножество на софтуерната сигурност

Както може би знаете, приложенията са връзки между данните и потребителя (или друго приложение).
Когато потребителят иска да направи сложен анализ на медицинската информация на пациента, например, това може да се извърши лесно чрез приложение, за да се избегнат сложни, отнемащи време ръчни изчисления. По подобен начин транзакция с онлайн банки се извършва чрез уеб-базирани приложения или мобилни приложения и в този процес се обработват, предават и съхраняват непублични финансови данни.
Софтуерът не разпознава чувствителност или конфиденциалност на данните, които обработва или предава през Интернет. По този начин софтуерът трябва да бъде проектиран и разработен въз основа на чувствителността на данните, които обработва. Ако данните са класифицирани като „обществени“, до тях могат да бъдат достъпни, без да се изисква потребителят да удостоверява. Един пример е информация, намерена в страницата за контакт или политиката на уебсайта. Ако обаче софтуерът осъществява администриране на потребителя, тогава се очаква да има метод за многофакторна автентификация за достъп до тази информация. Въз основа на класификацията на данните, които се обработват от приложението, трябва да се проектира подходящо удостоверяване, упълномощаване и защита на данните при съхранение или транзит за приложението в допълнение към извършването на сигурно кодиране.
За да се защити софтуерът и свързаните с него чувствителни данни, трябва да се направи измерване по време на всяка фаза на SDLC. Това измерване разделя широко въпросите на фазите на развитие преди и след разгръщане. Отново софтуерната сигурност се занимава с проблемите преди разгръщането, а сигурността на приложенията се грижи за проблемите след разгръщането.

Дейностите за софтуерна сигурност (преди внедряване) включват:

- Сигурен софтуерен дизайн
 - Разработване на указания за сигурно кодиране, които следва да спазват разработчиците
 - Разработване на безопасни конфигурационни процедури и стандарти за фазата на внедряване
 - Сигурно кодиране, което следва установените указания
 - Валидиране на въвеждането от потребителя и прилагане на подходяща стратегия за кодиране
 - Удостоверяване на потребителя
 - Управление на потребителски сесии
 - Контрол на достъпа на ниво функция
 - Използване на силна криптография за обезопасяване на данни в покой и при преминаване
 - Валидиране на компоненти на трети страни
 - Арест на всякакви недостатъци в софтуерния дизайн / архитектура

Дейностите за защита на приложенията (след разгръщане) включват:

- Тестове за сигурност след разполагане
 - Отстраняване на недостатъци в конфигурацията на софтуерната среда
 - Откриване на злонамерен код (реализиран от разработчика за създаване на задна врата, бомба със закъснител)
 - Patch / ъпгрейд
 - IP филтриране
 - Заключване на изпълними файлове
 - Мониторинг на програмите по време на изпълнение с цел прилагане на политиката за използване на софтуера

Прегледайте дейностите за изграждане на сигурността в модел на падеж (BSIMM) за повече насоки.

Сценарий №1: Защита на уеб приложенията
 
Уеб приложенията най-често са базирани на клиент-сървър приложения, в които браузърът действа като клиент, като изпраща заявки и получава отговори от сървъра, за да представи информацията на потребителя. Ето защо притесненията за сигурността на уеб приложенията са свързани с проблеми от страна на клиента, защитата от страна на сървъра и защитата на данните в покой и при транзит.
Проблемите от страна на клиента са по-трудни за отстраняване, освен ако не се обмислят предпазни мерки при проектирането на потребителския интерфейс. Един пример е базиран на DOM скрипт на различни сайтове, в който DOM обектна стойност е зададена от друг DOM обект, който може да бъде променен с помощта на Javascript. Съвременните браузъри са по-защитни от приложенията, но много приложения все още поддържат обратно съвместимост, за да включват по-широк кръг от потребители, по-стари версии на браузъри и несигурни клиентски компютри. Следователно компонентите от страна на клиента трябва да внедрят сигурността във фазата на проектиране, когато разглеждат тези проблеми.
Компонентите от страна на сървъра могат да бъдат защитени чрез прилагане на противодействия по време на фазите на проектиране и кодиране на разработката на приложението. Това изисква инсталирането на защитен системен / сървърен софтуер. Остарял сървърен софтуер като Apache Tomcat (3.1 и по-рано) вече не се поддържа официално и може да има недекларирани уязвимости за тези версии. Те трябва незабавно да бъдат надградени до най-новата версия.

Други общи уязвими места за сигурност на инфраструктурата включват:

- Многословен банер на сървъра
 - Кеширане на страници, разрешено да се съхраняват данни локално и в транзит
 - Слаби шифрови пакети, поддържани от сървъра
 - Адреси на вътрешната мрежа, изложени от бисквитките
 - Сигурност на бисквитките

Сценарий №2: Защита на мобилните приложения

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

Факторите на риска в софтуера, базиран на мобилни устройства, включват:

- Кодиране на приложението
 - Дистрибуция на приложения
 - Конфигурация на приложението
 - Конфигурация на устройството

Мобилните приложения трябва да бъдат проектирани с вградени възможности за откриване на Root / Jailbreak, устойчивост срещу фалшифициране срещу обратна инженерия, многослойна автентификация, използваща глас, отпечатване на пръсти, изображение и геолокация. Да не говорим, че те трябва да следват указанията за сигурно кодиране.
Магазините за приложения за различни доставчици на мобилни устройства използват различни процеси за проверка на сигурността. Важно е да се уверите, че приложенията не са повредени по време на процеса на разпространение. Съпротивата срещу фалшифициране е особено важна на тази фаза.
Устройствата, на които се стартират тези приложения, използват софтуера на техните собствени системи и могат да бъдат конфигурирани по несигурен начин. Конфигурациите на устройството, свързани със защитата на кода на приложението, откриването на root / зловреден софтуер, удостоверяване и проверка на канала, трябва да се извършват съгласно стандартите за конфигуриране на мобилни устройства. Тук е важно да се отбележи не само приложението; мобилният софтуер също трябва да бъде проектиран съобразно всички тези възможности и конфигуриран по сигурен начин.
Прилагането на мерки за сигурност в мобилните приложения е по-трудно в сравнение с уеб приложенията. Мерки като затъмняване на код и откриване на подправка (за да се избегне подправяне на код) се изискват в мобилните приложения повече, отколкото в уеб приложенията.

Видове тестване на приложения

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

  1. Статичното тестване за сигурност на приложенията (SAST) се фокусира върху изходния код.
  2. Динамичното тестване за сигурност на приложенията (DAST) се фокусира върху откриването на уязвимости, присъстващи в приложението и инфраструктурата.
  3. Тестът за защита на интерактивното приложение (IAST) използва комбинация от DAST и SAST и извършва поведенчески анализ за откриване на потока на данни, вход / изход и т.н.
  4. Самозащита на приложението по време на изпълнение (RASP) позволява на приложенията да се защитят с помощта на функции за защита на двигателя по време на изпълнение на приложенията като прекратяване на сесията, прекратяване на приложението, уведомяване за грешка и т.н.

Имайки предвид, че е важно да се отбележи, че сигурността на приложенията е само един от много области в софтуерната сигурност.

Софтуерните рискове включват:

- Уеб / не-уеб приложение / инфраструктура
 - Несигурен дизайн
 - Неправилни конфигурации
 - Ограничения на технологиите
 - Шифроване на предаването
 - Бек-енд сигурност на базата данни

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

Къде мрежовата сигурност се вписва във всичко това?

Съществува често срещано погрешно схващане относно сигурността на софтуера, че периферните противодействия като защитни стени са достатъчно добри, за да ограничат изпълнението на приложение или обработката на данни от конкретни приложения. Бизнесът харчи много за въвеждане на мерки за сигурност на мрежата (като рутери, които могат да попречат на IP адреса на отделен компютър да бъде пряко видим в Интернет).

Други общи мерки за противодействие включват:

- Конвенционални защитни стени
 - програми за шифроване / дешифриране
 - антивирусни програми
 - Програми за откриване / премахване на шпионски софтуер
 - Биометрични системи за автентификация
 - Инструменти за анализ и предотвратяване на загуби на данни

Докладът за нарушаване на данни за Verizon 2015 показва само 9,4% от атаките на уеб приложения сред различни видове инциденти. Инициативата за софтуерна сигурност на организацията (SSI) трябва да надхвърля сигурността на приложенията и да възприема цялостен подход - примка във всички видове софтуер.

[tweetthis remove_hidden_hashtags = ”true”] # Appsec и #Swsec често се използват взаимозаменяемо. Въпреки това, има голяма разлика Ето защо: [/ tweetthis]

Сигурност на приложения срещу софтуерна сигурност: Обобщаване

Проектирането и кодирането на приложение на сигурно място не е единственият начин за сигурно приложение. Инфраструктурата, на която работи приложение, заедно със сървъри и мрежови компоненти, трябва да бъде конфигурирана сигурно. За да бъде приложението възможно най-сигурно, всички приложения и конфигурации на сървъра, криптиране на предаването, съхранение на идентификационни данни и контрол на достъпа до базата данни, където се съхраняват идентификационни данни и ключове за криптиране, трябва да се вземат предвид.
Софтуерът и инфраструктурата, на която работи софтуерът, трябва да бъдат защитени, за да поддържат най-високо ниво на софтуерна сигурност. Това включва както софтуерна сигурност (във фази на проектиране, кодиране и тестване), така и сигурност на приложението (тестване след внедряване, наблюдение, кръпка, надстройка и др.). Софтуерната сигурност включва цялостен подход в организацията за подобряване на нейната поза за сигурност на информацията, защита на активите и налагане на поверителност на непублична информация; като има предвид, че сигурността на приложението е само един домейн в рамките на целия процес.

Сигурността на приложенията е само първата стъпка в пътуването към софтуерната сигурност. Научете повече.