Приветствую хабрчане!
У меня на работе есть несколько стареньких маршрутизаторов D-Link DI-524UP H/W Ver.: A1, выпускавшихся в 2005-2006 годах и доставшихся мне по наследству от прошлого админа. Понятно, что эти устройства отслужили свое, устарели как морально, так и физически и давно лежат на полке, но меня подкупило то, что у этой модели есть USB порт, и в основу прошивки положена операционная система Linux.
К сожалению, разработчики стоковой прошивки довольно сильно ограничили возможности для работы с USB портом: DI-524UP не работает с USB модемами, флешками и внешними накопителями HDD. Альтернативные, более функциональные и современные прошивки, такие как OpenWRT или DD-WRT существуют для устройств на таком же процессоре как и у DI-524UP — Realtek RTL8650B, но не поддерживают чип, отвечающий за работу Wi-Fi RTL8185L. Перспектива отказаться от беспроводного интернета меня не устраивает, а разбираться с добавлением поддержки RTL8185L и полной компиляцией DD-WRT или OpenWRT под мое железо показалась достаточно сложной задачей.
Я подумал, что бы было неплохо попробовать немного переработать стоковую прошивку — добавить функциональности, скомпилировать и установить отдельные пакеты с программным обеспечением, на сколько хватит памяти в устройстве, пересобрать ядро и включить необходимую поддержку железа для USB порта.
В конце 2013 года в некоторых моделях маршрутизаторов D-link обнаружена уязвимость безопасности — программная закладка, позволяющая злоумышленникам получить контроль над устройством. Подробности обсуждались уже ранее на хабре. Естественным образом, в более ранней версии v.1.05 прошивки от 15.11.2007 и ее исходных кодах от 25.03.2008 и более ранних эта закладка присутствует.
После поднятого шума в конце 2013 года, компания D-Link выпустила обновления прошивки для DI-524UP Ax версия v1.08b1 и v1.08b2 в которых закрыла данную уязвимость. Исходные коды этих прошивок производитель не выложил в открытый доступ.
Т.к. в основу прошивки устройства входит ядро Linux и свободное программное обеспечение, то по условиям лицензии GPL, разработчик должен по требованию других лиц предоставлять свои исходные коды. Я запросил исходные коды прошивки v1.08 на форуме производителя. Через некоторое время появились ссылки на исходные коды прошивки v1.08b2.
Скачав и распаковав архивы, я решил пофайлово сравнить исходные коды версий v1.05 и v.1.08. Полученный результат несколько меня озадачил. Найденные отличия приведены ниже под спойлером:
Таким образом, товарищи разработчики «схитрили» и просто переписали в исходных кодах прошивки номер версии с v1.05 (?1.01) на v.1.08b2 и пытаются выдать их за последнюю версию. Об этих «манипуляциях» я задал вопрос в техническую поддержку компании D-link.
UPD (27.12.2014) С сайта убраны «исходные коды версии v1.05», подал запрос на восстановление в общем доступе исходных кодов именно этой версии — v1.05.
UPD2 (19.01.2014) Похоже под v1.05 была выложена v1.01, поэтому её убрали с сайта, кроме того, если посмотреть под спойлером выше:
в коде версии не соответствуют заявленным.
Продолжение следует...
У меня на работе есть несколько стареньких маршрутизаторов D-Link DI-524UP H/W Ver.: A1, выпускавшихся в 2005-2006 годах и доставшихся мне по наследству от прошлого админа. Понятно, что эти устройства отслужили свое, устарели как морально, так и физически и давно лежат на полке, но меня подкупило то, что у этой модели есть USB порт, и в основу прошивки положена операционная система Linux.
К сожалению, разработчики стоковой прошивки довольно сильно ограничили возможности для работы с USB портом: DI-524UP не работает с USB модемами, флешками и внешними накопителями HDD. Альтернативные, более функциональные и современные прошивки, такие как OpenWRT или DD-WRT существуют для устройств на таком же процессоре как и у DI-524UP — Realtek RTL8650B, но не поддерживают чип, отвечающий за работу Wi-Fi RTL8185L. Перспектива отказаться от беспроводного интернета меня не устраивает, а разбираться с добавлением поддержки RTL8185L и полной компиляцией DD-WRT или OpenWRT под мое железо показалась достаточно сложной задачей.
Я подумал, что бы было неплохо попробовать немного переработать стоковую прошивку — добавить функциональности, скомпилировать и установить отдельные пакеты с программным обеспечением, на сколько хватит памяти в устройстве, пересобрать ядро и включить необходимую поддержку железа для USB порта.
В конце 2013 года в некоторых моделях маршрутизаторов D-link обнаружена уязвимость безопасности — программная закладка, позволяющая злоумышленникам получить контроль над устройством. Подробности обсуждались уже ранее на хабре. Естественным образом, в более ранней версии v.1.05 прошивки от 15.11.2007 и ее исходных кодах от 25.03.2008 и более ранних эта закладка присутствует.
После поднятого шума в конце 2013 года, компания D-Link выпустила обновления прошивки для DI-524UP Ax версия v1.08b1 и v1.08b2 в которых закрыла данную уязвимость. Исходные коды этих прошивок производитель не выложил в открытый доступ.
Т.к. в основу прошивки устройства входит ядро Linux и свободное программное обеспечение, то по условиям лицензии GPL, разработчик должен по требованию других лиц предоставлять свои исходные коды. Я запросил исходные коды прошивки v1.08 на форуме производителя. Через некоторое время появились ссылки на исходные коды прошивки v1.08b2.
Скачав и распаковав архивы, я решил пофайлово сравнить исходные коды версий v1.05 и v.1.08. Полученный результат несколько меня озадачил. Найденные отличия приведены ниже под спойлером:
Отличия содержимого архивов исходных кодов прошивок версий v1.05 и v1.08b2
diff -r ./1.05/GPL_Di524up/ ./1.08/GPL_Di524up/
Только в ./1.08/GPL_Di524up/: D-Link
Только в ./1.08/GPL_Di524up/: GPL
Только в ./1.08/GPL_Di524up/: Offer
Только в ./1.08/GPL_Di524up/user/goahead-2.1.4: original
diff -r ./1.05/GPL_Di524up/vendors/Realtek/Di524up/Product.mk ./1.08/GPL_Di524up/vendors/Realtek/Di524up/Product.mk
1,2c1,2
< VERSIONPKG = v1.01
< ALPHA_VERSION = v4.0.0b10
---
> VERSIONPKG = v1.08
> ALPHA_VERSION = v5.0.1b02
Только в ./1.08/GPL_Di524up/: Written
mips-toolchain:/opt/_compare# ls -la ./1.08/GPL_Di524up/D-Link ./1.08/GPL_Di524up/GPL ./1.08/GPL_Di524up/Offer ./1.08/GPL_Di524up/user/goahead-2.1.4/original ./1.08/GPL_Di524up/Written
-rw-r--r-- 1 root root 0 2014-08-07 12:11 ./1.08/GPL_Di524up/D-Link
-rw-r--r-- 1 root root 0 2014-08-07 12:11 ./1.08/GPL_Di524up/GPL
-rw-r--r-- 1 root root 0 2014-08-07 12:11 ./1.08/GPL_Di524up/Offer
-rw-r--r-- 1 root root 0 2014-08-07 12:11 ./1.08/GPL_Di524up/user/goahead-2.1.4/original
-rw-r--r-- 1 root root 0 2014-08-07 12:11 ./1.08/GPL_Di524up/Written
Таким образом, товарищи разработчики «схитрили» и просто переписали в исходных кодах прошивки номер версии с v1.05 (?1.01) на v.1.08b2 и пытаются выдать их за последнюю версию. Об этих «манипуляциях» я задал вопрос в техническую поддержку компании D-link.
UPD (27.12.2014) С сайта убраны «исходные коды версии v1.05», подал запрос на восстановление в общем доступе исходных кодов именно этой версии — v1.05.
UPD2 (19.01.2014) Похоже под v1.05 была выложена v1.01, поэтому её убрали с сайта, кроме того, если посмотреть под спойлером выше:
< VERSIONPKG = v1.01
< ALPHA_VERSION = v4.0.0b10
в коде версии не соответствуют заявленным.
Продолжение следует...
Ссылки
Описание устройства на официальном сайте D-Link.
Описание устройства на WikiDevi.
Различные FTP сервера с прошивками к устройству
ftp://ftp.dlink.eu
ftp://ftp.dlink.ru
ftp://ftp2.dlink.com
О лицензии GPL
Официальные исходные коды для D-link DI-524UP
Описание уязвимости.
Официальная рекомендация по устранению уязвимости обновлением прошивки до версии v1.08b2.
FTP где я собрал подборку прошивок к устройству
Мои сообщения на форуме D-link
часть 1 часть 2.
Описание устройства на WikiDevi.
Различные FTP сервера с прошивками к устройству
ftp://ftp.dlink.eu
ftp://ftp.dlink.ru
ftp://ftp2.dlink.com
О лицензии GPL
Официальные исходные коды для D-link DI-524UP
Описание уязвимости.
Официальная рекомендация по устранению уязвимости обновлением прошивки до версии v1.08b2.
FTP где я собрал подборку прошивок к устройству
Мои сообщения на форуме D-link
часть 1 часть 2.