Эта заметка посвящена вопросам безопасности в целом и веб-ресурсов в частности. Основная проблема защиты от преднамеренных атак – это то, что защититься от них невозможно. Каждая новая система безопасности порождает новые уязвимости. Каждый день открываются новые дыры различных версий ПО и в результате процесс обеспечения безопасности – это процесс непрерывного латания дыр. Если квалификация и энтузиазм специалиста, обеспечивающего безопасность ресурсов на голову выше потенциальных хакеров, то он в этом марафоне бежит быстрее, и мы можем говорить о некой «защищенности» ресурса. В противном случае администратору приходится учиться на собственных ошибках.
Вся эта ситуация давно уже вызвала некий скепсис непосвященных в вопросы ИТ-безопасности людей по поводу самой этой ИТ-безопасности. Достаточно часто мне приходится слышать мнение, что вложение денег в новые технологии и продукты по защите информации – бесполезные траты, так как любая защита ломается и любая новая тому не исключение.
Эта ситуация заставила меня задуматься о принципиально новых подходах к обеспечению безопасности, фундаментально отличающиеся от традиционных тем, что защищают систему даже от неизвестных на сегодняшний день уязвимостей. Эта идея может показаться абсурдной, но только на первый взгляд. Достаточно вспомнить, что за любыми атаками в Интернете стоит человек такой же, как и мы с Вами. Атака в сети – это совокупность неких целенаправленных действий с получением обратной связи. Она основана на априорной информации атакующего и информации получаемой в процессе исследования. Но нет ничего сложного в том, чтобы сделать эту информацию несоответствующей действительности. И речь здесь идет не о простом дезинформировании, а о защите систем от исследования.
Чтобы понять, что это такое, необходимо попытаться представить, как человек получает информацию об окружающем мире. Любая информация по сути дела принадлежит неким категориям (классификациям), которые могут соответствовать действительности только по показателям некоторых параметров (стереотипная схема). Чтобы не загружать читателя наукообразной лексикой приведу простой пример. Вот есть, например, стул. Есть общепринятый стереотип стула – четыре ножки, на них некая поверхность и спинка стула. Его все узнают и точно скажут что это «стул». А вот если сделать его принципиально иным, без ножек, поверхности и спинки (например, первые мягкие бесформенные стулья), то уже никто это стулом не назовет, хотя он и будет выполнять ту же функцию. Видоизменяя так предметы до неузнаваемости можно скрывать их функциональное предназначение. А, скрывая их функциональное предназначение, можно скрывать некую деятельность и даже целые бизнес-процессы. Есть у нас в России человек, который утверждает, что давно занимается таким «сокрытием» мероприятий и даже деятельности целых компаний! Однако я признаться в реальности такого не видел, и видоизменять до неузнаваемости обычные предметы не умею. Но ИТ-индустрия предоставляет нам для такой деятельности вполне подходящую почву, ведь программно можно написать все что угодно.
И так родилась технология защиты от исследования систем, позволяющая из любого стандартного процесса сделать уникальный, вводя в него некие бессмысленные с точки зрения целевой функции процесса параметры. Это делает небольшую дополнительную нагрузку на вычислительные ресурсы (те ресурсы, которые идут на создание «уникальности»), но зато выполняет главную задачу с точки зрения обеспечения безопасности – любая априорная информация о работе системы просто становится неверна. Для того чтобы исследовать систему злоумышленнику приходится опираться на некую дополнительные предположения, которые также можно сделать неверными и так уводить систему в состояния полного хаоса для внешнего наблюдателя. При этом целевая функция системы остается неизменной, а вот шаг влево, шаг вправо – и уже ничего непонятно…
Как это происходит в реальности? Ну вот пытается злоумышленник проверить сайт на уязвимости SQL-инъекций и для простоты вводит в параметры кавычку или выражение вроде …id=1+1 и смотрит что происходит. И невероятно! – система складывает цифры и выводит страницу по id=2. Вывод сделан – уязвимость по SQL-инъекциям открыта. Однако далее при попытках вывести информацию из базы данных он обнаруживает, что система каким-то странным образом отображает не ту информацию и неадекватно реагирует на вводимые параметры. Через некоторое время он находит новую зависимость, но затем снова понимает, что и она не соответствует действительности и продолжает бессмысленные процесс исследования.
По такому принципу работают модули, разработанные в рамках проекта Reflexion Web (Рефлексивный Веб). Схема работы модуля PRIS Mirror показана на рисунке.
Перехватывая значения массивов $_GET и $_POST он отфильтровывает те, которые не может ввести «нормальный пользователь» и выполняет запросы по ним с учетом настраиваемой концепции уникальности системы. Результат в том, что мы создаем обширные пространства уязвимостей, в которых вязнет потенциальный злоумышленник, даже не подозревая, что в реальности за ним уже наблюдают. По части наблюдения такая технология схожа с уже известной системой HoneyPot, но от последней ее принципиально отличает то, что наблюдение не является основной задачей модуля. Основная задача в том, чтобы сделать каждую систему принципиально отличной по функциональным процессам от другой, и сокращать тем самым остаточные риски там, где этого пока сделать нельзя.
На данной стадии проект является открытым и мы рады любым новым идеям, предложениям и помощи в разработке!
Вся эта ситуация давно уже вызвала некий скепсис непосвященных в вопросы ИТ-безопасности людей по поводу самой этой ИТ-безопасности. Достаточно часто мне приходится слышать мнение, что вложение денег в новые технологии и продукты по защите информации – бесполезные траты, так как любая защита ломается и любая новая тому не исключение.
Эта ситуация заставила меня задуматься о принципиально новых подходах к обеспечению безопасности, фундаментально отличающиеся от традиционных тем, что защищают систему даже от неизвестных на сегодняшний день уязвимостей. Эта идея может показаться абсурдной, но только на первый взгляд. Достаточно вспомнить, что за любыми атаками в Интернете стоит человек такой же, как и мы с Вами. Атака в сети – это совокупность неких целенаправленных действий с получением обратной связи. Она основана на априорной информации атакующего и информации получаемой в процессе исследования. Но нет ничего сложного в том, чтобы сделать эту информацию несоответствующей действительности. И речь здесь идет не о простом дезинформировании, а о защите систем от исследования.
Чтобы понять, что это такое, необходимо попытаться представить, как человек получает информацию об окружающем мире. Любая информация по сути дела принадлежит неким категориям (классификациям), которые могут соответствовать действительности только по показателям некоторых параметров (стереотипная схема). Чтобы не загружать читателя наукообразной лексикой приведу простой пример. Вот есть, например, стул. Есть общепринятый стереотип стула – четыре ножки, на них некая поверхность и спинка стула. Его все узнают и точно скажут что это «стул». А вот если сделать его принципиально иным, без ножек, поверхности и спинки (например, первые мягкие бесформенные стулья), то уже никто это стулом не назовет, хотя он и будет выполнять ту же функцию. Видоизменяя так предметы до неузнаваемости можно скрывать их функциональное предназначение. А, скрывая их функциональное предназначение, можно скрывать некую деятельность и даже целые бизнес-процессы. Есть у нас в России человек, который утверждает, что давно занимается таким «сокрытием» мероприятий и даже деятельности целых компаний! Однако я признаться в реальности такого не видел, и видоизменять до неузнаваемости обычные предметы не умею. Но ИТ-индустрия предоставляет нам для такой деятельности вполне подходящую почву, ведь программно можно написать все что угодно.
И так родилась технология защиты от исследования систем, позволяющая из любого стандартного процесса сделать уникальный, вводя в него некие бессмысленные с точки зрения целевой функции процесса параметры. Это делает небольшую дополнительную нагрузку на вычислительные ресурсы (те ресурсы, которые идут на создание «уникальности»), но зато выполняет главную задачу с точки зрения обеспечения безопасности – любая априорная информация о работе системы просто становится неверна. Для того чтобы исследовать систему злоумышленнику приходится опираться на некую дополнительные предположения, которые также можно сделать неверными и так уводить систему в состояния полного хаоса для внешнего наблюдателя. При этом целевая функция системы остается неизменной, а вот шаг влево, шаг вправо – и уже ничего непонятно…
Как это происходит в реальности? Ну вот пытается злоумышленник проверить сайт на уязвимости SQL-инъекций и для простоты вводит в параметры кавычку или выражение вроде …id=1+1 и смотрит что происходит. И невероятно! – система складывает цифры и выводит страницу по id=2. Вывод сделан – уязвимость по SQL-инъекциям открыта. Однако далее при попытках вывести информацию из базы данных он обнаруживает, что система каким-то странным образом отображает не ту информацию и неадекватно реагирует на вводимые параметры. Через некоторое время он находит новую зависимость, но затем снова понимает, что и она не соответствует действительности и продолжает бессмысленные процесс исследования.
По такому принципу работают модули, разработанные в рамках проекта Reflexion Web (Рефлексивный Веб). Схема работы модуля PRIS Mirror показана на рисунке.
Перехватывая значения массивов $_GET и $_POST он отфильтровывает те, которые не может ввести «нормальный пользователь» и выполняет запросы по ним с учетом настраиваемой концепции уникальности системы. Результат в том, что мы создаем обширные пространства уязвимостей, в которых вязнет потенциальный злоумышленник, даже не подозревая, что в реальности за ним уже наблюдают. По части наблюдения такая технология схожа с уже известной системой HoneyPot, но от последней ее принципиально отличает то, что наблюдение не является основной задачей модуля. Основная задача в том, чтобы сделать каждую систему принципиально отличной по функциональным процессам от другой, и сокращать тем самым остаточные риски там, где этого пока сделать нельзя.
На данной стадии проект является открытым и мы рады любым новым идеям, предложениям и помощи в разработке!