Что такое экспертиза исходного кода и как ее проводят?
Преступления в сфере высоких технологий год от года становятся все более распространенными. Одна из наиболее злободневных проблем – цифровое пиратство, копирование чужих разработок, программ, их частей с целью использования для получения выгоды.
Подобные преступления нарушают интересы разработчиков, лишают их дохода. Факт незаконного использования, однако, нужно доказать и подтвердить. В этом, как и в решении множества других вопросов, поможет экспертиза исходного кода.
Задача специалистов – проверка кода, выражения программы в формате текста, на одном из языков программирования, определение его сходства с потенциально пиратским приложением, поиск уязвимостей, недочетов, ошибок, приводящих к неработоспособности приложения, краже личной информации, сбоям.
Что можно проверить?
Экспертиза исходного кода проводится в отношении следующего:
- ПО, вне зависимости от специфики. Программный код задает логику работы приложения, взаимодействия его компонентов, функций и модулей;
- Скрипты. В них используются малые части кода, позволяющие расширить функционал программного обеспечения, автоматизировать выполнение некоторых задач;
- Модули. Они – основа программы. Модули независимы, могут комбинироваться друг с другом в определенном порядке для построения новых утилит и приложений;
- Драйверы. Это специальные программы, определяющие принципы взаимодействия операционной системы компьютера, ноутбука, смартфона или другого устройства с его аппаратной частью, периферическим оборудованием, позволяют использовать все доступные функции, исключить проблемы с производительностью;
- Операционные системы. Любые ОС, от проприетарных, разработанных для конкретного устройства, до универсальных, построены на кодах, четко обозначающих их базовые алгоритмы, функции.
Методики экспертизы исходного кода
Проверка всегда проводится комплексно, некоторые этапы можно автоматизировать, другие – выполнимы исключительно вручную, путем тщательной вычитки кода, выявления мельчайших неточностей и ошибок. К примеру, при определении уровня безопасности исходного кода используются следующие способы:
- Динамические. Программы выполняются на физическом или виртуальном ЦПУ при полном доступе к самому коду, либо среде, в которой он работает;
- Статические. Доступ к исходному коду предполагается, однако, ПО не запускается;
- Комбинированные. Представленные методики применяются совместно.
Цели экспертизы
Проверка направлена на решение следующих задач:
- Обнаружение ошибок. Любая ошибка, даже незначительная, сказывается на безопасности программы, приводит к нестабильности ее работы, ограничивает функционал;
- Оценка общего качества. От кода требуется краткость и четкость. При перегруженности он замедляет работу программы, увеличивает нагрузку на процессор, расходует слишком много вычислительных мощностей, ограничивает возможности дальнейшей модернизации;
- Обнаружение уязвимостей. Недочеты способны спровоцировать потерю личной информации, ее кражу, намеренное повреждение программы;
- Определение возможностей масштабирования. Код должен соответствовать не только текущим потребностям, но и будущим, позволять совершенствовать разработку, оперативно адаптировать ее для взаимодействия с новыми операционными системами, программными средами, мощными аппаратными модулями;
- Обнаружение повторов. Дубли информации внутри кода ограничивают его универсальность, перегружают приложение без реального увеличения функциональности, производительности;
- Оценка универсальности. Универсальный код легко адаптируется к потребностям различных программ и приложений, становится основой для последующих разработок без значительных изменений. Это свойство позволяет ускорить разработку новых программ.
Актуальные вопросы
Экспертиза исходного кода позволяет найти ответы на множество вопросов:
- Отвечает ли код требованиям по разработке скриптов, приложений и других утилит?
- Не представляет ли код сложностей при чтении, не возникнет ли проблем у разработчиков при взаимодействии с ним?
- Достаточна ли производительность кода? Имеется ли у него потенциал для совершенствования, повышения быстродействия программного обеспечения?
- Безопасен ли код? Нет ли в нем уязвимостей, позволяющих злоумышленникам совершать противоправные действия, перехватывать личную информацию, намеренно повреждать ее?
- Логична ли структура кода? Правильна ли она? Не является ли перегруженной, ограничивающей быстродействие программы?
- Универсален ли код? Допустимо ли его применение при разработке других программ?
Порядок проведения экспертизы программного кода
Объектом экспертизы становится исходный код в файловом виде, переданный специалистам на внешнем физическом носителе, флеш-карте, или расположенный на сервере с возможностью удаленного доступа. Эксперт определяет язык, на котором составлен код, тщательно изучает его на предмет уязвимостей, ошибок. Если поставлена задача определить факт плагиата, то проводится сопоставление эталона и кода, который, по мнению разработчика, нарушает авторское право.
При проверке активно применяются программные средства, в том числе:
- Total Commander;
- Microsoft Visual Studio;
- WinMerge;
- AndroidStudio и другие проверочные утилиты, соответствующие спецификации программы, операционной системе, на которую она ориентирована.
Анализ на плагиат подразумевает учет не только прямых, но и косвенных признаков. Зачастую, основа кода остается прежней, но похититель старается замаскировать ее оформлением, внесением небольших “косметических” изменений, расширением функционала. Эксперт без труда определит этот факт.
Подведение итогов
От ошибок при написании исходного кода не защищены даже разработчики с огромным опытом. К сожалению, такие оплошности часто используются злоумышленниками в своих целях. В группе риска и авторы, не допускающие ошибок, их коды могут быть украдены для разработки программ, близких по функционалу. Все это нарушает права интеллектуальной собственности.
Специалисты, уполномоченные на экспертизу, в обязательном порядке документально фиксируют ее результаты, обозначают все сделанные выводы. Документ можно использовать как основу для устранения ошибок, улучшения общего качества кода, так и в качестве улики для суда, бумаги, подтверждающей факт кражи, нелегального использования разработки. Это позволит восстановить справедливость, защитить свои интересы, не допустить противоправных и мошеннических действий.
Источник - https://expert-kollegia.ru/