Руководитель, инженер
0,0
рейтинг
8 апреля 2013 в 21:18

Разработка → Новая дыра в безопасности Мегафона позволяет взламывать счета абонентов

На один из наших корпоративных сотовых телефонов была совершена почти успешная хакерская атака.
К счастью, довольно быстро удалось разобраться откуда «растут ноги».
Мы обнаружили очередную «дыру» в защите Мегафона, чем с вами и делимся.
Она касается всех абонентов сети.

Несколько дней назад я сообщил в абонентскую службу о «дыре» на сайте Мегафона. На момент 08.04.2013 уязвимость не исправили.


Схема изящная и простая, как топор. Позволяет воровать деньги с вашего счёта без вашего ведома.

Итак, у Мегафона есть нужная и полезная вещь — СервисГид. В нем можно управлять услугами без длительного голосового общения «ваш звонок очень важен для нас».
И вход в него сделан правильно, не позволяя выполнять взлом через подбор пароля. Простая, но капча присутствует.

Всё бы хорошо, но капча вредит юзабилити сайта. Дизайнеры иногда побеждают здравый смысл. Есть портал, дублирующий функции телефона messages.megafon.ru, вход в который не защищён от автоматического перебора паролей:

MegaHole - дыра в безопасности Мегафона

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

Что делали воры?

  1. С помощью этого SMS-сайта подбирают (видимо, простым перебором) пароль от СервисГида, и входят.
  2. Они получают доступ и в СервисГид: к чтению входящих SMS и к их отправке.
  3. Выполняют подписку на платные сервисы (дурацкий МегафонПро, моё оценочное мнение).
  4. По подписке приходит SMS с кодом подтверждения.
  5. Вводят этот код на сайте подписки.
  6. Получают агентские проценты от Мегафона за списанные деньги с вашего счета по платной подписке.

Обработав так автоматически и массово тысячи телефонов можно заработать неприличные деньги.

К чести специалистов оператора сотовой связи стоит отметить, что в момент входа в СервисГид и в этот «SMS-сайт» приходит SMS-уведомление.

В моём случае вход в SMS-портал произошёл в 00:23 минуты, в это время я бодрствовал, и сразу через мобильный интернет сменил пароль от СервисГида на более стойкий.
К сожалению, смена пароля не разлогинивает пользователя с SMS-сайта Мегафона, и злоумышленики могут там сидеть до сих пор.
Воры не успели войти в СервисГид раньше меня. Возможно, их частый ввод уже не актуального пароля в сам СервисГид привёл к его блокировке. Но если я не успел поменять пароль — кто знает, что бы они учудили.

В течение суток дважды приходили коды подтверждения платных подписок. Они продолжают приходить и сейчас.

Меры защиты от этой атаки для Мегафона:

1. Поставить защиту от автоматического входа сюда messages.megafon.ru и больше так не шутить — ВЫПОЛНЕНО
2. Разрешить использовать латинские буквы в пароле СервисГида
3. Сделать разными пару логин/пароль для СГ и SMS-сайта

Меры защиты для абонентов:

0. Вообще не пользоваться СервисГидом, но если уже начали
1. Поставить более стойкий пароль на СервисГид, например
2. В любом случае сменить пароль от СервисГида
3. В СервисГиде или в абонентской службе заблокировать применение любых платных сервисов или подписок, списывание денег с коротких номеров. Для абонентов Мегафона — это бесплатная услуга "Стоп-контент".

Спасибо за внимание. Всем желаю безопасной связи и безглючного биллинга.

ZERO UPDATE: Полезная ссылка по теме от KiiA www.mobile-review.com/articles/2013/ums-podpiski.shtml
UPD1: Свежая статья на Хабре "про СервисГид"
UPD2: 9 апреля 2013 Мегафон добавил капчу на форму. Основная брешь закрыта! Спасибо сотрудникам Мегафона за довольно оперативную реакцию.
UPD3: Ответ Мегафона в комментариях к статье.
UPD4: Ещё статья про дырки Мегафона — свежие, ещё не закрыты!

UPDATE2015 — дыру не закрыли! Сообщение от хабрачитателя из Волгограда:

