Научная статья на тему 'Реализация обфускатора для JavaScript-кода'

Реализация обфускатора для JavaScript-кода Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
4269
67
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
ОБФУСКАТОР / JAVASCRIPT / ЗАПУТЫВАНИЕ КОДА / АЛГОРИТМ / ЗАЩИТА ОТ НЕСАНКЦИОНИРОВАННОГО ДОСТУПА / OBFUSCATOR / CODE OBFUSCATION / ALGORITHM / PROTECTION AGAINST UNAUTHORIZED ACCESS

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Горбачев А.А.

Рассмотрены современные методы обфускации языка JavaScript. Продемонстрирована работа онлайн-ресурсов, обеспечивающих запутывание кода. Выявлены их достоинства и недостатки. Разработана и инициализирована программа для обфускации JavaScript-кода.

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

OBFUSCATOR IMPLEMENTATION FOR JAVASCRIPT CODE

The article considers modern methods of JavaScript obfuscation. The work of online resources providing code obfuscation is demonstrated. Their advantages and disadvantages are revealed. A program for obfuscation of JavaScript code was developed and initialized.

Текст научной работы на тему «Реализация обфускатора для JavaScript-кода»



УДК 004.056.53

РЕАЛИЗАЦИЯ ОБФУСКАТОРА ДЛЯ JAVASCRIPT-КОДА

А. А. Горбачев

Донской государственный технический университет (г. Ростов-на-Дону, Российская Федерация)

Рассмотрены современные методы обфускации языка JavaScript. Продемонстрирована работа он-лайн-ресурсов, обеспечивающих запутывание кода. Выявлены их достоинства и недостатки. Разработана и инициализирована программа для обфускации JavaScript-кода.

Ключевые слова: обфускатор, JavaScript, запутывание кода, алгоритм, защита от несанкционированного доступа.

UDC 004.056.53

OBFUSCATOR IMPLEMENTATION FOR JAVASCRIPT CODE

A. A. Gorbachev

Don State Technical University (Rostov-on-Don, Russian Federation)

The article considers modern methods of JavaScript obfuscation. The work of online resources providing code obfuscation is demonstrated. Their advantages and disadvantages are revealed. A program for obfuscation of JavaScript code was developed and initialized.

Keywords: obfuscator, JavaScript, code obfuscation, algorithm, protection against unauthorized access.

Введение. В современном мире существует множество угроз кражи программ и интеллектуальной собственности, нарушения авторских прав. Данные проблемы связаны с доступностью разработанных программных средств и их исполняемого кода. Существуют разные способы борьбы с киберугрозами. Например, можно хранить код программы на защищенном сервере, а результаты вычисления передавать по запросу от клиента, либо использовать компилируемый код. Но такой способ не подойдет, если код находится в открытом доступе. Чаще всего это десктопные программы или веб-приложения. Лучшим вариантом защиты таких программ является применение обфускации [1]. Цель данной статьи — описать современные методы обфускации языка JavaScript, рассмотреть онлайн-ресурсы, обеспечивающие запутывание кода, выявив их достоинства и недостатки.

Теоретическая часть. Обфускация — это алгоритм, который придает коду программы трудный для анализа вид, но при этом полностью сохраняет его функциональность. Также уменьшается размер файла, содержащего исходный код, и происходит сокрытие авторских прав. Программа, с помощью которой реализуется данный алгоритм, называется обфускатор. К минусам обфускации можно отнести затруднение дальнейшей отладки кода и возможное влияние на его функциональность.

Применение онлайн обфускатора. В запутывании кода особенно нуждаются веб-приложения, написанные на языке JavaScript. Этот язык выполняется на стороне браузера, следовательно, зная принципы работы браузера, можно получить код. Для JavaScript существует множество онлайн обфускаторов и библиотек. Для демонстрации работы онлайн-обфускатора функция нахождения факториала была помещена на два таких ресурса: javascriptobfuscator и daftlogic [2-3].

L4QQ/J

Исходная JavaScript-функция приведена на рис. 1.

Рис. 1. Функция до обфускации Результат работы javascriptobfuscator показан на рис. 2.

var _Bxdd84=[];function factorial(_0xef93x2){return (_0xef93x2l= 1)?

Рис. 2. Функция после обфускации ресурсом javascriptobfuscator

Результат работы онлайн-обфускатора daftlogic показан на рис. 3.

{return d[e]}];e=function(}{return'\\и+'}jc=l};while(c--){if{k[c]) {p=p.replace(new RegExp{1\\b,+e(c)+"\\b'„1g'),k[c])}}return p}(3 2(B)

1):1}4(2(5));",7,7, 'n||factorial|function alert||return'.split('|"),e,{}))

Рис. 3. Функция после обфускации ресурсом daftlogic

Стоит заметить, что приведенные выше онлайн-обфускаторы делают исходный код достаточно неразборчивым. Такой вид способен отпугнуть множество злоумышленников, но возникают новые угрозы потери интеллектуальной собственности:

