🟥 Экспертиза исходного программного кода
Раздел 1. Предмет и объект экспертизы исходного кода в судебной и независимой экспертной деятельности
Экспертиза исходного кода представляет собой специализированный вид инженерно-технического исследования, объектом которого выступают тексты программ на языках программирования, сопутствующая документация, сборочные артефакты и средовые конфигурации, позволяющие установить происхождение, функциональное назначение, качество и юридически значимые характеристики программного продукта. В отличие от товароведческих исследований, где акцент делается на потребительские свойства и соответствие маркировке, предмет настоящей экспертизы лежит в плоскости уголовного преследования, защиты коммерческой тайны, выявления скрытых деструктивных компонентов и разрешения договорных споров о качестве разработки.
В судебной практике экспертиза исходного кода назначается при расследовании преступлений, предусмотренных статьями о неправомерном доступе к компьютерной информации, создании вредоносных программ, мошенничестве в сфере компьютерной информации, а также при рассмотрении арбитражных споров о неисполнении обязательств по договорам разработки. Независимая экспертиза, проводимая по инициативе стороны до или вне судебного процесса, позволяет зафиксировать технические обстоятельства, которые впоследствии могут лечь в основу исковых требований или послужить основанием для отказа от необоснованных претензий.
Ключевая особенность экспертизы исходного кода состоит в том, что исследуемый объект существует в двух принципиально различных формах: исходный текст, доступный разработчику, и исполняемый код, доступный пользователю. Судебный эксперт должен четко разграничивать эти формы и понимать пределы восстановления исходного текста по бинарному файлу. Как отмечается в экспертной практике, восстановить исходный текст по исполняемому файлу невозможно; заключение эксперта в таких случаях дает техническую опору для правовых выводов, но не заменяет ни разработку заново, ни право на код . Это принципиальное ограничение должно осознаваться заказчиком экспертизы до начала исследования, чтобы избежать необоснованных ожиданий.
В Союзе «Федерация судебных экспертов» экспертиза исходного кода выполняется специалистами, имеющими профильное образование в области информационных технологий и опыт работы с системами контроля версий, инструментами статического и динамического анализа, а также методиками криминалистического исследования носителей информации. Географическая привязка к Москве обеспечивает возможность оперативного взаимодействия с правоохранительными органами и судами, однако экспертные исследования проводятся по всей территории Российской Федерации силами региональных представительств.
Экспертиза исходного кода в рамках уголовного дела требует соблюдения процессуальных норм, установленных Уголовно-процессуальным кодексом. Эксперт предупреждается об уголовной ответственности за дачу заведомо ложного заключения, а исследуемые объекты должны быть надлежащим образом упакованы, опечатаны и внесены в протокол следственного действия. Независимая экспертиза, проводимая по договору, не связана процессуальными ограничениями уголовного дела, однако ее результаты оцениваются судом наряду с другими доказательствами и не имеют заранее установленной силы .
Раздел 2. Поиск программ слежения в исходном коде и исполняемых модулях
2.1. Методологические основы выявления шпионского программного обеспечения
Поиск программ слежения относится к числу наиболее востребованных направлений экспертизы исходного кода в делах о защите информации, коммерческой тайне и личной неприкосновенности. Шпионское программное обеспечение может внедряться как на уровне исходного кода, включаемого в разрабатываемый продукт, так и на уровне исполняемых модулей, драйверов или прошивок. Экспертная задача состоит в идентификации вредоносного компонента, установлении его функциональных возможностей, каналов передачи данных и связи с конкретными лицами или организациями.
Методика статического анализа исходного кода предполагает исследование текстов программ без их исполнения. Эксперт выявляет подозрительные конструкции: обращения к API, обеспечивающим перехват ввода с клавиатуры, чтение буфера обмена, доступ к файловой системе за пределами заявленной функциональности, сетевым соединениям с внешними адресами, не указанными в документации. Особое внимание уделяется обфускации и шифрованию строк, которые могут скрывать адреса командных серверов или иные индикаторы компрометации.
Динамический анализ выполняется в изолированной среде (песочнице) с применением инструментов мониторинга системных вызовов, сетевого трафика и изменений файловой системы. Эксперт фиксирует поведение программы при различных сценариях эксплуатации, сопоставляет наблюдаемую активность с заявленной функциональностью и выявляет скрытые операции. Результаты динамического анализа документируются в протоколе, который становится частью исследовательской части заключения.
Сетевой анализ (network forensics) применяется при наличии журналов брандмауэров, прокси-серверов или дампов трафика. Эксперт идентифицирует подозрительные исходящие соединения, домены, генерируемые алгоритмически (DGA), и скрытые каналы передачи данных, включая DNS-туннели и ICMP-каналы. Сопоставление временных меток сетевой активности с моментами модификации файлов или проведения финансовых операций позволяет установить причинно-следственные связи .
Аппаратный анализ прошивок (firmware forensics) применяется при подозрении на внедрение на уровне BIOS/UEFI или сетевых карт. Снятие дампа SPI-флеш-чипа с помощью программатора с последующим декомпилированием и анализом на наличие нестандартных модулей позволяет выявить компрометацию на низком уровне, недоступную для обнаружения антивирусными средствами.
2.2. Типовые экспертные задачи
В судебной практике перед экспертом ставятся следующие типовые вопросы: идентификация конкретного вредоносного программного обеспечения и его семейства; установление факта передачи данных на внешний сервер; определение даты и времени установки программы на устройство; восстановление удаленных файлов и логов, свидетельствующих о действиях злоумышленника; установление связи между найденным программным обеспечением и конкретными операциями, включая банковские переводы .
В случае если в деле фигурирует несколько устройств или распределенная инфраструктура, экспертиза может проводиться комиссией экспертов различных специальностей: специалист по компьютерной криминалистике, специалист по сетевому анализу, специалист по мобильным устройствам. Комплексный характер исследования требует единой методологической платформы и координации действий экспертов на всех этапах.
Кейс 1. Кейлоггер, внедренный через подмену драйвера принтера
В коммерческой организации в течение трех месяцев происходили несанкционированные списания на сумму 14 миллионов рублей через систему «Банк-Клиент» с использованием электронной цифровой подписи главного бухгалтера. Антивирусная проверка не выявляла угроз, однако наблюдались сбои при печати документов. В рамках назначенной судебной компьютерной экспертизы был проведен поиск шпионского программного обеспечения на рабочей станции бухгалтера. Эксперт применил методику статического анализа драйверов и обнаружил модифицированный файл драйвера принтера unidrv.dll, который подгружал стороннюю библиотеку. Динамический анализ в песочнице показал, что библиотека перехватывала вызовы функций шифрования CryptEncrypt в момент подписания платежных поручений и подменяла реквизиты получателя. Данные отправлялись на внешний IP-адрес через протокол HTTPS с маскировкой под обновления Windows. Вектор проникновения был установлен: инфицированный USB-накопитель, использовавшийся для переноса файлов между рабочими станциями, при подключении которого происходила подмена драйвера. В заключении эксперта были подробно описаны методы исследования, извлечена библиотека, расшифрован сетевой трафик с использованием ключей, извлеченных из памяти, установлены IP-адреса командного сервера. Заключение признано судом допустимым доказательством, на его основе возбуждено уголовное дело по статьям о мошенничестве и создании вредоносных программ. Виновное лицо — системный администратор, имевший доступ к USB-носителю, — было установлено и осуждено . Экспертиза исходного кода в данном случае носила комплексный характер: наряду с анализом драйвера исследовались дизассемблированные фрагменты библиотеки, что позволило восстановить логику перехвата и подмены данных.
Кейс 2. Мобильный троян на Android с перехватом SMS-сообщений
Гражданин обнаружил списания с банковской карты, которые он не совершал. При этом SMS-уведомления от банка не поступали на устройство, хотя баланс уменьшался. В рамках независимой экспертизы, проведенной по договору с потерпевшим, был исследован смартфон на базе Android. Эксперт выполнил полное логическое извлечение данных, включая разделы, доступные без прав суперпользователя, и провел статический анализ установленных приложений. Был выявлен APK-файл, маскировавшийся под системное обновление, с набором разрешений, включавшим RECEIVE_SMS, READ_SMS, SEND_SMS, INTERNET и ACCESS_FINE_LOCATION. Декомпиляция показала наличие сервиса, зарегистрированного на прием системных широковещательных сообщений SMS_RECEIVED с приоритетом выше стандартного приложения обмена сообщениями. Логика сервиса предусматривала перехват входящих SMS, фильтрацию по шаблонам, соответствующим уведомлениям банка, и пересылку содержимого на удаленный сервер через HTTPS. Кроме того, приложение запрашивало разрешение на отправку SMS, что позволяло ему самостоятельно подтверждать операции или удалять следы. Эксперт восстановил удаленные записи журнала вызовов и фрагменты базы данных SMS, которые подтвердили факт перехвата. В заключении были указаны доменные имена и IP-адреса серверов, на которые осуществлялась передача, а также временные метки, сопоставленные с моментами списаний. Заключение легло в основу заявления в полицию и последующего уголовного дела. Поиск программ слежения, выполненный в рамках экспертизы исходного кода декомпилированного приложения, позволил установить функциональные связи между перехватом сообщений и хищением средств.
Раздел 3. Восстановление удаленных файлов и следов в контексте экспертизы исходного кода
3.1. Место восстановления данных в системе экспертных задач
Восстановление удаленных файлов традиционно ассоциируется с компьютерно-технической экспертизой носителей информации, однако в делах, связанных с исходным кодом, эта задача приобретает специфический характер. Удалению могут подвергаться не только пользовательские документы, но и файлы проектов, конфигурации сборочных сред, журналы систем контроля версий и артефакты, содержащие следы несанкционированного доступа. Эксперт, владеющий методиками восстановления данных, способен извлечь удаленные фрагменты исходного кода, которые могут свидетельствовать о факте разработки вредоносного компонента, его тестировании или последующем сокрытии.
В судебной практике восстановление удаленных файлов часто становится ключевым доказательственным элементом, когда обвиняемый утверждает, что спорный код не разрабатывался или не использовался. Следы в файловой системе, журналах и нераспределенных областях диска могут опровергнуть эту позицию. Аналогичным образом восстановление удаленных журналов сборки или логов тестирования позволяет установить хронологию событий и связь между действиями конкретных лиц и появлением вредоносного функционала.
Методика восстановления данных включает несколько уровней. На уровне файловой системы исследуются записи каталогов, таблицы размещения файлов (FAT, MFT для NTFS), журналы транзакций. На уровне носителя выполняется посекторный анализ с поиском сигнатур известных форматов и структурных паттернов, характерных для исходного кода (например, ключевых слов языков программирования, синтаксических конструкций). Специфика восстановления именно исходного кода состоит в том, что фрагменты могут быть фрагментированы, частично перезаписаны или находиться в сжатом виде внутри архивов и объектных файлов.
3.2. Восстановление удаленных артефактов сборки и журналов
Особую ценность для экспертизы исходного кода представляют артефакты сборочных процессов: объектные файлы, промежуточные представления, символы отладочной информации, журналы компиляции. Даже если исходный текст удален, объектные файлы и файлы отладочных данных (PDB для платформы .NET, DWARF для Linux) могут содержать имена классов, методов, локальных переменных и структуру программы, достаточную для выводов о функциональности. В одном из экспертных заключений отмечалось, что при отсутствии исходного текста, но наличии файлов отладочных данных, восстановление программы дает более грубый результат, однако позволяет установить состав классов и методов, обращения к базе данных и внешним системам .
Восстановление удаленных журналов систем контроля версий (Git, SVN) позволяет установить историю изменений, авторство коммитов и время внесения конкретных фрагментов кода. Даже при удалении репозитория следы могут сохраняться в виде упакованных объектов, ссылок в конфигурационных файлах IDE и кэшах. Эксперт, владеющий методиками анализа Git-объектов, способен восстановить удаленные ветки и коммиты, которые могут содержать код, впоследствии исключенный из финальной версии, но свидетельствующий о намерениях разработчика.
Экспертиза исходного кода в делах о восстановлении удаленных данных требует тесного взаимодействия с экспертом-криминалистом, работающим с носителем. В Союзе «Федерация судебных экспертов» такие исследования выполняются совместно специалистами по компьютерной криминалистике и по анализу программного обеспечения, что обеспечивает полноту исследования и непротиворечивость выводов.
Кейс 3. Восстановление удаленного вредоносного модуля из нераспределенного пространства
В ходе расследования уголовного дела о неправомерном доступе к компьютерной информации обвиняемый утверждал, что обнаруженный на его рабочей станции фрагмент кода является частью легального проекта и не имеет отношения к инкриминируемому деянию. Следователем была назначена судебная компьютерно-техническая экспертиза, в рамках которой эксперт выполнил посекторный анализ жесткого диска. В нераспределенном пространстве были обнаружены фрагменты файлов, содержащие исходный код на языке Python. Сигнатурный поиск выявил структуры, характерные для скриптов, осуществляющих сбор системной информации и отправку ее на удаленный сервер. Восстановленные фрагменты были сопоставлены с логами сетевых соединений, зафиксированными провайдером. Временные метки восстановленных файлов совпали с периодами активности командного сервера, указанного в обвинительном заключении. Кроме того, в кэше интегрированной среды разработки были обнаружены следы редактирования файла с именем, совпадающим с именем удаленного скрипта. Эксперт пришел к выводу, что восстановленные фрагменты образуют функционально завершенный модуль, реализующий сбор и передачу данных, а временные характеристики исключают возможность их создания в иное время, кроме инкриминируемого периода. Защита пыталась оспорить заключение, ссылаясь на фрагментарность восстановленных данных, однако эксперт в судебном заседании пояснил, что совокупность восстановленных фрагментов, журналов IDE и сетевых логов образует непротиворечивую картину, достаточную для категорического вывода. Приговор был основан в том числе на результатах этой экспертизы. Восстановление удаленных файлов в данном деле стало возможным благодаря методическому сочетанию криминалистического анализа носителя и экспертизы исходного кода, что подчеркивает важность комплексного подхода.
Раздел 4. Экспертиза качества разработки и выявление дефектов, повлекших тяжкие последствия
4.1. Правовые и технические критерии некачественной разработки
Споры о качестве программного обеспечения составляют значительную часть гражданских и арбитражных дел, связанных с исходным кодом. Заказчик, обнаруживший, что переданный ему продукт не соответствует техническому заданию, содержит критические дефекты или не обладает заявленной функциональностью, инициирует независимую экспертизу для фиксации несоответствий. В отличие от потребительских споров, где защита прав потребителей строится на презумпции недобросовестности исполнителя, в договорных спорах между юридическими лицами бремя доказывания распределяется иным образом: заказчик должен подтвердить, что результат работ не соответствует условиям договора.
Экспертиза качества исходного кода включает проверку соответствия функциональных и нефункциональных требований технического задания, оценку архитектуры, выявление дефектов, анализ производительности и безопасности. Эксперт не выносит правовых суждений о виновности или невиновности исполнителя; его задача — установить технические факты, которые суд оценивает в совокупности с иными доказательствами .
Ключевым элементом исследования является матрица требований, в которой каждое положение технического задания сопоставляется с фактической реализацией в коде. Эксперт фиксирует, какие требования выполнены, какие не выполнены, какие выполнены частично или с отклонениями. Для каждого выявленного дефекта указываются его расположение в коде, условие проявления и последствия. Такой подход позволяет суду оценить существенность недостатков и их влияние на возможность использования продукта по назначению.
4.2. Дефекты, создающие угрозу жизни и здоровью, и их экспертная оценка
Особую категорию составляют дела, в которых некачественный исходный код привел к тяжким последствиям: авариям на производстве, сбоям систем жизнеобеспечения, повреждению имущества или причинению вреда здоровью. В таких случаях экспертиза исходного кода выходит за рамки договорного спора и приобретает криминалистическое значение. Эксперт должен установить причинно-следственную связь между дефектом кода и наступившими последствиями, что требует не только анализа текста программы, но и понимания физических процессов, которыми управляет данное программное обеспечение.
Методика исследования в таких делах включает реконструкцию условий эксплуатации, воспроизведение сценария, приведшего к аварии, и анализ кода на предмет наличия ошибок, которые могли способствовать или непосредственно вызвать нештатную ситуацию. Эксперт проверяет обработку исключительных ситуаций, граничных условий, корректность работы с памятью, наличие защитных механизмов. Вывод о причинной связи должен быть обоснован и не допускать альтернативных интерпретаций, которые не были проверены.
В Союзе «Федерация судебных экспертов» для таких исследований привлекаются специалисты по промышленной автоматизации, системам реального времени и встраиваемому программному обеспечению. Экспертиза исходного кода в подобных делах часто требует комплексного анализа: наряду с текстом программы исследуются конфигурации контроллеров, журналы событий, показания датчиков и документация производителя оборудования. Только совокупность этих данных позволяет сделать вывод о том, является ли дефект кода причиной аварии или лишь сопутствующим обстоятельством.
Кейс 4. Сбой системы управления технологическим процессом на производстве
На химическом предприятии произошла аварийная остановка реактора с выбросом паров токсичного вещества. Пострадали три работника. Следственный орган назначил комплексную экспертизу, включавшую исследование программного обеспечения АСУ ТП. Исходный код управляющей программы был предоставлен разработчиком по запросу следователя. Эксперт проанализировал логику работы контуров регулирования и обнаружил, что в алгоритме обработки показаний датчика давления отсутствовала проверка на достоверность сигнала: при обрыве цепи датчика значение интерпретировалось как нулевое, что приводило к команде на максимальное открытие клапана подачи реагента. Штатная система защиты, которая должна была сработать независимо от управляющей программы, также содержала дефект: в ее конфигурации был неверно задан порог срабатывания, и она не активировалась. Эксперт воспроизвел сценарий в симуляторе и подтвердил, что при обрыве цепи датчика поведение программы приводит к неконтролируемому повышению давления. Исследование исходного кода показало, что разработчик заявлял в документации наличие защиты от обрыва, однако в реализации она отсутствовала. В заключении была установлена причинно-следственная связь между дефектом кода и аварией. Уголовное дело было возбуждено по статье о нарушении правил безопасности на взрывоопасных объектах. Экспертиза исходного кода сыграла ключевую роль в установлении технической стороны произошедшего и в разграничении ответственности между разработчиком, эксплуатирующей организацией и службой технического надзора. Защита разработчика пыталась оспорить выводы, ссылаясь на то, что исходный код был передан не в полном объеме, однако эксперт подтвердил, что исследованная версия соответствует той, что эксплуатировалась на предприятии, что было подтверждено хеш-суммами и журналами развертывания.
Раздел 5. Экспертиза исходного кода в делах о коммерческом шпионаже и неправомерном использовании интеллектуальной собственности
5.1. Установление факта копирования и степени переработки
Коммерческий шпионаж и неправомерное использование исходного кода конкурента традиционно относятся к сфере защиты интеллектуальной собственности, однако уголовно-правовая составляющая присутствует в делах о нарушении коммерческой тайны, неправомерном доступе к охраняемой законом компьютерной информации и, в некоторых случаях, мошенничестве. Экспертиза исходного кода в таких делах направлена на установление факта копирования, степени переработки, авторства и происхождения конкретных фрагментов.
Методика сравнения исходного кода включает несколько уровней. Лексический анализ выявляет совпадения идентификаторов, строковых констант и комментариев. Синтаксический анализ позволяет обнаружить структурные совпадения даже при переименовании переменных. Семантический анализ устанавливает совпадения алгоритмической логики. Наиболее убедительным доказательством копирования считается обнаружение в коде-нарушителе уникальных ошибок, характерных для кода-оригинала: опечаток в сообщениях, нестандартных конструкций, комментариев, не имеющих смысла в новом контексте.
Судебная практика знает случаи, когда для установления факта копирования требовалось проведение комплексной экспертизы с участием специалистов по конкретным языкам программирования и предметным областям. В одном из дел эксперт сравнивал программы для электронной торговли и пришел к выводу, что система в целом не является построчной конвертацией, однако в отношении одного модуля признал наиболее вероятным прямое копирование с незначительными изменениями . Такой дифференцированный подход позволяет суду определить объем неправомерно использованного кода и размер компенсации.
5.2. Экспертиза в делах о нарушении режима коммерческой тайны
В делах о нарушении режима коммерческой тайны экспертиза исходного кода решает задачи установления того, относится ли конкретная информация к охраняемой, были ли приняты меры по ее защите и имел ли место неправомерный доступ. Эксперт анализирует систему разграничения доступа, журналы аутентификации, следы копирования файлов и передачи данных. Если обвиняемый утверждает, что использовал собственные разработки, экспертиза может установить наличие или отсутствие заимствований.
Особенность таких дел состоит в том, что исходный код может быть частично недоступен: обвиняемый мог удалить файлы, а работодатель — не сохранить резервные копии. В этом случае эксперт работает с сохранившимися артефактами: фрагментами в кэшах, объектными файлами, журналами сборки, резервными копиями на серверах. Восстановление удаленных файлов и анализ временных меток позволяют реконструировать события и установить, когда и какие файлы покидали защищенный контур.
Кейс 5. Увольнение разработчика и использование кода в конкурирующей организации
Инженер-программист, занимавшийся разработкой системы аналитики для крупной торговой сети, уволился и через три месяца трудоустроился в конкурирующую организацию, где представил руководству «собственную» разработку аналогичной системы. Бывший работодатель обратился в суд с иском о нарушении исключительных прав и разглашении коммерческой тайны. В рамках судебной экспертизы был исследован исходный код новой системы и сопоставлен с кодом истца. Эксперт выполнил лексический, синтаксический и семантический анализ. Были выявлены многочисленные совпадения в структуре базы данных, включая имена таблиц и полей, не являющиеся общеупотребительными. В коде ответчика сохранились комментарии на русском языке, характерные для стиля истца, а также строковые константы с сообщениями об ошибках, идентичные тем, что использовались в системе истца. Особую доказательственную силу имело обнаружение уникальной опечатки в сообщении валидации, которая присутствовала в обеих системах. Ответчик утверждал, что код был написан им с нуля, а совпадения объясняются общими подходами к проектированию. Однако эксперт представил диаграммы зависимостей модулей, демонстрирующие идентичную архитектуру, и результаты сравнения сгенерированных деревьев синтаксического разбора, которые показали совпадение на уровне, исключающем независимое создание. Кроме того, в кэше IDE на рабочей станции ответчика были восстановлены удаленные файлы, содержащие фрагменты кода истца с временными метками, предшествующими его увольнению. Суд признал факт неправомерного использования исходного кода доказанным. Экспертиза исходного кода в данном деле позволила не только установить факт копирования, но и опровергнуть версию ответчика о самостоятельной разработке, что повлияло на размер компенсации.
Раздел 6. Экспертиза исходного кода в делах о вредоносном программном обеспечении и кибератаках
6.1. Идентификация и атрибуция вредоносного кода
В делах о создании, распространении и использовании вредоносных программ экспертиза исходного кода направлена на идентификацию вредоносного компонента, установление его функциональных возможностей и, где это возможно, атрибуцию — связь с конкретными лицами, группами или кампаниями. Исходный код вредоносной программы может быть получен при обыске, из переписки обвиняемых, из утечек или восстановлен из памяти инфицированных устройств.
Идентификация начинается с определения семейства вредоносного кода на основе характерных строк, алгоритмов шифрования, протоколов связи с командными серверами. Эксперт использует сигнатуры, поведенческие профили и базы данных, доступные в экспертных учреждениях. Однако сигнатурный подход недостаточен, если код модифицирован или написан специально для конкретной атаки. В таких случаях применяется функциональный анализ: эксперт устанавливает, какие действия выполняет программа, и на этой основе относит ее к категории вредоносных.
Атрибуция на уровне исходного кода возможна при обнаружении уникальных особенностей стиля программирования, характерных библиотек, комментариев, языковых артефактов. Например, использование определенных фреймворков, соглашений об именовании, специфических конструкций может указать на авторство или среду разработки. Однако эксперт должен проявлять осторожность: атрибуция на основе стиля кода редко бывает категорической и обычно формулируется в вероятностной форме.
6.2. Анализ уязвимостей и бэкдоров, внедренных в легальное программное обеспечение
Особую категорию составляют дела, в которых вредоносный функционал внедряется в легально распространяемое программное обеспечение. Это может быть бэкдор, оставленный разработчиком для несанкционированного доступа, или уязвимость, намеренно не устраненная для сохранения возможности эксплуатации. Экспертиза исходного кода в таких случаях требует анализа не только наличия вредоносных конструкций, но и контекста их появления: были ли они добавлены умышленно или возникли в результате ошибки, кто имел доступ к репозиторию и когда были внесены изменения.
Методика включает анализ истории коммитов, если репозиторий доступен, сопоставление версий, исследование сборочных конфигураций. Бэкдор может быть замаскирован под легитимную функцию, например, «отладочный доступ» или «аварийный вход», который в документации не упоминается или описан как недоступный вProduction-версии. Эксперт проверяет, активируется ли этот функционал при штатной эксплуатации, и если да, то при каких условиях.
В делах о кибератаках на критическую инфраструктуру экспертиза исходного кода может быть назначена для установления того, каким образом злоумышленник получил доступ и какие компоненты системы были скомпрометированы. Если атака использовала уязвимость в легальном программном обеспечении, эксперт определяет, была ли уязвимость известна разработчику, сообщалось ли о ней и какие меры принимались. Это имеет значение для разграничения ответственности между разработчиком, эксплуатирующей организацией и непосредственно атакующим.
Кейс 6. Бэкдор в системе управления доступом на предприятии
Служба безопасности предприятия обнаружила несанкционированные попытки входа в систему управления доступом (СКУД), которые не фиксировались в журналах стандартными средствами. Было инициировано внутреннее расследование, а затем — независимая экспертиза исходного кода системы, разработанной по заказу предприятия сторонней организацией. Эксперт проанализировал код модуля аутентификации и обнаружил функцию, которая при передаче специально сформированного запроса с определенной комбинацией параметров создавала сессию с правами администратора без проверки учетных данных. Функция была обфусцирована и не документирована. Анализ истории изменений показал, что она была добавлена одним из разработчиков подрядчика за три месяца до сдачи проекта и не была удалена при финальной сборке. В журналах сборки сохранились записи, указывающие на то, что разработчик тестировал эту функцию на стенде. Эксперт также восстановил удаленные файлы на рабочей станции разработчика, которые содержали переписку, свидетельствующую о намеренном характере внедрения. В заключении был сделан вывод о наличии умышленно внедренного механизма несанкционированного доступа. Материалы экспертизы были переданы в правоохранительные органы, по результатам проверки возбуждено уголовное дело. Экспертиза исходного кода в данном деле потребовала не только технического анализа, но и восстановления удаленных данных и сопоставления временных меток, что подчеркивает комплексный характер подобных исследований. Заказчик также использовал заключение для предъявления гражданского иска к подрядчику о возмещении убытков, связанных с compromised системой безопасности.
Раздел 7. Независимая экспертиза как инструмент досудебного урегулирования и подготовки позиции стороны
7.1. Роль независимой экспертизы в спорах о разработке
Независимая экспертиза исходного кода проводится по инициативе стороны спора до обращения в суд или параллельно с судебным процессом. Ее результаты не имеют процессуального статуса судебной экспертизы, однако могут быть представлены в качестве письменного доказательства или использованы для формулирования вопросов, которые сторона предлагает поставить перед судебным экспертом. Кроме того, независимая экспертиза позволяет стороне оценить перспективы спора и избежать необоснованных затрат на судебное разбирательство.
В Союзе «Федерация судебных экспертов» независимая экспертиза исходного кода выполняется по договору с заказчиком. Эксперт не связан процессуальными ограничениями, однако обязан соблюдать методические требования и документировать все этапы исследования. Заключение независимой экспертизы содержит те же разделы, что и судебное: вводную часть, исследовательскую часть, выводы. Отличие состоит в том, что эксперт не предупреждается об уголовной ответственности по статье 307 Уголовного кодекса, хотя добросовестность эксперта гарантируется его профессиональной репутацией и условиями договора.
Практика показывает, что хорошо подготовленное заключение независимой экспертизы часто становится основой для мирового соглашения или отказа от иска. Если сторона получает заключение, подтверждающее ее правоту, это усиливает ее переговорную позицию. Если заключение не подтверждает претензии, сторона может скорректировать требования или отказаться от них, сэкономив ресурсы.
7.2. Вопросы, которые целесообразно ставить перед экспертом
Формулировка вопросов перед экспертом — критически важный этап, от которого зависит результативность исследования. Вопросы должны быть конкретными, технически корректными и допускать однозначный ответ на основе доступных материалов. Типичные ошибки включают постановку вопросов правового характера (например, «является ли код украденным»), вопросов, требующих данных, которых у эксперта нет, и вопросов, ответ на которые не имеет значения для дела.
Для независимой экспертизы качества разработки целесообразно ставить вопросы о соответствии функциональности техническому заданию, наличии конкретных дефектов и их влиянии на работоспособность, возможности использования продукта по назначению. Для экспертизы следов шпионского программного обеспечения — вопросы о наличии конкретных функций, каналах передачи данных, времени установки. Для экспертизы копирования — вопросы о совпадениях, их характере и возможности независимого создания.
Экспертиза исходного кода в рамках независимого исследования может быть выполнена в формате письменной консультации, когда заказчик не готов передавать все материалы, но хочет получить предварительную оценку. Консультация не заменяет полноценного исследования, однако помогает определить стратегию и избежать ошибок на ранних этапах.
Кейс 7. Досудебная экспертиза, предотвратившая необоснованный иск
Компания-заказчик планировала подать иск к разработчику о взыскании значительной суммы за некачественную, по ее мнению, разработку программного обеспечения для складского учета. Претензии сводились к тому, что система работала медленно и часто выдавала ошибки при обработке крупных партий товаров. Юристы заказчика рекомендовали провести независимую экспертизу до подачи иска. В рамках экспертизы был исследован исходный код и проведено тестирование в среде, имитирующей производственную нагрузку. Эксперт установил, что архитектура приложения действительно имеет ограничения по масштабируемости, однако заявленные в техническом задании объемы обработки были значительно ниже тех, при которых возникали проблемы. Ошибки, на которые ссылался заказчик, воспроизводились только при некорректно сконфигурированной базе данных, и вина разработчика в этом отсутствовала. Кроме того, выяснилось, что часть требований, которые заказчик считал нарушенными, не была зафиксирована в договоре и техническом задании в измеримой форме. Заключение независимой экспертизы показало, что судебные перспективы иска неблагоприятны. Заказчик отказался от подачи иска и вместо этого заключил с разработчиком дополнительное соглашение на оптимизацию системы за отдельную плату. Независимая экспертиза исходного кода в данном случае позволила избежать проигрыша в суде и сохранить деловые отношения, а также выявила реальные, а не мнимые проблемы в системе, которые были устранены в рамках дополнительного соглашения.
Раздел 8. Процессуальные и организационные аспекты назначения и проведения экспертизы исходного кода
8.1. Материалы, необходимые для проведения исследования
Успех экспертизы исходного кода в значительной степени определяется полнотой и качеством материалов, представленных эксперту. Для судебной экспертизы материалы истребуются судом или следователем; для независимой — передаются заказчиком. В обоих случаях эксперт должен иметь возможность идентифицировать исследуемый объект, зафиксировать его состояние и обеспечить воспроизводимость исследования.
Минимальный комплект материалов для экспертизы качества разработки включает: договор и техническое задание со всеми приложениями и дополнительными соглашениями, исходный код в том виде, в котором он был передан заказчику (с указанием хеш-сумм или иных идентификаторов), исполняемые файлы, развернутые в среде, соответствующей производственной, документацию разработчика, переписку сторон по вопросам разработки и приемки, акты выполненных работ и претензии . Для экспертизы следов шпионского программного обеспечения необходимы образы носителей, журналы сетевых соединений, конфигурации брандмауэров. Для экспертизы копирования — исходный код обеих сторон и материалы, позволяющие установить даты создания файлов.
Если материалы неполны, эксперт обязан отразить это в заключении и указать, какие выводы не могут быть сделаны из-за недостатка данных. Эксперт не должен домысливать факты или делать выводы, не основанные на исследованных материалах. В некоторых случаях неполнота материалов приводит к выводу о невозможности ответа на поставленный вопрос, что само по себе имеет процессуальное значение: сторона, не представившая материалы, несет риск неблагоприятных последствий.
8.2. Сроки, стоимость и организация взаимодействия с Союзом «Федерация судебных экспертов»
Сроки проведения экспертизы исходного кода зависят от объема кода, сложности поставленных вопросов и полноты материалов. Ориентировочный срок для судебной экспертизы составляет от десяти рабочих дней, однако сложные исследования с восстановлением данных, анализом большого объема кода и проведением динамических испытаний могут занимать значительно больше времени . Стоимость определяется индивидуально после ознакомления с материалами и уточнения вопросов.
Союз «Федерация судебных экспертов» расположен в Москве по адресу: Кожевнический проезд, дом 3. Контактные телефоны и электронная почта доступны на официальном сайте организации . Для получения консультации и предварительной оценки задачи достаточно описать спор и перечислить имеющиеся материалы; передача самих материалов на этом этапе не требуется.
Организация взаимодействия строится на принципах независимости и объективности. Эксперт не вступает в контакт со сторонами спора по существу исследования вне процессуальной процедуры, не принимает указаний, направленных на достижение заранее заданного результата. Если эксперт ранее работал по договору с одной из сторон, это обстоятельство раскрывается, а вопрос об отводе решается органом, назначившим экспертизу.
Кейс 8. Экспертиза, назначенная судом, и последующая рецензия на заключение
В арбитражном споре между заказчиком и разработчиком программного обеспечения для логистики суд назначил экспертизу, поручив ее проведение одному из экспертных учреждений. Заключение, представленное суду, содержало выводы о том, что программное обеспечение в целом соответствует техническому заданию, а выявленные дефекты несущественны. Заказчик, не согласный с выводами, обратился в Союз «Федерация судебных экспертов» с запросом на рецензирование заключения. Рецензент проанализировал исследовательскую часть заключения и выявил методологические нарушения: эксперт не указал, какая именно версия исходного кода исследовалась, не привел команд сборки и настроек инструментов, а матрица требований охватывала лишь часть положений технического задания. Кроме того, в заключении отсутствовали результаты проверки дефектов, на которые указывал заказчик, и не было обоснования, почему эти дефекты признаны несущественными. Рецензия была представлена в суд вместе с ходатайством о назначении повторной экспертизы. Суд удовлетворил ходатайство, и повторная экспертиза, проведенная с соблюдением методических требований, установила, что ряд ключевых требований технического задания не выполнен, а выявленные дефекты приводят к невозможности использования системы в заявленных условиях эксплуатации. Решение было вынесено в пользу заказчика. Данный кейс иллюстрирует важность не только первичной экспертизы, но и контроля ее качества. Экспертиза исходного кода, выполненная с нарушением методики, может быть оспорена через рецензирование, и в таких случаях Союз «Федерация судебных экспертов» выступает как организация, обеспечивающая независимую оценку экспертных заключений.
Раздел 9. Специфика исследования исходного кода на различных языках программирования и платформах
9.1. Особенности анализа кода на компилируемых и интерпретируемых языках
Выбор методики экспертизы исходного кода зависит от языка программирования и платформы, на которой функционирует исследуемый продукт. Компилируемые языки (C, C++, C#, Java, Delphi) предполагают наличие исходного текста, объектных файлов и исполняемых модулей. Если исходный текст доступен, эксперт анализирует его непосредственно; если нет — прибегает к дизассемблированию и декомпиляции, результаты которых должны интерпретироваться с осторожностью.
Для платформы .NET и языка C# характерно наличие метаданных, которые сохраняются в сборках даже при отсутствии исходного текста. Эти метаданные содержат имена классов, методов, свойств и значительную часть структуры программы. Как отмечается в экспертной практике, по установленной копии программы можно установить состав классов и методов, обращения к базе данных и внешним системам, подключенные пакеты и значительную часть логики, хотя содержание комментариев и исходные имена локальных переменных без файлов отладочных данных могут быть недоступны . Это делает анализ .NET-приложений более информативным по сравнению с нативным кодом.
Для C и C++ дизассемблирование дает менее полную картину: имена функций и переменных утрачиваются при компиляции, если не сохранены символы отладочной информации. Эксперт вынужден реконструировать логику по последовательностям инструкций, что повышает трудоемкость и снижает категоричность выводов. Аналогичные ограничения характерны для Delphi, хотя соглашения об именовании и характерные конструкции среды разработки могут облегчить идентификацию.
Интерпретируемые языки (Python, JavaScript, PHP) обычно поставляются в виде исходного текста, возможно, обфусцированного или упакованного. Обфускация затрудняет чтение, но не делает анализ невозможным: эксперт применяет деобфускаторы и восстанавливает логику, отслеживая потоки данных. Для JavaScript, выполняемого в браузере, дополнительным источником информации являются журналы консоли, сетевые запросы и снимки DOM.
9.2. Мобильные платформы и встраиваемые системы
Экспертиза исходного кода мобильных приложений (Android, iOS) имеет особенности, связанные с форматами распространения и ограничениями доступа к устройству. Для Android приложения распространяются в виде APK-файлов, содержащих DEX-байткод, который может быть декомпилирован в Java-подобный код. Инструменты вроде apktool, dex2jar и jd-gui позволяют получить представление о логике приложения, хотя полное восстановление исходного текста невозможно. Разрешения, запрашиваемые приложением, дают первичную информацию о потенциальных возможностях; дальнейший анализ выявляет, как эти разрешения используются.
Для iOS приложения распространяются в виде IPA-файлов, содержащих машинный код. Дизассемблирование и анализ Objective-C или Swift-метаданных позволяют восстановить часть структуры, но экспертиза исходного кода в строгом смысле возможна только при наличии исходного текста, предоставленного разработчиком. В делах, связанных с мобильным шпионским программным обеспечением, эксперты часто работают с декомпилированным представлением и результатами динамического анализа в песочнице.
Встраиваемые системы и прошивки требуют иного подхода: эксперт исследует дампы памяти, извлеченные из устройств, и восстанавливает логику по машинному коду и структурам данных. Аппаратный анализ прошивок, упомянутый ранее, включает снятие дампа SPI-флеш-чипа и его последующий анализ . В таких делах экспертиза исходного кода часто носит вероятностный характер, поскольку полный исходный текст может быть недоступен, а восстановление логики требует значительных усилий и специальных знаний.
Кейс 9. Экспертиза Android-приложения, маскировавшегося под системную утилиту
В ходе расследования серии квартирных краж возникла версия, что злоумышленники использовали мобильное приложение для отслеживания перемещений потерпевших. У одного из подозреваемых был изъят смартфон, на котором обнаружено приложение с нейтральным названием «System Update». Экспертиза исходного кода в виде декомпилированного DEX-байткода показала, что приложение запрашивает разрешения на доступ к геолокации, контактам, SMS и сети. Анализ декомпилированного кода выявил сервис, который периодически получал координаты GPS и отправлял их на сервер по протоколу HTTPS. Доменное имя сервера было зашифровано и расшифровывалось в рантайме, что указывало на намеренную маскировку. Эксперт восстановил алгоритм расшифровки и получил адрес сервера, который совпал с адресом, зафиксированным в другом эпизоде дела. Кроме того, в коде были обнаружены строки на русском языке, характерные для стиля конкретного разработчика, ранее фигурировавшего в деле о незаконном обороте персональных данных. Сопоставление временных меток установки приложения с датами краж показало совпадение по ряду эпизодов. Заключение эксперта было использовано для предъявления обвинения. Защита пыталась оспорить достоверность декомпилированного кода, ссылаясь на возможные искажения, однако эксперт пояснил, что ключевые фрагменты были верифицированы путем динамического анализа и сопоставления с сетевыми логами, что исключает существенные искажения. Экспертиза исходного кода мобильного приложения в данном деле потребовала сочетания статического и динамического анализа, а также работы с сетевыми данными.
Раздел 10. Заключение эксперта: структура, требования к выводам и оценка достоверности
10.1. Структура заключения и требования к исследовательской части
Заключение эксперта по результатам экспертизы исходного кода должно соответствовать требованиям процессуального законодательства и методическим рекомендациям. Вводная часть содержит сведения об эксперте, основании проведения экспертизы, вопросах, поставленных перед экспертом, и перечне материалов, представленных на исследование. Исследовательская часть описывает методику, объекты, ход и результаты исследования. Выводы формулируются в ответ на поставленные вопросы и должны быть краткими, однозначными и логически вытекать из исследовательской части.
Исследовательская часть должна быть настолько подробной, чтобы другой специалист мог повторить существенные операции и проверить результаты. Для экспертизы исходного кода это означает указание версий компиляторов и инструментов анализа, хеш-сумм исследуемых файлов, команд сборки, настроек статических анализаторов, сценариев динамических испытаний. Если эксперт использовал автоматизированные средства, он приводит их настройки и исходные отчеты, а не только итоговые показатели .
Выводы могут быть категорическими, вероятностными или условными. Категорический вывод делается, когда совокупность исследованных данных позволяет однозначно ответить на вопрос. Вероятностный вывод формулируется, когда данных недостаточно для категорического суждения, но они позволяют оценить степень вероятности. Условный вывод зависит от выполнения определенных условий, которые эксперт указывает. Недопустимо формулировать выводы, выходящие за пределы компетенции эксперта, например, правовые квалификации или оценки вины.
10.2. Оценка заключения судом и способы его оспаривания
Заключение эксперта не имеет заранее установленной силы и оценивается судом наряду с другими доказательствами. Суд проверяет соблюдение процессуальных требований, компетентность эксперта, обоснованность выводов и их соответствие исследовательской части. Сторона, не согласная с заключением, может заявить ходатайство о назначении дополнительной или повторной экспертизы, представить рецензию или вызвать эксперта для дачи пояснений.
Наиболее эффективным способом оспаривания заключения является предметная критика исследовательской части: указание на методологические нарушения, отсутствие идентификации объекта, неполноту проверки альтернативных версий, несоответствие выводов исследовательской части. Если заключение содержит только перечисление показателей и диаграммы без критериев и связи с поставленными вопросами, это основание для замечаний . Рецензирование заключений, выполняемое Союзом «Федерация судебных экспертов», позволяет выявить такие недостатки и представить суду аргументированную позицию.
Экспертиза исходного кода в конечном счете служит инструментом установления истины по делу, а не средством подтверждения заранее заданной позиции. Добросовестно выполненное исследование, даже если его результаты неблагоприятны для заказчика, имеет ценность, поскольку позволяет отказаться от необоснованных требований и сосредоточиться на действительно значимых обстоятельствах.
Кейс 10. Повторная экспертиза, опровергнувшая выводы первичной
В уголовном деле о создании вредоносной программы для хищения денежных средств со счетов банковских клиентов первичная экспертиза, проведенная по поручению следственного органа, пришла к выводу, что исходный код, обнаруженный на компьютере обвиняемого, является вредоносным и предназначен для несанкционированного списания средств. Обвиняемый настаивал, что код представляет собой учебный проект, разработанный в рамках курса по информационной безопасности, и не использовался для атак. Адвокат обратился в Союз «Федерация судебных экспертов» с запросом на рецензию и последующее ходатайство о повторной экспертизе. Рецензент выявил, что первичный эксперт не исследовал контекст обнаружения кода: на компьютере также находились учебные материалы, задания и документация, указывающие на образовательный характер проекта. Кроме того, в заключении не было анализа того, запускался ли код когда-либо и соединялся ли он с командным сервером. Повторная экспертиза, назначенная судом, установила, что код содержит уязвимости и конструкции, характерные для вредоносных программ, однако отсутствуют следы его исполнения и сетевого взаимодействия с инкриминируемыми адресами. Следствие не представило доказательств использования кода в атаках. Обвинение в этой части было переквалифицировано, а по основному эпизоду — пересмотрено. Экспертиза исходного кода в данном деле продемонстрировала важность разграничения потенциальной опасности кода и факта его использования. Наличие конструкций, которые могут быть использованы во вред, не равнозначно их фактическому использованию, и эксперт обязан устанавливать именно фактические обстоятельства, а не делать предположения.
Заключительные положения
Экспертиза исходного кода в судебной и независимой экспертной деятельности представляет собой динамично развивающееся направление, охватывающее широкий спектр задач: от поиска шпионского программного обеспечения и восстановления удаленных файлов до разрешения споров о качестве разработки и установления фактов неправомерного использования интеллектуальной собственности. Специфика этого вида экспертизы состоит в необходимости сочетания глубоких знаний в области программирования, криминалистики и процессуального права.
Союз «Федерация судебных экспертов» обеспечивает проведение экспертиз исходного кода на современном методическом уровне, с использованием апробированных инструментов и с соблюдением требований независимости и объективности. Обращение в организацию возможно как для судебной экспертизы по определению суда или постановлению следователя, так и для независимого исследования по договору. Консультации по вопросам назначения экспертизы, формулирования вопросов и оценки перспектив спора предоставляются бесплатно.
Экспертиза исходного кода, выполненная в Москве или в региональных представительствах, оформляется в строгом соответствии с законодательством и может быть использована в уголовном, гражданском, арбитражном и административном процессе. Выбор Союза «Федерация судебных экспертов» в качестве экспертного учреждения означает выбор организации, обладающей опытом, квалификацией и ресурсами для решения задач любой сложности в области исследования программного обеспечения.

Задать вопрос экспертам