Капча есть, но она ничего не защищает.
Если ввести неверный логин-пароль и любую капчу, то мы увидим сообщение «не верный логин/пароль».
А если мы напишем правильный логин-пароль и любую капчу, то увидим «не верная капча».
Таким образом, можно бесконечно по прежнему брутить форму.
А капча понадобится только при залогивании.
Для брута капча не помеха, можно писать 1111 в поле капчи всегда и нормально брутить.

— уязвимость исправлена, Мегафон молодцы!
Андрей Криницкий @netAn
карма
143,5
рейтинг 0,0
Руководитель, инженер
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Спецпроект

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

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

  • +37
    Я надеюсь в скором времени написать:

    UPD: Специалисты мегафона всё исправили.


    Пока идут четвёртые сутки с момента обнаружения.
    • –16
      Не нужно капчу! У меня программка для разбора входящих смс :-)
      Лучше пароли разные с Сервис Гидом и чтобы не пускало без подключенной услуги.
      • +7
        Сейчас сервис UMS от Мегафона это единственный способ приема входящих SMS без железа! По этому не хочется чтобы его задушили капчей, когда есть другие способы защиты.

        Да, я понимаю что намного романтичнее Sim карту в Huawei модем, Huawei в сервер, сервер в интернет и в питание 24/7. Такие варианты уже описаны на хабре: SMS и SIP шлюз — Мультифон, Asterisk, Kannel, Приём и обработка SMS-сообщений на Linux-машине, Делаем VoIP GSM шлюз из Tp-link mr-3020 и Huawei E-171 — часть вторая — добавляем Siemens Gigaset c470IP и SMS
        Но нет у меня такого сервера, как и у многих нет, зато есть надежный и бесплатный Google App Engine с проверкой SMS каждую минуту.

        Свой номер телефона нужно держать в тайне, но сейчас почти все что есть в интернете хочет отправить SMS для регистрации или авторизации. Решение это UMS от Мегафона, позволяет пользоваться сразу несколькими номерами и не светить свой основной номер.
        • +1
          Ну, почему же единственный. Есть практически бесплатные сервисы (около доллара за 2 месяца), которые выделяют номер типа +7901 и позволяют пересылать полученные на него CMC на e-mail.

          Но, раз уж вы написали :) — поделитесь, пожалуйста, кодом скрипта на GAE (python, надеюсь), который через этот сервис СМС забирает. Использую как backup решение. Спасибо заранее.
          • +2
            В общих чертах
            главная функция ums
            логинится, кэширует куки, разбирает смс от определенных получателей и сохраняет их в БД

            Код
            import webapp2, re, base64, Cookie
            from google.appengine.api import memcache
            from google.appengine.api import urlfetch
            from google.appengine.ext import db
            from xml.dom import minidom
            from datetime import datetime, timedelta
            
            url_login = "https://messages.megafon.ru/userjson/weblogin.do?webloginReq.user=%s&webloginReq.secinfo=%s&imageVerifyCode=&__checkbox_remember=false&__checkbox_keepmeloggedin=false"
            url_chatlist = "https://messages.megafon.ru/onebox/getChatList.do?startNum=1&endNum=100&reFreshFlag=1&operation=1&chatMsgType=10100000000100000000000000000000"
            url_messages = "https://messages.megafon.ru/onebox/oneboxList.do?umReq.ctlg=1%%2C2&umReq.mType=2053&umReq.bNum=1&umReq.eNum=20&umReq.snd=%s&umReq.rcv=7%s"
            
            def ums(username, password, senders):
                try:
                    total_result = True
                    for sender in senders:
                        session_id = memcache.get(username)
                        action_result = None
                        if session_id:
                            action_result = messages(session_id, username, sender)
                        if action_result is False or session_id is None:
                            session_id = login(username, password)
                            action_result = messages(session_id, username, sender)
                        if action_result != True:
                            total_result = False
                    
                    return total_result
                except:
                    return
            
            #get session id (cookie)
            def login(login, password):
                try:
                    result = urlfetch.fetch(url=url_login % (base64.b64encode(login), base64.b64encode(password)))
                    if result.content != '{"returnFlg":true}':
                        return False
                    
                    cookie = Cookie.SimpleCookie()
                    cookie.load(result.headers.get('Set-Cookie'))
                    
                    memcache.set(login, cookie['JSESSIONID'].value)
                    return cookie['JSESSIONID'].value
                
                except:
                    return
            
            #get and put to db messages from sender to username
            def messages(session_id, username, sender):
                try:
                    result = urlfetch.fetch(url=url_messages % (sender, username), follow_redirects=False,
                                    headers={'Cookie': 'JSESSIONID=' + session_id})
                                    
                    if result.status_code == 302:
                        return False
                    xmldoc = minidom.parseString(result.content.replace("\r",'').replace("\n",''))
                    msg_list = xmldoc.getElementsByTagName('uniMsg')
                    for msg_element in msg_list:
                        msgID = msg_element.getElementsByTagName('msgID')[0].firstChild.nodeValue
                        msgText = msg_element.getElementsByTagName('ttl')[0].firstChild.nodeValue
                        msgTime = msg_element.getElementsByTagName('t')[0].firstChild.nodeValue
                        
                        if sms.get_by_key_name(msgID) is None:
                            sms(key_name=msgID,msgID=msgID,msgTime=datetime.strptime(msgTime,"%Y%m%d%H%M%S"),msgText=msgText)
                            sms.put()
            
                    return True
                    
                except:
                    return        
            
            #get numbers and messages list (get xml for example)
            def chatlist(session_id):
                try:
                    result = urlfetch.fetch(url=url_chatlist,
                                    headers={'Cookie': 'JSESSIONID=' + session_id})
                    return result.content
                except:
                    return
            
            class sms(db.Model):
                msgID = db.StringProperty(required=True)
                msgTime = db.DateTimeProperty(required=True) #UTC
                msgText = db.TextProperty()
            
            
    • +2
      Четверо суток! Ужосссс!!!
      Я поменял все пароли на 20значные на ЛК всей большой тройки)))
    • 0
      А может это типа такая фича…
      В корпоративном хаосе, программные ошибки порою делаются не случайно.
      • 0
        Да, и надо быть к этому готовым. Были случаи подключения платного контента на SIM-картах в устройствах, на которых даже теоретически нельзя воспользоваться такими услугами и личный кабинет для которых не предусмотрен. Благо менеджеры без проблем делают возврат средств, но причину возникновения, как правило, не называют.
    • 0
      «Ждите! Вам ответит первый освободившийся инженер!» :))
  • +13
    Подобранный пароль к сервис-гиду, замечательно поможет отключить «бесплатную услугу „Стоп-контент“».
    Вот круг и замкнулся :)
    • +7
      А также все уведомления о входе куда-либо.
      • +11
        Хотя казалось бы — почему бы вообще не отключить вход по паролю… почему бы не присылать временные пароли через СМС. Зачем все эти мытарства нужны.
        • +5
          Сотовой компании ресурс сети напрягать очевидно жалко. Другое дело поздравления всякие с праздниками или просто реклама…
          • +1
            Ну это сарказм, понятно… а вот что реально смешно — если попробовать пополнить пластиковой картой с сайта МегаФона счет, то это не выйдет без… сюрприз, сюрприз… временного кода, который они присылают через СМС.
            • 0
              Да согласен конечно)
            • +1
              Дело в том, что разработка всевозможных веб витрин, сервисов и тп. выполняется разными исполнителями (как внутренними так и внешними ), со стороны заказчика никакие движения не согласованны, нет единого отдела или группы у которой была бы полная информация о всех веб проектах и услугах которые они предоставляют через web. Зачастую ТЗ (исли оно есть) пишут не компетентные в этой области люди (продукт менеджеры например, так как архитектора тупо на проект не выбили ), а исполнитель (если он внешний) делает только то, что ему написали в ТЗ.
              • 0
                Я понимаю, но ведь есть какой-то отдел, занимающийся вопросами безопасности, с которым надо согласовывать требования к проекту?
    • +5
      Нет, не замкнулся. Услугу Стоп-Контент можно отключить, только позвонив со своего номера в службу поддержки.
  • +29
    Пароль должен содержать от 6 до 20 цифр.

    Красота…
    • –7
      пишем статью про уязвимость Яндекса?
    • +4
      О да! К тому же везде по разному, мне выдало «Пароль должен содержать от 3 до 128 цифр».
      Имхо надо добавить об этом в пост.
    • +1
      Ха! Так то личный кабинет на сайте у сотового оператора. Мне было когда-то очень неприятно узнать, что интернет-сервис Альфа-банка не умеет спецсимволы в пароле.
  • +3
    А как-то отказаться от Сервис-гида нельзя?
    • +3
      Буквально только что звонил в службу поддержки — меня заверили, что теперь Сервис-Гид у меня отключен. Уж не знаю, правда это или нет. На всякий случай подключил себе Стоп-Контент…
      • +3
        Завтра тоже позвоню, пока что установил 88-значный пароль на Сервис-Гид.
  • +1
    Вроде если услуга UMS не активна войти на сайт messages.megafon.ru невозможно… Или можно?
    • +3
      Ан нет, и без UMS пускает и даже предлагает подключить эту услугу одной галочкой :-( Фигово
  • +2
    Платные услуги — это мелочи, абонент при этом рискует только счетом на телефоне. Возникает вопрос, в СервисГиде они могут отправлять сообщения от имени абонента? Если да, то под ударом всякие банки-онлайн и т.п. сервисы, в которых могут быть уже серьезные деньги.
    • +2
      Из Сервис Гида смс уходят с другого номера. А вот сайт messages.megafon.ru сделан чтобы писать смс со своего номера и принимать! входящие на свой номер. Ессно при входе в этот messages.megafon.ru приходит смс, но в настройках ее можно отключить.
      • НЛО прилетело и опубликовало эту надпись здесь
    • 0
      Сам не проверял:
      Отправка SMS через Сервис-Гид
      SMS передается от имени отправителя
      В сообщения не добавляется рекламная информация
      Длина сообщения увеличилась до 160 символов
  • +7
    Самое интересное — поведение МегаФона. Я несколько раз обнаруживал на своем номере подписки на какие-то совершенно неведомые услуги, к которым даже близко не имел отношения. Несколько раз отправлял обращения в МегаФон, в прокуратуру — каждый раз деньги возвращали, но меня умилял тон письма, мол «мы, конечно, согласно программы лояльности вам деньги вернем, но вы вообще-то сами виноваты». Я уже на кого только ни грешил… А оно вон как, оказывается.
  • +2
    4. По подписке приходит SMS с кодом подтверждения

    Но я эту СМС тоже увижу и узнаю что меня взломали?
    • +2
      Возможно когда вы узнаете будет поздно.
    • +5
      Про взлом вы узнали из этой статьи, а так подумали бы что кто то хочет подписать вас на левую услугу, и просто бы стёрли смску да и всё. Инициировать то отправку такой смс может каждый введя ваш номер на каком нить сайте с подпиской.
  • +7
    Выполняют подписку на дурацкий МегафонПро

    Вы уверены, что эти мошенники — не Мегафон?
  • +5
    >Новая дыра в безопасности

    Слава богу.
    • +45
      Имели в виду это?
      — Шеф! У нас дыра в безопасности!!!
      — Слава богу, хоть что-то у нас в безопасности.
  • +2
    Сегодняшняя статья Сергея Потресова на Мобайл-ревью на ту же тему: МегаФон: история одного взлома
  • 0
    мм. поставить пароль из 128 цифр и никакого брутфорса.
    • 0
      Хеш коллизии?
      • 0
        что, там crc16 «хэш»?
        • 0
          Вы в этом ещё уверены? =)
  • +3
    так вот откуда ноги растут, а я думал что мегафон совсем совести потерял, когда дня 2 назад проснулся я и увидел СМС вы успешно подписаны на какую то муть МегафонПро
  • +3
    Интересно, а возможен ли вариант, что мегафоновцы сами втихаря подписывают абонентов на платные сервисы, оставив уязвимость для отмазки в случае чего…
    • 0
      Гугл: переписка МТС
  • +1
    Меня так еще в начале года ломали только с помощью СМС+.
    Способ закрытия дырки простейщий — подключение подобных услуг с подтверждением по смс.
    • +1
      Там и есть с подтверждением по смс, только смс и посмотреть и отправить с сайта можно.
      • +1
        Так как его смотреть с сайта, если сервис еще не подключен. Я говорю чтобы первичное подключение сервиса было с подтверждением. Поставил в СГ галочку на UMS\СМС+ ввел код из смски и сервис подключился, только тогда можно видеть смс на сайте.
        Аналогично со стопконтент(только там наоборот выключение с вводом смс кода) и вообще любыми критичными услугами.
  • +2
    Спасибо за пост, теперь знаю в чем дело. Мне уже 3 смс приходило с 4-го апреля «****** Никому не сообщайте свой персональный код », несмотря на то что сменил пароль после первого же смс.
  • +3
    Посмотрел исходный код страницы messages.megafon.ru и сразу стало все понятно — внимание на 3-йю, 624ую и 625ую строку (если честно там все пестрит подобным). Вот только вопрос серверную часть те же люди делали?
    • +5
      Для ленивых: начала кода ознаменовано гордой фразой:
      < !-- JSTL标签 -->

      Ну и не менее информативные записи на 624 и 625 строках
      * 第一个参数表示将数据显示在哪个元素上
      * 第二个参数表示获取到的时间

      И все это на стартовой странице.
      • +2
        Для совсем ленивых :)

        < !-- JSTL标签 -->
        // перевод: <! — JSTL тег ->

        * 第一个参数表示将数据显示在哪个元素上
        // перевод: * Первый параметр представляет данные показывают, какие элементы

        * 第二个参数表示获取到的时间
        // перевод: * Второй параметр показывает время, чтобы добраться до
      • +5
        Вы натолкнули меня на мысль — парсить проекты во время сборки, читать комментарии и переводить их на пушту, например… Хотя китайский тоже круто.
      • 0
        не обновил комментарии…
    • 0
      ну хоть не хинди
  • +1
    Спасибо, сменил пароль с одних цифр на другие цифры. Не знаю, насколько взломостойко устанавливать запрет на любые символы кроме цифр, но все же.
    • +1
      Боюсь, что это вообще не взломостойко. Одно дело подбирать пароль из 10 возможных знаков, другое — из 50.
    • +1
      Поставить пароль в 120 символов и сохранить пароль у себя на компе.
      Не вижу варианта лучше чем этот.
  • +2
    Смени пароль, %username%, твоё будущее зависит от тебя!
  • +1
    Кстати, когда был SMS+ прошлой версии — на него устанавливался отдельный пароль. После обновления на новую версию, пароль стал общим. Кто вообще придумал использовать пароль от сервис-гида для SMS+/UMS?
  • +1
    Уже год не заходил в сервис гид. Попробовал — пользователь заблокирован. Интересное кино.
  • 0
    О! Я даже знаю кто ломал.
  • +1
    Меня вот что интересует — а соблюдает ли МегаФон нормы ФЗ 152 о защите персональных данных?

    Может хороший штраф охладит пыл их сайтотворчества.
  • +2
    image
  • +2
    появилась капча
    • +2
      Обновил статью.
      Видимо, писать на Хабр эффективнее, чем сразу в Мегафон :)
      • +1
        Спасибо netAn за капчу!

        Давай еще возьмем исходники AnyBalance и на каждую ссылку капчу поставим!

        Вот самое простое для Столичного Мегафона:
        moscowsg.megafon.ru/TRAY_INFO/TRAY_INFO?LOGIN=%НОМЕР%&PASSWORD=%ПАРОЛЬ%
        или
        moscowsg.megafon.ru/SESSION/GET_SESSION?MSISDN=%НОМЕР%&PASS=%ПАРОЛЬ%&CHANNEL=WWW

        А с UMS пусть еще и клиента на Android с капчей перепишут, а то вдруг что.

        Все как в бородатом анекдоте:
        Хакер в столовой
        День первый
        Хакер приходит в общественную столовую и с возмущением обнаруживает, что солонку на столе может открутить кто попало и насыпать туда что угодно. Хакер приходит домой и пишет гневное письмо директору столовой: «Я, meG@Duc, обнаружил уязвимость солонки в Вашей столовой. Злоумышленник может вскрыть солонку и насыпать туда яду! Примите меры срочно!»

        День второй
        Директор среди прочих деловых писем, запросов о поставках еды и курьерских уведомлений получает письмо, и пожимает плечами: «Кому этот бред только в голову пришёл?»

        День пятый
        Хакер приходит в столовую, насыпает во все солонки яду. Погибает триста человек, директора три месяца таскают по судам и, в конце концов, оправдывают за отсутствием состава преступления. Хакер пишет письмо в стиле «ну что, видали?».

        День 96-ой
        Директор покупает специально спроектированные солонки с кодовым замком. Посетители столовой чувствуют, что они в этой жизни чего-то не понимают.

        День 97-ой
        Хакер обнаруживает, что дырки в солонках пропускают соль в обе стороны. И не только соль, а вообще всё, что угодно. Он пишет возмущенное письмо директору и ссыт во все солонки столовой. Триста человек перестают посещать эту столовую вообще, тридцать попадают в больницы с отравлением. Хакер вдогонку посылает директору смс-ку «Ну как вам?». Директора тем временем три месяца таскают по судам и дают год условно.

        День 188-ой
        Директор столовой клянется в жизни больше не работать ни в одной столовой, а тихо-мирно грузить лес в Сибири. Инженеры работают над новой солонкой с односторонним клапаном. Официантки тем временем изымают все старые солонки и раздают соль вручную.

        День 190-ый
        Хакер тырит солонку из столовой и изучает дома её устройство. Пишет гневное письмо директору: «Я, meG@Duc, стырил солонку и нахожу этот факт возмутительным! Любой может стырить солонку из Вашей столовой!» До этого непьющий директор читает письмо, идет домой и выпивает водки.

        День 193-ый
        Хакер обнаруживает, что все солонки в столовой прибиты цепями к столам. Он приезжает на очередной хакерский СПРЫГ и докладывает о своих успехах, получая там заслуженную награду за защиту интересов общества и потребителя. К счастью, директор ничего про это не знает и не сопьется раньше времени.

        День 194-ый
        В рамках дьявольски гениально продуманной операции хакеры всем СПРЫГом вламываются в столовую и высыпают соль из всех солонок себе в карманы. Хакер meG@Duc пишет возмущенное письмо директору, намекая на то, что никакой заботы о посетителях в столовой нет и любой гад может лишить честных людей соли в одно мгновение. Дозатор соли с авторизацией необходим просто позарез.

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

        День 200-ый
        Посетители столовой с ужасом находят, что, чтобы насыпать соли, они должны подойти к официанту, предьявить паспорт, получить специальный 8-значный одноразовый код к солонке. Для получения перца процедуру следует повторить.
        • 0
          Там передача пароля от СервисГида в открытую, без шифрования в GET-запросе?
        • +5
          К передаче кредов (пароля, кода и прочее равное) для доступа к критичной информации, какой является СМС в наше время, должно относиться с повышенной осторожностью.

          1. В открытом виде (HTTP вместо HTTPS) передавать нельзя!
          2. В URL запроса (а не в теле запроса) передавать нельзя, чтобы избежать попадания в логи Web и прокси-серверов!

          ОПСОС-ы и уважаемый Мегафон в частности, давно стали платформой для управления персональными данными пользователей — граждан РФ:
          64 742 073 абонента в апреле
          Если кто-то сомневается, то подумайте: как мы получаем коды подтверждения от банков, коды для восстановления паролей вконтакте, facebook, gmail…

          Да, возможно Мегафон и Минкомсвязи не обнаружат персональных данных в ваших СМС, которые прочитал злоумышленник за чашечкой кофе, но речь идёт о доступе к персональным данным! Чёрт возьми, если злоумышленник увидит СМС с кодом сброса пароля к почте, то конечно же этот код не будет чьими-то персональными данными, но вот на почте… и не надо этого отрицать.

          При всём при этом, сам факт возможности настолько древней и беззащитной авторизации к настолько ценным функциям указанной платформы вызывает шок. Как можно так безответственно относиться к 64 миллионам?!

          Сколько ещё вы будете играть в игры со спичками на бензоколонке?
          Страна непуганных идиотов

          Это не новая дыра в безопасности, это роспись в несостоятельности, ИМХО!
          • 0
            А теперь давай добавим конструктива.
            Как нельзя мы уже поняли. Напиши теперь, что нужно сделать.
            Какие будут рекомендации?
            Думаю, они будут касаться всей тройки.
            • +2
              Вот, немного чуть ниже.

              1. Нужно разделять представление для человека и для машины

              2. Для машины нужен API доступа к данным ОПСОСа

              3. Все сервисы используют только этот API, никаких обходных путей нет

              4. Для человека нужно сделать SSO, чтобы не было такого, что:
              в одном месте есть капча, а в другом нет; кто-то говорит «от 6 до 20 цифр», а кто-то «от 3 до 128»
              SSO сделает любую аутентификацию в одном месте и авторизацию доступа к API для разных дочерних сервисов контролируемой. Сервисы эти пароль ваш не спрашивают и не получают, а получают токен доступа OAuth v.2, через механизм п.5 и то только с вашего согласия

              5. Добавляем OAuth v.2 к API и идентифицируем каждого клиента API (это и машины M2M и сервисы типа UMS и AnyBalance), тогда в «СервисГиде» можно будет отменить разрешение клиенту-сервису UMS на доступ к API чтения/создания СМС абонента

              6. Когда всё вышесказанное будет сделано, нужно будет выделить два типа доступа к API: "в присутствии пользователя" и "в оффлайне (сервис ходит на API, даже тогда, когда пользователь отлогинен от сервера аутентификации)", и при выдаче токена доступа «СервисГид» должен человеку-клиенту сказать, какой тип доступа клиент-сервис запрашивает, чтобы человек сам решал — хочет ли он, чтобы какой-то сервер стороннего сервиса мог видеть его СМС в его отсутствии или нет (наример для AnyBalance хватит и первого типа доступа)

              7. Теперь, когда сервер аутентификации один и пароль никому не раздаётся, ни в какие формы (кроме одной единственной на единственном сервере аутентификации) не вводится, можно отдаться целиком обезопасиванию аутентификации последней-единственной формы ввода пароля:

              — сделать его передачу только по HTTPS и только в теле HTTP запроса
              — сделать его запрос как можно редким (т.е. фактически сделать использование пароля максимально редким), поддерживая сессионные куки и контролируя постоянство условий среды при которых данный конкретно пользователь пользуется сессией (при изменении контролируемых условий — спрашивать подтверждение пароля у пользователя)

              8. И несмотря на п.7, для изменения конфигурации в «СервисГид» (образно говоря, для выполнения операций «записи»), как то: подписка на сервисы, смена тарифного плана, смена типа уведомлений — для всего этого сделать повторную проверку пароля даже для действующей сессии. А для особенно критичных операций — подтверждение по паролю и по коду СМС.

              Чем не конструктив? И да, это касается всей тройки.
              • 0
                другое дело!
              • 0
                Отличный ответ.
      • 0
        Просто стоит писать в МегаФоне сразу людям, которые готовы эту информацию принять. Например, мне :)
  • +1
    На днях сидел спокойно на работе тут же приходит смс о том, что мне выслан какой-то код, тут же приходит следом смс что я подписан на какую-то услугу, звоню в суппорт где меня отключили от услуг и пообещали разобраться как так вышло, видимо на хабре выясняют это быстрее чем в мегафоне.
  • +4
    Мы благодарим вас за бдительность и внимание к вопросам информационной безопасности нашей компании. Выявленные нами факты подключения подписок на платные контент-услуги для абонентов со стороны третьих лиц локализованы и не имели массовый характер. Причиной послужили действия злоумышленников по подбору реквизитов доступа к сервису UMS и системы самообслуживания «Сервис Гид». В целях усиления безопасности наших абонентов, добавлен дополнительный уровень защиты на этапе авторизации в сервисе UMS.

    Все возможные материальные потери предотвращены – в случаях, где выявлено подобное подключение подписок, возвращены денежные средства, независимо от обращений в «МегаФон». К контент-провайдерам применены жесткие санкции.

    Уважаемые абоненты, обращаем ваше внимание на серьезность вопроса защиты персональной информации.
    Не используйте элементарные цифровые пароли для доступа к сервисам самообслуживания. Не передавайте пароли третьим лицам. Ограничьте установку ПО, если у вас есть сомнения в его происхождении. Используйте антивирусное ПО.
    В случае получения SMS-сообщений, содержание которых вызывает у вас вопросы, обращайтесь к оператору для уточнения информации.
    Эти рекомендации позволят обезопасить себя от действия злоумышленников.
    • 0
      Молодцы. Хорошая реакция.
      • 0
        Хорошая реакция? Вы 4-дневную задержку (и неизвестно сколько ещё бы она была, если бы не пост), в течение которой у абонентов крадут деньги, всерьёз называете хорошей реакцией? Таких горе-специалистов гнать ссаными тряпками надо.
        • +1
          Чем крупнее организация, тем она неповоротливее. Для их размеров бизнеса это быстрая реакция.
          • 0
            закрыть вход до выпуска патча — это оперативная реакция
            • НЛО прилетело и опубликовало эту надпись здесь
    • +3
      Уважаемый MegaFon, Ваш сервис UMS это технологический прорыв в будущее, такой прорыв как сервис Мультифон!
      Я думаю МегаФон лучший оператор связи!

      Пожалуйста, сделайте API для пользование сервисом UMS в автоматическом режиме.
      Интересует получение (и отправка) SMS с номера абонента, разумеется с его согласия, без ввода капчи.

      Номер телефона мой, и я хочу пользоваться им как мне удобно. Даже без сим карты.
      МегаФон прогрессивный оператор и у Вас уже есть необходимые технологии. Откройте свои возможности для компьютерных гиков!
      • 0
        Если не откроют — обращайтесь ко мне, у меня есть API :-)
      • +1
        Тут должен быть OAuth v.2 и никакой капчи для API. Она останется только для человека, смотрите API того-же Гугла…
    • 0
      исправления внесли — это молодцы. Готовы вернуть потери — не сомневаюсь. А вот то что это получится сделать — есть реальные сомнения.

      27.10.2012 20:04 заявка 195061863 — я сообщил о некорректно работающей процедуре списания средств. Был получен ответ что ошибка устранена,
      12.11.2012 20:21 заявка 197551807 — я уточнил, будут ли возвращены некорректно списанные средства. Был получен ответ «Информация по данному вопросу зафиксирована и находится на рассмотрении. По результатам рассмотрения Вам поступит смс.»
      03.12.2012 12:50 заявка 200798407 — я еще раз напомнил о себе. В ответ «Данная ситуация является массовой и коснулась многих номеров, чем обусловлено более длительное время возврата средств, т.к. средства возвращаются в процессе очереди обращения Клиентов.»
      21.02.2013 21:37 заявка 214093502 — еще раз попробовал уточнить время решения, заодно и напомнить о себе. в ответ «На текущий момент точных сроков полного решения вопроса не обозначено, сроки уточняются. Приносим извинения за длительное время решения вопроса.»

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

      • 0
        Запрошу у коллег детали по вашему вопросу и доведем его до конца.
    • 0
      пишут, что кривожопо у вас по прежнему (оценочное суждение), дыра не закрыта.
  • +1
    А вот и первые результаты. Хакер разочарован и не может получить заказ на подбор пароля из-за введёной капчи:

    image

    ссылка
    • 0
      lada.mobile — это публичная тольяттинская группа Usenet (nntp)
      там не хакеры, а балаболы большинство
  • +1
    Уже появились первые пострадавшие — www.banki.ru/services/responses/bank/?responseID=4867553. Надеюсь в мегафоне введут все таки подтверждение входа с помощью sms.
    • 0
      подтверждение входа с помощью sms не спасёт — читай комментарии.
  • +2
    [12:11:14] сообщение от читателя из Волгограда:
    Капча есть, но она ничего не защищает.
    Если ввести неверный логин-пароль и любую капчу, то мы увидим сообщение «не верный логин/пароль».
    А если мы напишем правильный логин-пароль и любую капчу, то увидим «не верная капча».
    Таким образом, можно бесконечно по прежнему брутить форму.
    А капча понадобится только при залогивании.
    Для брута капча не помеха, можно писать 1111 в поле капчи всегда и нормально брутить.
    • 0
      починили!

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