Реверс-инжиниринг для исследования уязвимостей: что законно, а что нет
Это одна из самых значимых серых зон в этой области, и относиться к ней небрежно — реальный риск, а не просто формальность.
Что в целом явно нормально
Тестирование вашего собственного софта, или софта, на тестирование которого у вас есть явная письменная авторизация, — безопасный вариант по умолчанию. Всё становится значимо более рискованным за пределами этой границы.
- Ваш собственный код или системы — ничьи чужие права не затрагиваются.
- Авторизованный пентест или оценка безопасности с подписанным соглашением об области действия.
- Программа bug bounty, строго в рамках её определённой области действия — большинство крупных программ (через платформы вроде HackerOne или Bugcrowd) публикуют точные правила о том, что входит и не входит в область действия, и следование этим правилам — то, что предоставляет правовую защитную гавань.
Что в целом явно не нормально
- Реверс-инжиниринг коммерческого софта конкретно для обхода лицензирования, DRM или платного доступа.
- Тестирование производственных систем или софта, которым вы не владеете и на тестирование которого не имеете авторизации, даже «просто посмотреть».
- Продолжение зондирования системы после обнаружения уязвимости, сверх того, что нужно для демонстрации и сообщения о ней (это может перейти от исследования к неавторизованному доступу).
- Публичное раскрытие уязвимости до предоставления вендору разумного времени на исправление, где это нарушает условия раскрытия применимой программы.
Серые зоны, о которые люди спотыкаются
- Лицензионные соглашения, полностью запрещающие реверс-инжиниринг — некоторые юрисдикции и контексты разрешают реверс-инжиниринг для совместимости или исследования безопасности несмотря на такие пункты (это значительно варьируется по стране и контексту); другие нет. Это подлинно зависит от юрисдикции и стоит проверить, а не предполагать в ту или иную сторону.
- Обнаружение уязвимости за пределами заявленной области действия программы во время тестирования внутри неё — сообщите об этом ответственно, но понимайте, что у вас может не быть той же правовой защиты, которую предоставляло тестирование в рамках области действия.
- Тестирование системы, к которой вы когда-то были авторизованы, но больше нет (например, системы бывшего работодателя) — истёкшая авторизация не переносится вперёд.
Практический чек-лист перед началом любого исследования уязвимостей
- Есть ли у вас явная, текущая авторизация для этой конкретной цели?
- Если это программа bug bounty, находится ли то, что вы собираетесь делать, в её опубликованной области действия?
- Есть ли у вас план ответственного раскрытия, если вы что-то найдёте?
- Готовы ли вы остановиться на «найдено и продемонстрировано», а не продолжать исследовать дальнейший доступ?
Ничто из этого не является юридической консультацией для вашей конкретной ситуации — законы значительно варьируются по юрисдикции, и детали важны. Когда вы искренне не уверены, авторизована ли цель или деятельность, более безопасный вариант по умолчанию — не продолжать, пока вы это не проясните.
Частые вопросы
Законно ли реверс-инжинирить софт для поиска багов безопасности?
Это сильно зависит от юрисдикции, условий лицензии софта, и наличия у вас явной авторизации (например, определённой области действия программы bug bounty). Нет единого глобального ответа — проверьте конкретные условия и закон, применимые к вашей ситуации, прежде чем начинать.
Автоматически ли программа bug bounty делает реверс-инжиниринг законным?
Она авторизует деятельность в конкретно определённой области действия этой программы — тестирование за пределами заявленной области, или против систем/версий, не покрытых ею, автоматически не защищено просто потому, что компания в целом ведёт программу bug bounty.
Что такое «ответственное раскрытие» и почему это важно юридически и этически?
Это практика приватного сообщения о найденной уязвимости затронутому вендору и предоставления ему разумного времени на исправление до любого публичного раскрытия — это одновременно этическая норма в исследовании безопасности и, во многих условиях bug bounty, условие предлагаемой правовой защитной гавани.