Пользователь
0,0
рейтинг
6 февраля 2009 в 13:18

Разработка → Интересные совпадения. Часть вторая.

Прочитав топик о подозрительности реализации протокола 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.
Victor Pavlychko @nullbie
карма
87,2
рейтинг 0,0
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Реклама

Самое читаемое Разработка

Комментарии (96)

  • +35
    Я думаю «обновление» до более старой версии запущено не случайно, как и удаление бинарников. Значит есть что скрывать, всё-таки.
    • +1
      могут сослаться (обоснованно) на наличие уязвимостей/багов в новой версии 1.15
      • +2
        Они вроде так и сделали. Причем говорят, что версия 1.15 начала стабильно крашить, но со своим сервером это несложно.
        • 0
          версия 1.15 начала стабильно крашить, но со своим сервером это несложно

          Какбэ подозреваете mail.ru в преднамеренных «закладках» в клиенте? :-D
          • +4
            Тю, да просто знать свои баги и удачно кривой пакет прислать.
            И я не подозреваю, просто говорю, что спровоцировать краш своего приложения используюя свой сервер несложно :)
            • 0
              AFAIR, у них протокол текстовый, т.е. там немного сложнее с кривыми пакетами.
              Ктож спорит, что баги есть — баги были всегда. Просто я никогда не придавал значения багам в стиле «можно улюлюкнуть клиента при соединении с злонамеренным сервером», а вот оно как интересно на деле оказывается.
              • 0
                Текст там рекомендуется передавать в RTF. Я читал спеки.
        • 0
          прям как неумелая сборка миранды :)
          Поню краши только так сыпались
      • +3
        Слишком много совпадений… вину их это конечно не доказывает, но это как минимум странно. Если бы мы говорили о гугле к примеру…
        • –1
          Ага, корпорация зла 100% что-то задумала, а вот «розовый» мэйл никада нам блондинкам плохого не сделает. :)
          • +6
            Что-то мне после «корпорация зла» вспомнилась Umbrella Corporation :)
    • +6
      Ну и тут не факт что сами Mail.ru в этом виноваты, с ихней стороны было бы крайне глупо так подставляться.
      А вот вариант, что какой-то программист сейчас получает конкретных бамбулей, исключать нельзя.
      • 0
        Они уже утверждали, что ничего такого не делали…
        Так что поздновато валить на программиста…
        • +2
          Ну, вы разве не знаете как это бывает в больших компаниях?
          Руководство что, в код смотрит? Первым делом отнекиваются, а потом разбираются во всем и выписывают кому попало :)
          • 0
            Ну тут уже по-моему далеко не один программист только «впрягся» в обсуждение независимости кода, так что уже не так просто будет…
          • 0
            Как минимум можно было ответить «Мы проведем проверку. Руководство не давало указаний разработчикам использовать код других проектов.». Но был получен ответ от пресс-атташе Mail.Ru, что код полностью их. Так же, насколько я понял, основной разработчик отписался в своем блоге (http://blogs.mail.ru/corp/nikiforov/1A3A43B5570D0DD.html) в не совсем корректной форме сообщение, где так же заявляет что все написали сами. Далее, в первом сообщении никто не обвинял mail.ru, было только высказано подозрение в том, что очень уж похоже поведение агента и миранды. Но это было расценено как обвинение.
  • +26
    Как всегда корпорации плюют на опен-сорц разработчиков и сообщество, пользуясь результатами их труда без какой-либо отдачи
    • +4
      Ну примерно как пользователи плюют на лицензии и правообладателей, пользуясь результатми их труда без оплаты :)
      • –1
        на костер таких.
        • +6
          воображение отчетливо рисует пол планеты в огне ))
          • +1
            Ну пол-планеты, не пол-планеты, а одну шестую точно спалят )))
            • –1
              Уже давно не одна шестая. Вы мне тут свои имперские замашки бросьте, время не то! :)
              • +1
                Envek имеет в виду Китай, что ты палишься? )))
          • 0
            Гм. Сначала подумал, что здесь пол — это не 1/2, а противоположность потолку. Спать пора…
      • +6
        В случае с данным анрушением всё даже намного интереснее — человек получает деньги за то, чего он не писал…
        • +1
          Какая разница?
          Если вы используете пиратскую Windows для работы, то вы тоже получаете деньги за то, чего не писали. Так что я совершенно согласен с Goodkat, и поэтому использую ОС Linux.
          • 0
            в чём согласен-то? :)
            и выводы странные — "и поэтому использую ОС Linux. " :)
            под линуксом тоже можно слушать пиратскую музыку и смотреть пиратские фильмы
      • 0
        >lНу примерно как пользователи плюют на лицензии и правообладателей, пользуясь результатми их труда без оплаты :)

        И что, Вы считаете это оправданием нарушения лицензий компаниями?

        А «плюющих» пользователей довольно успешно таскают по судам, выписывают нехилые штрафы, и даже сроки дают (в основном условно, но всё же). JFYI.
        • 0
          нет, не считаю. мне плевать :)

          пользователей-то пока за использование не таскают по судам. в основном за распространение.
  • 0
    после публикации на хабре заметок о миранде vs мейлру www.securitylab.ru/news/367764.php
    • 0
      Это копипаст с CNews, ссылка есть внизу старого топика
  • +1
    Но главное что после обсуждения этого вопроса на хабре товарищи из майл.ру «зачесались»…
  • +9
    а свалят все ведь на «недобросовестного программиста» в итоге… мол без ведома взял и использовал…
    кстати, кто-то видел официальные пресс-релизы мейла по этому поводу???
    РБК уже подхватило — cnews.ru/news/top/index.shtml?2009/02/05/336997
    • +4
      это еще раз подтверждает какая mail.ru хорошая компания!
    • +4
      Свалить уже просто так не получится, т.к. официальные представители Mail.Ru давали уже «официальные комментарии». При этом доказывая, что сами убедились в том, что факта использования кода Миранды нет и быть не могло…

      Так что если свалят — то на отдел мобильной разработки вместе взятый…
      Со всеми вытекающими…
    • +2
      А писали же, что, например, программистам из Microsoft запрещается читать исходные коды открытых приложений, дабы чего не взяли оттуда.
      • +1
        Судя по интерфейсу последних продуктов типа Office 2007, им теперь вообще запрещается смотреть на разработки конкурентов
    • +4
      «Стоит отметить, что в ICQ-протоколе в мобильных версиях Mail.Ru Агента есть функция «маскировки» под разные клиенты (это востребовано пользователями), так что наш инстант-мессенджер может часто «распознаваться» как другие программы. При чем здесь копирование кода — не очень понятно», — добавила Анна Артамонова» (Директор по маркетингу и PR Mail.Ru)

      Цирк на конной тяге.
      • 0
        то это ее коммент на первую часть интересных совпадений :-)
  • 0
    как раз концепция NTLM очень даже подходит для реализации отправления caps
    • +5
      Объясните мне, тёмному, как же она относится к client capabilities, которые нужны для идентификации списка поддерживаемых клиентом функций протокола? :)
      • +1
        промахнулся с местом ответа
      • +3
        ну прошу прощения :) я ошибался
      • +1
        А собственно почему нельзя аутентифицироваться посредством ntlm, если и сервер, и клиент поддерживают протокол? Неужели без windows его использовать запрещено?
  • +13
    Busted!!!
  • +5
    Если код миранды действительно используется в агенте, то это довольно просто доказать, модифицируя содержимое экзешника в указанных стрингах и проверяя изменяются ли отправляемые данные…

    Кстати, инсталлятор агента подписан цифровой подписью от Symbian, так что доказать, что его поменяли на стороне (к примеру, недобросовестные кодеры из миранда-тим) будет довольно проблематично :)
  • +10
    Мне тут сложно что-то добавить. В ассемблере ARM я не силен. Можно конечно кое-как адаптировать соответствующий код Miranda для компиляции под ARM и сравнивать полученные куски, но думаю, что это не очень эффективно. Оснований для подозрения в воровстве кода уже вполне достаточно.

    На мой взгляд возможны следующие действия со стороны mail.ru:
    — Свалить всю вину на какого-нибудь разработчика и:
    — Вообще убрать поддержку jabber
    — Честно переписать спорный код
    — Убрать или изменить соответствующие константы, что на первый взгляд будет скрывать часть доказательств, но в этом случае основанием для подозрения будет результат сравнения с дампом беты.
    — Открыть свой продукт под GPL
    — Продолжать стоять на своем, надеясь что до суда дело не дойдет. Но в этом случае они как минимум испортят себе репутацию.

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

    Лучшем вариантом развития событий будет конечно выпуск всего продукта под GPL. Вообще от этого mail.ru ничего не потеряет, а скорее наоборот, восстановит репутацию среди достаточно активной части сообщества, а так же возможно обзаведется новыми бесплатными разработчиками :) Тем более их продукт бесплатный, не содержит рекламы, а фактически сам является рекламой других сервисов mail.ru.

    Убрав поддержку или переписав код, все равно как-то придется договариваться с авторами Miranda.
    • +12
      Mail.ru и репутация… Вы уверены, что стоит употреблять эти имена в связке?
    • 0
      Разрешить проблему просто «убрав поддержку» уже нельзя. Факт нарушения — был. Даже если они уберут «заимствованный» код и перепишут всё сами — факт использования и распространения (с нарушением GPL) — был. Поэтому основания для иска будут даже в том случае, если они уберут отовсюду старые бинарники и даже если принудительно обновят клиентов всем юзерам поголовно.
      Бинарник с нарушениями есть много у кого (включая пострадавшую сторону).

      P.S.: да, я уверен, что заимствование имело место быть.
  • +1
    ну, погуглив… я нашёл описание и насколько хватает моего знания английского, там написано следующее:

    NTML реализует респонс-ответ механизм для аутентификация, в которой клиент способен идентифицировать себя не посылая пароль на сервер.

    Он состоит из 3 запросов, которые обобщены как: Тип1 (согласование), Тип2 (вызов) и Тип3 (аутентификация), в основном это работает так:
    1. Клиент посылает серверу запрос типа 1, который главным образом содержит список возможностей, поддерживаемых клиентом и запрашиваемых на сервере.
    2. Сервер даёт ответ типа 2 который содержит список возможностей поддерживаемых и согласованных им.
    ну и так далее…

    оригинал здесь.
    • +1
      Так а причем тут capabilities? :)
    • +2
      Есть один нюанс…

      NTLM (NT LAN Manager) создан Майкрософтом для работы в винде, и использует оно данные учётной записи windows для идентификации где-либо… Мобbльный телефон с симбианом в эту картину ну никак не вяжется…
    • +1
      Впрочем да, при желании можно вычислить хэш и вручную.
  • +1
    Надеюсь, меил.ру всё таки выложит исходники под GPL. Буду ждать первого форка с отрезанным протоколом меил-агента.
    • 0
      хочешь провести исторический эксперимент: «а что было бы если миранду бы делали разработчики из Mail.Ru»? :)
      • 0
        многие разработчики миранды работают в компаниях более крупных чем майл.
        • 0
          это хорошо. но для исторической правды это безразлично )))
    • –1
      А я его поддержки в пиджине :)
  • +1
    а в суд реально такое дело довести? а нада ли кому это?
    • +1
      Реально. Только обычно дела связанные с нарушением GPL до суда не доходят. Компании предпочитают договариваться. А с частными лицами, особенно находящимися в других странах, судится другие частные лица как правило не хотят.
      • 0
        А есть ли в России вообще судебная практика по делам о нарушении GPL? По периодичности поднятия вопроса о статусе этой лицензии на территории РФ можно судить, что данная лицензия пока еще не действенна в России, потому как нет официальной ее версии на руссуом языке.
        • +2
          По поводу действительности GPL. Есть код, у него есть автор или несколько авторов, код попадает под защиту 4-ой части ГК РФ. Если кто-то нарушил GPL и при этом попытается доказать ее недействительность, тем самым он будет доказывать недействительность единственного разрешения на основе которого мог использовать этот код. В общем если GPL не действительна, то код автоматически не становится общественным достоянием, у него все равно есть авторы. А по тому же ГК РФ «Правообладатель может по своему усмотрению разрешать или запрещать другим лицам использование результата интеллектуальной деятельности или средства индивидуализации. Отсутствие запрета не считается согласием (разрешением).».
          • 0
            Для любителей пофлудить на тему нормативно-правовых актов, могу сказать, что не все разработчики мирандового жаббера живут в РФ :)
            • 0
              У меня есть подозрение, что это не важно в данной ситуации, т.к. windows тоже не в РФ делают, а за нелицензионные копии судят в РФ по законам РФ.
              А тем более это совершенно не важно любителям пофлудить. :-)
              • +1
                Это очень даже важно — можно еще одну законодательную базу привлечь, больше разнообразие тем, можно изучать нестыковки в законах, да и вообще весело провести время :))
          • 0
            Доказать недействительность GPL — это сильно :) Лицензия достаточно распространенная, официально заверенных переводов должно быть полно.
  • +3
    майл спалился по полной )
  • +3
    Ну а в принципе-то, неужели открытие кода Майл.ру Агента является таким уж плохим ходом для mail.ru? Будет выложен исходный код Агента, будет больше людей, заинтересованных в его продвижении, в написании модов.
    • 0
      А как же признание собственной ошибки? ;)
      • 0
        В сложившейся ситуации как признание, так и отрицание ситуацию не исправит. Чтобы вернуть доверие надо будет им серьезно поработать, если конечно mail.ru заинтересованы в этом.
        • 0
          Доверие? Вот тут есть ссылка на забавную историю с mail.ru и Стилавиным. :)
      • 0
        Имхо, если они признают «собственную ошибку» (в кавычках потому, что я ошибки не вижу… нарушение есть, а ошибок нет), это им будет очень хорошим пиаром. Люди любят такие шумихи ;)
  • 0
    Сам не в курсе, потому и спрашиваю — неужели так легко портировать код с WindowsAPI на Symbian?
    • 0
      Там WinAPI не много. А вот работы со строками достаточно.
    • +1
      Работу с хмл и логику обработки пакетов — вполне. Интерфейс — не думаю.
  • +4
    Ни дня без лажи от mail.ru или AOL!
  • +2
    Необходимо зафиксировать момент релиза версии 1.15 со стороны mail.ru + сохранить дистрибутив конкректно этого релиза. Причем сделать это максимально официально. Думаю надо обезопасить себя от «отмазок» используя какой-либо крупный IT-ресурс, который возьмет на себя дистрибуцию сборки 1.15 до выяснения обстоятельств + собрать все существующие факты о выходе.

    Вполне возможно, что будет фраза «модифицированный клиент» и т.д., «сравните хэши, мы релизили другую версию».

    Надеюсь что в ближайшее время появится аргументирование на всех уровнях. Главное максимально официально зафиксировать факт выхода бета-версии MRA.

    С уважением.
    • +3
      > Вполне возможно, что будет фраза «модифицированный клиент» и т.д., «сравните хэши, мы релизили другую версию».

      А цифровой сертификат от симбиана, которым подписан дистрибутив (и выданный именно для мейл.ру) тут не поможет?
      • 0
        Поможет, проглядел, приношу свои извинения.
      • 0
        А разве они имеют какое-то значение в российском юридическом поле?
        • 0
          Неужели Вы на самом деле думаете, что со стороны разработчиков миранды дело дойдёт до суда? :)
          • 0
            А почему нет? «Вор должен сидеть в тюрьме» © :)
  • +1
    Вышла новая версия, 1.16. Размер джабер библиотеки как не трудно догадаться уменьшился. Похоже убрали вывод отладочной информации, все перечисленные выше строковые константы в новой версии отсутствуют.
    • +1
      Ну ещё одно подтверждение того, что «оно» имело место быть…

      Поправили баги так, что аж размер бинарника уменьшился… Видно большая работа, а версия сменилась лишь на единицу… ;)
    • 0
      Ну это все равно не отменяет факта публикации версии 1.15 (гуглокэш). И как говорили выше, файл подписан сертификатом Mail.Ru с подписью Nokia/Symbian.
      • 0
        Этот факт надо фиксировать нотариально, да и сертификат боюсь не аргумент, вряд ли он выдан сертифицированным ФСБ центром
        • +1
          Минусовали за «ФСБ»? :)

          Может просто не в курсе, что юридически значимыми (без дополнительных соглашений) в России являются подписи, соответствующие Закону об ЭЦП, а согласно этому закону софт должны быть проверен, а его разработчик и УЦ лицензирован «уполномоченным органом», которым в данный момент является ФСБ (раньше было ФАПСИ).

          Насчет «нотариально» тоже, ссылки на гуглокэш (которые к моменту судебного разбирательства вполне могут оказать битыми) к делу не пришьешь, но уже отработана процедура по фиксации «виртуальных» вещественных доказательств. если, например, ваше авторское право нарушили выкладыванием вашего контента на «левом» сайте без вашего разрешения, то скорее бегите к нотариусу и просите его распечатать ваш контент на этом сайте и удостоверить, что это распечатка была сделана такого-то числа с такого-то урла — вот вам «вещдок», который суду будет очень сложно не принимать во внимание. особенно если вы сумеете доказать свое авторство на этот контент, скажем аналогичной нотариально заверенной копией своего сайта.

    • 0
      Интересно как там с miranda.org/caps?
      • 0
        Таки забрали, хотя может я плохо искал…
  • 0
    С нетерпением ждём развязки этой истории :)
    • +3
      да, тэга «попкорн» явно не хватает :)
  • 0
    В мэйлагенте кроме прочего использован открытый код 7-zip
    • +1
      LZMA SDK, если не ошибаюсь, идет под LGPL
      • +3
        LGPL конечно более мягкая лицензия, но все равно налагает некоторые ограничения. Во-первых к продукту должен быть приложен текст самой лицензии. Во-вторых LGPL библиотека должна быть заменяемой. Т.е. у пользователя должна быть возможность заменить LGPL библиотеку на новую версию. Это фактически запрет на статическую линковку. Статическая линковка с LGPL библиотекой разрешена только при выполнении одного из условий, это либо открытый доступ к исходникам, неважно под какой лицензией, главное что бы она не запрещала компилировать исходники, либо предоставление объектных файлов, что бы пользователь мог самостоятельно производить линковку. А вот отдельной библиотеки, не говоря уже про текст LGPL я не вижу. Хотя точно сказать, что в продукте есть LGPL код не могу, но я его и не искал :)
      • +2
        www.7-zip.org/sdk.html
        Не, LZMA SDK — public domain, общественное достояние, можно использовать как угодно. Так что тут вряд ли они могли что-то нарушить.
        • 0
          Под такой лицензией LZMA SDK с 2008-12-02, думаю они использовали эти исходные коды и до этого.

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.