Обнаружение фактов нарушения лицензии GPL в аппаратных устройствах

Автор turbo, 20 Октября 2008, 18:06

« предыдущая тема - следующая тема »

0 Пользователей и 1 Гость просматривают эту тему.

turbo

Armijn Hemel из компании Loohuis Consulting представил 26 страничное руководство "The GPL Compliance Engineering Guide" (PDF, 500Кб), в котором обобщил опыт участников ресурса gpl-violations.org по обнаружению GPL кода в бинарных прошивках различных аппаратных устройств.

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

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

Второй шаг - анализ бинарной прошивки и выявление наличия сигнатур, свойственных определенным открытым программам. Для выявления использования GPL-лицензированных загрузчиков производится оценка особенностей загрузки устройства. Оценив применяемые способы сжатия образа загружаемого ядра, можно выявить применение gzip, bzip2, LZMA и 7z. Далее можно определить тип файловой системы (часто используют squashfs, ext2fs, cramfs, romfs, jffs2) и примонтировать ее для исследования содержимого.

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

В случае проблем с получением прошивки, анализ производится через физический доступ к устройству через последовательный порт или JTAG-интерфейс, выводы для которых присутствуют на плате.
http://www.loohuis-consulting.nl/downloads...ance-manual.pdf
http://www.opennet.ru/opennews/art.shtml?num=18483