Рубріки: Мнение

«Такой и воровать никто не захочет»: сможет ли ужасный код защитить от кражи и какие есть способы получше

Анастасія Пономарьова

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

Запутанный код как фича

Solution architect Андрей Никишаев задался вопросом, может ли обфусцированный код служить инструментом защиты от кражи технологий:

«Может ли говнокод быть не багом, а фичей? Представьте: у вас украли код, и он божественный — любой за пять минут может в нем разобраться. И есть вариант два: код — полный ужас, и надо полгода, чтобы хоть что-то понять. У вас будет в запасе пара месяцев, прежде чем кто-то что-то сможет сделать».

Специалист также провел опрос среди пользователей LinkedIn: сторонники и противники этой теории разделились практически поровну.

Скриншот

Что думают айтишники

В комментариях под публикацией разработчики отметили, что многие компании на самом деле практикуют такой подход, используя плохой и запутанный код как средство защиты от краж. Его писать проще и быстрее, и не так обидно, если все же удастся его украсть. 

Скриншот
Скриншот
Скриншот

Другие жалуются, что с ним работать, мягко говоря, проблематично, даже если ты не вор, а новый специалист и получил доступ к коду легально.

Скриншот

Однако отдельные айтишники не считают плохой код проблемой — понять его логику якобы просто.

Скриншот

Что говорят эксперты

На этот вопрос Highload ответил Head of Cyber Security в Ciklum Андрей Лысюк. Далее — прямая речь.


Head of Cyber Security в Ciklum Андрей Лысюк

Скрыть механизмы защиты и надеяться, что это не позволит злоумышленникам получить доступ к ресурсам системы — не лучший, а точнее, неправильный подход. Он называется Security by Obscurity. Его можно считать классическим примером того, как не нужно строить системы защиты. Недостатков у такого подхода несколько:

  • Механизм может быть не проверен широкой аудиторией, содержать какие-то методы обхода, которые неизвестны разработчику, но уже известны злоумышленникам.
  • Сам факт раскрытия механизма защиты можно рассматривать как крах системы защиты, поскольку быстро восстановить ее (например, сменой пароля или ключа шифрования) невозможно.

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

К тому же, есть автоматизированные деобфускаторы кода (например, для Java). Потому рассчитывать, что никто не найдет уязвимости в запутанном коде, не стоит. Это лишь немного замедлит процесс. Хотя, если преступник будет выбирать, код какой компании анализировать, то он вначале примется за более легкий, чтобы экономить свои ресурсы. 

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

Как можно украсть код разработчика?

Последнее время все чаще в СМИ появляются сообщения об утечках исходного кода. Например, недавно была большая утечка у разработчика CyberPunk 2077, польской CD Projekt, с той же проблемой в 2021 году столкнулись компании Twitch и Nissan. Утечки дают злоумышленникам возможность анализировать код на уязвимости. То есть использовать их себе на пользу или компаниям во вред, шантажировать бизнес публикацией исходных кодов.

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

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

Какие существуют инструменты защиты

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

Самый эффективный подход — внедрение комплексной системы защиты информации в организации. Например, по проверенному международному стандарту ISO 27001. Тут защита исходного кода становится «приятным бонусом». Этот стандарт включает в себя очень важный аспект инвентаризации информационных активов. То есть компания понимает, где находятся, как долго хранятся и кем обрабатываются информационные активы. В них входит исходный код. 

Способы кражи кода и защиты:

  • Зачастую исходный код находится в центральном репозитории (например, на GitLab или GitHub). Кроме того, он еще синхронизируется с рабочими станциями разработчиков. Доступ к центральному репозиторию защищен системами обнаружения атак и сложной многофакторной аутентификацией. Однако, на компьютерах разработчиков шифрования может и не быть. Тогда украсть исходный код можно, просто получив доступ к украденному компьютеру.
  • Социальная инженерия: например, приходит письмо разработчику о «суперакции», чтобы привлечь внимание и заразить его рабочую станцию троянским конем. Более опытные разработчики менее подвержены таким соблазнам, но злоумышленники как раз нацеливают свои силы на новичков или стажеров, которые имеют доступ к исходному коду. Потому нужно разграничивать доступ к исходному коду и давать доступ только к тем веткам и модулям, с которыми разработчик реально работает. Это известный принцип безопасности, называемый Least Privileges (наименьших привилегий).
  • Еще один механизм защиты от атак, связанных с социальной инженерией, тоже предлагается в рамках ISO 27001. Это регулярные сессии обучения для сотрудников относительно угроз и методов противодействия.
  • Для защиты от утечек кода по другим направлениям также используются, например, регулярные пересмотры прав доступа к системам, регулярное сканирование систем на уязвимости и их устранение, шифрование конфиденциальных данных.

