Прочитав
топик о подозрительности реализации протокола Jabber в приложении Mail.ru Агент, а также комментарии
Swappp и
naum о присутствующих в модуле
интересных строках, я решил проверить, что же там внутри.
Потратив пол часа на поиск утилит и закачку бинарников Mail.ru Агента, я получил листинг со списком некоторых строк, присутствующих внутри файла JABBER_0X2001FACA.DLL. Для удобства читателя, незнакомого с кодом jabber модуля из Miranda IM, приведу сопоставления найденых строк с нашими исходниками:
| XML processing (logging) |
| 00032C7C |
TAG_MAX_LEN too small, ignore current tag |
jabber_xml.cpp (192) |
| 00032CA8 |
ATTR_MAX_LEN too small, ignore current tag |
jabber_xml.cpp (214) |
| 00032CE0 |
XML: skip <?xml> tag |
jabber_xml.cpp (343) |
| 00032CF8 |
XML: Closing </%s> without opening tag |
jabber_xml.cpp (419) |
| Base stanza processing (logging) |
| 0002C464 |
Invalid top-level tag ( only <message/> <presence/> and <iq/> allowed ) |
jabber_thread.cpp (889) |
| 0002C4AC |
Invalid top-level tag ( only <iq/> allowed ) |
jabber_thread.cpp (895) |
| Login process (logging) |
| 0002C6A8 |
Requesting TLS |
jabber_thread.cpp (667) |
| 0002C7D8 |
after successful sasl |
jabber_thread.cpp (831) |
| 0002C8AC |
<iq/> iqIdGetBookmarks |
jabber_iqid.cpp (1456) |
| 0002C968 |
<iq/> iqIdGetVcard |
jabber_iqid.cpp (731) |
| 0002CA8C |
<iq/> iqIdGetRoster |
jabber_iqid.cpp (351) |
| 0002E998 |
Never publish the hash below |
jabber_secur.cpp (191) |
| Login process (data) |
| 0002E900 |
username=\"%s\", realm=\"%s\", nonce=\"%s\", cnonce=\"%s\", nc=%08d, qop=auth, digest-uri=\"xmpp/%s\", charset=utf-8, response=%08x%08x%08x%08x |
jabber_secur.cpp (156) |
Как мы можем видеть, почти все строки (кроме последней) являются отладочной информацией и входят либо в функции для работы с XML, либо в процесс подключения к XMPP-сети. Могу заметить, что остальные части джаббера сильно завязаны на интерфейс windows и/или архитектуру самой миранды.
Также, может быть интересен факт использования в XML потоке одинарных кавычек ['], который имел место и в ветке 0.7 jabber модуля из миранды (в ветке 0.8 используются двойные кавычки ["], и они
субъективно более популярны).
Я не являюсь знатоком внутренностей бинарных модулей для SymbianOS, но в списке строк наткнулся также на имена классов,
использующихся в нашем коде для поддержки разных методов логина. Судя по наличию аналогичных строк с «классообразным» содержимым и числом в начале, такие строки генерирутся для большинства классов. Обращаю внимание на непоследовательность использования регистра букв в аббревиатурах MD5 и NTLM.
| Class names |
| 0002EA18 |
11TJabberAuth |
| 0002EA30 |
10TPlainAuth |
| 0002EA4C |
8TMD5Auth |
| 0002EA64 |
9TNtlmAuth |
Кстати, интересно, насколько уместна NTLM авторизация на мобильном телефоне :) (
Update: говорят уместна и при желании хэш можно вычислить вручную, ну да не в этом суть)
В контексте увиденного интересно звучит
комментарий по поводу «да что же можно взять из Миранды»
Мне вот очень интересно, что именно в реализации xmpp было бы полезно «украсть» из миранды? Может последовательность соединения? Да вроде она описана в открытых источниках притом подробно. Может xml-парсер? А зачем он нам, он у нас уже был и использовался. Может структуру плагинов? зачем она нам — у нас своя.
Тут упомянуто именно два находящихся под вопросом компонента протокола и всем известная модульная архитектура Miranda IM. Об остальных частях протокола — ни слова :)
Я не знаю, есть ли наш код внутри Мобильного Агента, или его там нету — однозначно могут сказать лишь авторы самого Агента. Приведенные же факты были собраны исключительно из открытых источников для общего ознакомления с ситуацией. Мои познания в анализе бинарных модулей SymbianOS Довольно скудны, и было бы интересно услышать комментарии
Swappp и
naum , особенно в свете
этой реплики.
P.S. На данный момент с сайта Mail.Ru удалены бинарники бета-версии Агента, также их удаляют с других сайтов. У пользователей, установивших версию 1.15 на телефон происходит автоматическое «обновление» до более старой версии 1.11.
комментарии (96)
Какбэ подозреваете mail.ru в преднамеренных «закладках» в клиенте? :-D
И я не подозреваю, просто говорю, что спровоцировать краш своего приложения используюя свой сервер несложно :)
Ктож спорит, что баги есть — баги были всегда. Просто я никогда не придавал значения багам в стиле «можно улюлюкнуть клиента при соединении с злонамеренным сервером», а вот оно как интересно на деле оказывается.
Поню краши только так сыпались
А вот вариант, что какой-то программист сейчас получает конкретных бамбулей, исключать нельзя.
Так что поздновато валить на программиста…
Руководство что, в код смотрит? Первым делом отнекиваются, а потом разбираются во всем и выписывают кому попало :)
Если вы используете пиратскую Windows для работы, то вы тоже получаете деньги за то, чего не писали. Так что я совершенно согласен с Goodkat, и поэтому использую ОС Linux.
и выводы странные — "и поэтому использую ОС Linux. " :)
под линуксом тоже можно слушать пиратскую музыку и смотреть пиратские фильмы
И что, Вы считаете это оправданием нарушения лицензий компаниями?
А «плюющих» пользователей довольно успешно таскают по судам, выписывают нехилые штрафы, и даже сроки дают (в основном условно, но всё же). JFYI.
пользователей-то пока за использование не таскают по судам. в основном за распространение.
кстати, кто-то видел официальные пресс-релизы мейла по этому поводу???
РБК уже подхватило — cnews.ru/news/top/index.shtml?2009/02/05/336997
Так что если свалят — то на отдел мобильной разработки вместе взятый…
Со всеми вытекающими…
Цирк на конной тяге.
Кстати, инсталлятор агента подписан цифровой подписью от Symbian, так что доказать, что его поменяли на стороне (к примеру, недобросовестные кодеры из миранда-тим) будет довольно проблематично :)
На мой взгляд возможны следующие действия со стороны mail.ru:
— Свалить всю вину на какого-нибудь разработчика и:
— Вообще убрать поддержку jabber
— Честно переписать спорный код
— Убрать или изменить соответствующие константы, что на первый взгляд будет скрывать часть доказательств, но в этом случае основанием для подозрения будет результат сравнения с дампом беты.
— Открыть свой продукт под GPL
— Продолжать стоять на своем, надеясь что до суда дело не дойдет. Но в этом случае они как минимум испортят себе репутацию.
Конечно плохо, что это было обнаружено так быстро, еще до того, как они выпустили финальную версию на официальном сайте. С другой стороны их представитель сделал тут официальное заявление и сам дал ссылку на соответствующую новость в блоге разработчика.
Лучшем вариантом развития событий будет конечно выпуск всего продукта под GPL. Вообще от этого mail.ru ничего не потеряет, а скорее наоборот, восстановит репутацию среди достаточно активной части сообщества, а так же возможно обзаведется новыми бесплатными разработчиками :) Тем более их продукт бесплатный, не содержит рекламы, а фактически сам является рекламой других сервисов mail.ru.
Убрав поддержку или переписав код, все равно как-то придется договариваться с авторами Miranda.
Бинарник с нарушениями есть много у кого (включая пострадавшую сторону).
P.S.: да, я уверен, что заимствование имело место быть.
NTML реализует респонс-ответ механизм для аутентификация, в которой клиент способен идентифицировать себя не посылая пароль на сервер.
Он состоит из 3 запросов, которые обобщены как: Тип1 (согласование), Тип2 (вызов) и Тип3 (аутентификация), в основном это работает так:
1. Клиент посылает серверу запрос типа 1, который главным образом содержит список возможностей, поддерживаемых клиентом и запрашиваемых на сервере.
2. Сервер даёт ответ типа 2 который содержит список возможностей поддерживаемых и согласованных им.
ну и так далее…
оригинал здесь.
NTLM (NT LAN Manager) создан Майкрософтом для работы в винде, и использует оно данные учётной записи windows для идентификации где-либо… Мобbльный телефон с симбианом в эту картину ну никак не вяжется…
А тем более это совершенно не важно любителям пофлудить. :-)
Вполне возможно, что будет фраза «модифицированный клиент» и т.д., «сравните хэши, мы релизили другую версию».
Надеюсь что в ближайшее время появится аргументирование на всех уровнях. Главное максимально официально зафиксировать факт выхода бета-версии MRA.
С уважением.
А цифровой сертификат от симбиана, которым подписан дистрибутив (и выданный именно для мейл.ру) тут не поможет?
Поправили баги так, что аж размер бинарника уменьшился… Видно большая работа, а версия сменилась лишь на единицу… ;)
Может просто не в курсе, что юридически значимыми (без дополнительных соглашений) в России являются подписи, соответствующие Закону об ЭЦП, а согласно этому закону софт должны быть проверен, а его разработчик и УЦ лицензирован «уполномоченным органом», которым в данный момент является ФСБ (раньше было ФАПСИ).
Насчет «нотариально» тоже, ссылки на гуглокэш (которые к моменту судебного разбирательства вполне могут оказать битыми) к делу не пришьешь, но уже отработана процедура по фиксации «виртуальных» вещественных доказательств. если, например, ваше авторское право нарушили выкладыванием вашего контента на «левом» сайте без вашего разрешения, то скорее бегите к нотариусу и просите его распечатать ваш контент на этом сайте и удостоверить, что это распечатка была сделана такого-то числа с такого-то урла — вот вам «вещдок», который суду будет очень сложно не принимать во внимание. особенно если вы сумеете доказать свое авторство на этот контент, скажем аналогичной нотариально заверенной копией своего сайта.
Не, LZMA SDK — public domain, общественное достояние, можно использовать как угодно. Так что тут вряд ли они могли что-то нарушить.