— владелец сайта может собирать код при его импорте на сетевой ресурс для обфускации, нарушая при этом авторские права;

— сайт обфускатора может быть уязвим для третьих лиц, имеющих доступ к коду;

— для большинства онлайн-обфускаторов имеется ресурс, который деобфусцирует код, поэтому целеустремленный злоумышленник может воспользоваться им.

Таким образом, лучший способ для запутывания JavaScript-кода и сохранения авторских прав — написание собственного обфускатора, так как доступ третьих лиц к такому алгоритму минимален.

Реализация программы обфускатора. Для создания обфускатора необходимо разработать функционал, который будет выполнять следующие действия:

— поддержание работы с файловой системой для нахождения обфусцируемого файла;

— применение модификатора, уменьшающего размер результирующего файла путём удаления ненужных символов без изменения его функциональности;

— обфусцирование кода.

В ходе данной работы реализован обфускатор, который удовлетворяет требования всех вышеприведенных пунктов. Чтобы соединить воедино минификатор, обфускатор и работу с файловой системой, используется программная платформа. Для реализации необходимого функционала была выбрана платформа Node.js. Она позволяет подключать внешние библиотеки, которые написаны на разных языках и направлены на работу с JavaScript-кодом.

В качестве минификатора подходит библиотека uglify-js: версии 3.6.9.

L4QQ/J

Главную роль в программе играет библиотека javascript-obfuscator, которая является мощным бесплатным обфускатором для JavaScript. Также она имеет широкий набор функций, обеспечивающих защиту исходного кода [4].

Алгоритм программы обфускатора довольно прост. В ней прописывается, с каким именно файлом будет происходить работа. Если файл найден, то проводятся минификация, обфускация и создание нового файла, в который записывается код, прошедший все операции. Если же нужный файл не найден, то программа выдает ошибку. Блок-схема данной программы представлена на рис. 4, а ее код — на рис. 5.

С

Начало

J

Файл найден? Да Нет

Л_ _±_

Минификация кода

Обфускация кода

Создание файла с заданным названием

Запись в созданный файл

С

Конец

3

Рис. 4. Блок-схема программы обфускатора

const fs = require('fs1);

const JSObfuscator — require{'javascript-obfuscator'); const Minif = require('uglify-js');

fs.readFile('./nr^code.js', 1UIF-S", function (err, data) { 3 if (err) {

throw err;

}

var min = Minif.minify(data);

var obfuscationResult = JSObfuscator.obfuscate(min.code);

fs.writeFile(1./coder.js* , obfuscationResult.getObfuscatedCode(), function (err) { if(err) {

return console.log(err);

}

console.log("the file was saved!");

Рис. 5. Код программы обфускатора

В результате работы программы был обфусцирован код, представленный на рис. 6. Во время работы программы автоматически создается файл coderjs, который добавляется в каталог, со-

держащий файл с исходным кодом. Созданный элемент содержит обфусцированный код, который показан на рис. 7.

Заключение. Описаны современные методы обфускации языка JavaScript. Рассмотрены два онлайн-ресурса, обеспечивающие запутывание кода: javascriptobfuscator и daftlogic. Продемонстрирована их работа, выявлены достоинства и недостатки. Разработан и инициализирован обфускатор JavaScript-кода.

Проведенный анализ показал, что онлайн обфускаторы делают код достаточно неразборчивым и могут быть применены, но существует угроза потери интеллектуальной собственности. Поэтому лучший способ и для запутывания JavaScript-кода, и для сохранения авторских прав — написание собственного обфускатора, так как доступ третьих лиц к такому алгоритму минимален.

Библиографический список

1. Родичев, Ю. А. Нормативная база и стандарты в области информационной безопасности : учебное пособие / Ю. А. Родичев. — Санкт-Петербург : Питер, 2017. — 256 с.

2. Javascript Obfuscator [Электронный ресурс] / Javascript Obfuscator. — Режим доступа: https://javascriptobfuscator.com/Javascript-Obfuscator.aspx/ (дата обращения: 30.11.2019).

3. Online Javascript Obfuscator [Электронный ресурс] / DaftLogic. — Режим доступа: https://www.daftlogic.com/projects-online-javascript-obfuscator.htm/ (дата обращения: 30.11.2019).

4. Библиотека javascript-obfuscator [Электронный ресурс] / GitHab. — Режим доступа: https://github.com/javascript-obfuscator/javascript-obfuscator/ (дата обращения: 24.11.2019).

Об авторе:

Горбачев Андрей Александрович, студент Донского государственного технического университета (344000, РФ, г. Ростов-на-Дону, пл. Гагарина, 1), andrew.gorba4ev2018@yandex.ru

Рис. 6. Код до обфускации программой

Рис. 7. Код, прошедший программную обфускацию

i Надоели баннеры? Вы всегда можете отключить рекламу.