Возможно ли защитить код авторским правом

По словам Senior IT/Privacy Lawyer в Legal IT Group Катерины Дубас, защитить код авторским правом в Украине можно. Вот, что она рассказала Highload (прямая речь).


Senior IT/Privacy Lawyer в Legal IT Group Катерина Дубас

В Украине есть Гражданский кодекс, закон «Об авторских и смежных правах» и много подзаконных актов. В законе есть статья 18, которая прямо указывает: компьютерные программы охраняются как литературные произведения вне зависимости от их формы или способа выражения.

Кроме законов, Украина обязуется соблюдать международные договоры, на участие в которых дала согласие. Так, статья 2 Бернской конвенции обязует страны (в том числе Украину) охранять авторские права на литературные произведения. Договор ВОИС по авторскому праву предлагает дополнительный международный консенсус касаемо охраны компьютерных программ как литературных произведений.

Иногда, если ПО является частью какого-то технического решения, оно может быть частью изобретения или полезной модели. Но это уже право промышленной собственности. Источником права в этом случае выступает другой закон, который даёт другие преимущества при защите.

Как оформить авторское право на код

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

Защита часто сводится к двум путям: 

  1. Обратиться к злоумышленнику с требованием немедленно прекратить нарушение (или купить лицензию, например);
  2. Обратиться в компетентный суд с требованием (например, прекратить нарушение и компенсировать ущерб).

Юрист также может подсказать дополнительные способы собрать доказательства: зарегистрировать авторское право (в Украине и некоторых других странах это возможно), разместить копию в частном репозитории, подписывать с программистом NDA/NCA (если возможно), обратиться к маркетплейсу (по DMCA).

Что будет за кражу чужого кода

В большинстве сценариев все сводится к нескольким видам ответственности:

  • дисциплинарной (при трудовых отношениях);
  • гражданской: компенсация ущерба, морального вреда, выплата лицензионных сборов, гонорара за разработку по договору;
  • уголовной: ст.176 УК, 216 УК, ст. 301 УК, от 361 до 363-1 УК или другие (к примеру, мошенничество).

 При этом одна ответственность не исключает и другую. 

Останні статті

Обучение Power BI – какие онлайн курсы аналитики выбрать

Сегодня мы поговорим о том, как выбрать лучшие курсы Power BI в Украине, особенно для…

13.01.2024

Work.ua назвал самые конкурентные вакансии в IТ за 2023 год

В 2023 году во всех крупнейших регионах конкуренция за вакансию выросла на 5–12%. Не исключением…

08.12.2023

Украинская IT-рекрутерка создала бесплатный трекер поиска работы

Unicorn Hunter/Talent Manager Лина Калиш создала бесплатный трекер поиска работы в Notion, систематизирующий все этапы…

07.12.2023

Mate academy отправит работников в 10-дневный оплачиваемый отпуск

Edtech-стартап Mate academy принял решение отправить своих работников в десятидневный отпуск – с 25 декабря…

07.12.2023

Переписки, фото, история браузера: киевский программист зарабатывал на шпионаже

Служба безопасности Украины задержала в Киеве 46-летнего программиста, который за деньги устанавливал шпионские программы и…

07.12.2023

Как вырасти до сеньйора? Девелопер создал популярную подборку на Github

IT-специалист Джордан Катлер создал и выложил на Github подборку разнообразных ресурсов, которые помогут достичь уровня…

07.12.2023