Защита сайтов

       

Защита WWW-сценариев от несанкционированного копирования и модификации


Александр Аграновский

директор-гл.конструктор ГП КБ Спецвузавтоматика, Ростов-на-Дону

, +7(8632)932894

Роман Хади

зав. лаб. информационной безопасности ГП КБ Спецвузавтоматика, Ростов-на-Дону

, +7(8632)932894

В статье рассматривается один из основных подходов к генерации динамического контента в среде веб-приложений, а именно использование веб-сценариев и CGI, и применительно к ним, методы защиты исходных текстов от несанкционированного копирования и модификации. В качестве основного языка веб-сценариев взят наиболее популярный - язык Perl. Исследованы инструментальные средства сторонних разработчиков (Perl2Exe утилита), встроенные средства кроссплатформенных интерпретаторов языка Perl и общий метод искажения смысловой нагрузки идентификаторов в исходном тексте (source mangling). Представляются исходные тексты с примерами защиты исходных текстов. Для каждого из представленных методов проводится анализ защищенности и методов получения доступа непосредственно к исходным текстам и их модификации.

Время реакции на весьма динамично развивающуюся среду веб-технологий определяет эффективность работы любого Internet-сайта. Современные технологии создания веб-контента в режиме реального времени дали профессиональному веб-мастеру мощнейшие инструменты для управлениями потоками информации в Internet. В условиях постоянного роста производительности, использование языков сценариев или как их еще называют scripting languages или scripts, стало одним из опорных решений фундаментального подхода организации инфраструктуры Internet-сайтов. Мощные, легко осваиваемые специализированные языки программирования, ориентированные на разработчиков веб-сайтов, получили широчайшее распространение. Языки сценариев изначально были ориентированы на быстрое и эффективное решение иных задач, нежели языки программирования системного уровня, поскольку они создавались как логически связующие компоненты к уже готовым программным решениям [1]. Преимущества такого подхода перед традиционным статическим наполнением веб-порталов видны невооруженным взглядом.
Это и гибкость построения гипертекстовых переходов, и возможность создания отчетов по записям в базах данных в реальном времени, и генерация комплексных веб-документов из существующих элементарных компонентов [2].

Точно также, как и несколько лет назад в малых интегрированных сетях, в программировании контента публичных серверов существует два подхода. А именно, создание интерпретируемых сценариев и компиляция байт-кода. Первый подход не выходит за рамки CGI-программирования, согласно которого для разработки гипертекстовой страницы нужен только обычный текстовый редактор, а сам гипертекстовый документ должен легко читаться человеком. Второй подход повышает эффективность исполнения программы, а также защищенность кода от доступа и несанкционированных изменений [2]. Реализации интерпретаторов таких языков сценариев, как Perl и Phyton, в целях повышения эффективности перед исполнением сценария проводят предварительную перекомпиляцию в специальный мобильный байт-код. Для языка Perl, у него даже есть собственное название - пи-код (p-code), данное Ларри Уоллом (Larry Wall), создателем Perl. Такой код, будучи сформирован в результате трансляции исходного текста сценария, записывается в память или файл и лишь потом обрабатывается интерпретатором. Для языка Python файлы с байт-кодом (они имеют специальное расширение .pyc) в дальнейшем можно спокойно переносить с платформы на платформу и исполнять с равными правами как, к примеру, на Sun, так и на Intel PC/win32 - мобильность это позволяет.

В конце 90-х годов CGI-программирование, а это автоматизация, гостевые книги, форумы, опросы, списки рассылки, интерфейсы к базам данных и многое другое, стало наиболее популярным и эффективным способом организации интерактивного взаимодействия с пользователями. Как и в любой другой области программирования стали возникать свои вопросы и проблемы. Одним из самых интересных и неоднозначных вопросов был и остается вопрос о защите авторских прав [3]. Он актуален хотя бы потому, что все сценарные языки, такие как Perl, Phyton, JavaScript и всевозможные производные с постфиксом *script (т.е.


JavaScript, PerlScript и так далее) являются интерпретируемыми, и ни о каких бинарных кодах и скрытом исходном тексте не может идти и речи. В этом случае исследованию алгоритма работы сценария и использованию его без разрешения авторов не создано никаких препятствий. Программисты, создающие средства веб-автоматизации пытаются решить эту проблему всевозможными способами, прибегая порой к изощренным методикам сокрытия исходных текстов и защиты их от модификации. Собственно говоря, защита от модификации хороша также и как защита, что называется "от дурака", что немаловажно при продаже программного обеспечения не в комплексе, а как отдельной единицы, когда приобретающий программное обеспечение пользователь получает полный доступ не только к конфигурационным файлам, но и к пакету самих сценариев. И при отсутствии у него должной квалификации, внесенные в сценарий изменения могут существенно повлиять на отказоустойчивость и работоспособность всего комплекса. Кроме того, как показывает практика обеспечения информационной безопасности в открытых системах, программное обеспечение веб-серверов зачастую столь несовершенно, что при достаточной сноровке злоумышленник вполне способен получить исходный текст сценариев веб-сервера (классическим примером может послужить инцидент с веб-сервером WebTrends, который позволял получить исходный текст сценариев просто добавив пробел к его имен в строке запроса. Так, запрос по адресу "http://somewhere.in.the.internet.com/cgi-bin/script.pl" запускал script.pl на исполнение, а запрос к "http://somewhere.in.the.internet.com/cgi-bin/script.pl%20" выдавал исходный текст сценария любому неавторизованному пользователю).

Для, пожалуй, самого популярного в РуНете, да и во всем мире, языка сценариев Perl, одним из вариантов сокрытия исходных текстов стала возможность компилирования исходных текстов в исполняемый бинарный код (формат PE-exe для win32 платформ, ELF для Linux/BSD). Утилиту для компиляции, названную Perl2Exe, с недавних пор предоставляет компания сторонних разработчиков IndigoStar Software.Девизом разработчиков стала рекламная фраза о том, что теперь программист может распространять perl-сценарий в виде exe-файла, не предоставляя исходных текстов [4].


Содержание раздела