Защита исходного кода от краж стала горячей темой в 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. Тут защита исходного кода становится «приятным бонусом». Этот стандарт включает в себя очень важный аспект инвентаризации информационных активов. То есть компания понимает, где находятся, как долго хранятся и кем обрабатываются информационные активы. В них входит исходный код.
Способы кражи кода и защиты:
По словам Senior IT/Privacy Lawyer в Legal IT Group Катерины Дубас, защитить код авторским правом в Украине можно. Вот, что она рассказала Highload (прямая речь).
Senior IT/Privacy Lawyer в Legal IT Group Катерина Дубас
В Украине есть Гражданский кодекс, закон «Об авторских и смежных правах» и много подзаконных актов. В законе есть статья 18, которая прямо указывает: компьютерные программы охраняются как литературные произведения вне зависимости от их формы или способа выражения.
Кроме законов, Украина обязуется соблюдать международные договоры, на участие в которых дала согласие. Так, статья 2 Бернской конвенции обязует страны (в том числе Украину) охранять авторские права на литературные произведения. Договор ВОИС по авторскому праву предлагает дополнительный международный консенсус касаемо охраны компьютерных программ как литературных произведений.
Иногда, если ПО является частью какого-то технического решения, оно может быть частью изобретения или полезной модели. Но это уже право промышленной собственности. Источником права в этом случае выступает другой закон, который даёт другие преимущества при защите.
Правовая охрана распространяется на форму выражения, а не на идеи, процессы, методы функционирования или математические концепции как таковые. Проанализируйте код на соответствие критериям из постановления Пленума ВХСУ 2012 года № 12. К примеру, убедитесь, что ПО — результат творческого труда. Наличие творческого труда в программе устанавливает, как правило, судебная экспертиза, хотя в некоторых случаях суд сам принимает решение — разумеется, если у суда есть соответствующие знания.
Защита часто сводится к двум путям:
Юрист также может подсказать дополнительные способы собрать доказательства: зарегистрировать авторское право (в Украине и некоторых других странах это возможно), разместить копию в частном репозитории, подписывать с программистом NDA/NCA (если возможно), обратиться к маркетплейсу (по DMCA).
В большинстве сценариев все сводится к нескольким видам ответственности:
При этом одна ответственность не исключает и другую.
Прокси (proxy), или прокси-сервер — это программа-посредник, которая обеспечивает соединение между пользователем и интернет-ресурсом. Принцип…
Согласитесь, было бы неплохо соединить в одно сайт и приложение для смартфона. Если вы еще…
Повсеместное распространение смартфонов привело к огромному спросу на мобильные игры и приложения. Миллиарды пользователей гаджетов…
В перечне популярных чат-ботов с искусственным интеллектом Google Bard (Gemini) еще не пользуется такой популярностью…
Скрипт (англ. — сценарий), — это небольшая программа, как правило, для веб-интерфейса, выполняющая определенную задачу.…
Дедлайн (от англ. deadline — «крайний срок») — это конечная дата стачи проекта или задачи…