Разработка сайта в действии: скрины и эксплоиты


Здесь будут публиковаться интересные эксклюзивные материалы, связанные с историей и развитием сайта.

На текущий момент уже есть три раритета:

[list]
[*] Снимок экрана, сделанный spinore'ом: браузер с полученнми администраторскими полномочиями[link1] (вскоре будет выложен для общего доступа).
[*] Снимок экрана[link2], сделанный spinore'ом: браузер с чередующейся авторизацией (spinore с правами Serghan и Serghan с правами spinore, MD5 хеш файла: 80a054b5b0d59ed3b67c13b2d849191f, по мотивам этой темы[link3]).
[*] Само это сообщение :-)
[/list]
И, пожалуй, этот список ещё пополнится ;-)

Комментарии
— spinore (12/06/2007 09:57)   
SATtva, вы бы не могли его выложить? У меня копия потерялась – сейчас есть только этот файл, зашифрованный вашим ключом. Назывался он при отправке по почте new.png.gpg, это 2006-й год.
— SАТtva_copy (12/06/2007 16:18, исправлен 12/06/2007 16:19)   
SATtva:
И, пожалуй, этот список ещё пополнится

А вот оно и долгожданное дополнение! :-))) Вносим его в историю.
На этом сообщении показан визуальный улучшенный обход диагностики, который проверять прийдётся уже только ключом истиного unknown'а: 02B8 F1C5 A4FA 9B71, а иначе подмену не распознать.
— SАТtva_copy (12/06/2007 16:36)   
Уважаемые коллеги!
Все рабочие на текущий момент эксплоиты на движок, удалённую копрометацию сайта, скрины с перехватом моей сессии и подделкой моей подписи (или ключа) публикуем в этом топике, чтобы я мог дорабатывать их и поддерживать в рабочем состоянии.
— caracurt (12/06/2007 17:56, исправлен 12/06/2007 18:00)   
ЧТО?! Как это понимать?
— SATtva (12/06/2007 18:13)   
Господа, не поддавайтесь на гнусные провокации акул империализма, проверяйте отпечаток ключа и профиль пользователя (участие в группе админов). А Вас, spinore, отшлёпаю нафиг! :-)
— SATtva (12/06/2007 18:16)   
... Вас, unknown, кстати тоже. :-) А вообще, похоже, пора никнэймы проверять на похожесть...
— spinore (12/06/2007 18:23)   
SATtva:
... Вас, unknown, кстати тоже. :-) А вообще, похоже, пора никнэймы проверять на похожесть...

SATtva, реализуйте то что я сказал:
перед отправкой сообщения и перед регистрацией никак проверяете новый ник: пусть он даже содержит кириллические символы, но они не сводятся к подмене букв как выше сделано относительно какого-либо из уже существующих ников, и всего делов-та...
P. S.: вы же понимаете что публиковать хэши ников не выход? Можно конечно вообще отменить ники и использовать только хэши :-) (шутка)
— SATtva (12/06/2007 18:24)   
Блин, весь сайт засрали загадили. (Где-то spinore недавно предлагал провинившихся в chroot сажать... пара кандидатов у меня уже имеется.) Что с этими комментариями теперь делать будем?
— spinore (12/06/2007 18:27)   
ничего не будем делать. Или вырежем и поместим в отдельную ветку – например, эту.
— spinore (12/06/2007 18:34)   
SATtva:
Автор: SATtva, размещен 09/06/2007 20:52
Всё, spinore, можете гадить. Оказалось, что даже опубликованные сообщения не пострадали.

Был рад стараться!
— SATtva (12/06/2007 18:47)   
spinore, спасибо Вам за обращение внимания на эту потенциальную уязвимость, но всё-таки держите себя в руках. Дайте время на исправление.
— unknown (12/06/2007 18:53)   
... Вас, unknown, кстати тоже. :-) А вообще, похоже, пора никнэймы проверять на похожесть...

Проверил, точно не похожи, не виноватая я:

— SATtva (12/06/2007 19:03)   
А, ну ладно, тогда Ваша экзекуция отменяется. Думал, Вы тоже принимали участие во всей этой вакханалии. Хотя, надо признать, spinore молодец, конечно. Атаковал систему с неожиданного для меня направления.
— spinore (12/06/2007 19:21)   
Я просто хотел обратить ваше внимание на существующую проблему и показать её серьёзность.
дело же не в конкретных комментариях, как вы понимаете. А что касается проверки на схожесть – так на некоторых форумах типа linux.org.ru где слишком много юниксоидов с длинными руками уже давно есть встроенный проверщик на похожесть ников при регистрации. Например, если spinore уже зареган, то spinore123, ssspinore, s-p-i-n-o-r-e, s.p.i.n.o.r.e, sppinore уже не проканают при регистрации. Там какая=то хитрая распознавалка. поидее такой алгоритм на критерий похожести должен быть стандартом на форумах. Надеюсь сейчас всё всё понимают. Левые коменты можно потереть, остаить только несколько чисто для демонстрациии.. для истории так сказать.
А вообще, это всё из-за mellon который под моим ником опубликовал сообщение под гостём. Вы тогда, SATtva, сразу сказали про хэши ников и на этом всё кончилось. Если я не ошибаюсь, вы на тот менмент не понимали во что это может быть гипертрофировано в случае атаки. Собсно, я показал.
— spinore (12/06/2007 19:30)   
SATtva:
spinore, спасибо Вам за обращение внимания на эту потенциальную уязвимость, но всё-таки держите себя в руках. Дайте время на исправление.

Да я б сам исправил если б умел программировать :-) Как вы пришли я больше не гадил :-)
P. S.: ну за неделю поди исправим?
P. P. S.: я там по разным топикам много по существу ошибок выловил, нареканий, недочётов... Вы внимательно читайте, надо всё это вычищать и исправлять, баги в смысле. Что от меня зависит я делаю.
— SATtva (12/06/2007 19:30)   
А вообще, это всё из-за mellon который под моим ником опубликовал сообщение под гостём. Вы тогда, SATtva, сразу сказали про хэши ников и на этом всё кончилось. Если я не ошибаюсь, вы на тот менмент не понимали во что это может быть гипертрофировано в случае атаки. Собсно, я показал.

Вы правы, не понимал. А виноват во всём mellon, это точно! :-)
— spinore (12/06/2007 19:31)   
Заглавные буквы при сверке ников тоже надо отключать.
То есть если spinore уже есть то Spinore или spInore должны резаться скриптом регистрации и скриптом проверяющим ник гостя.
— spinore (12/06/2007 19:34)   
Вы правы, не понимал. А виноват во всём mellon, это точно! :-)

Ну наконец-то разобрались и нашли виноватого :-) Ну что, берём mellon'а и где у нас тут гильотина?
Птфу, chroot, а не гильотина... Оговорился.
:-)
— unknown (12/06/2007 20:43)   
Надо было рекламу заранее дать:

Не пропустите! Хит сезона: "Атака кло(у) нов" на сайте pgpru.com!

Режиссёр и исполнитель главной роли: spinore. По мотивам mellon.

А то половина народу так и не успеет ничего заметить. И останутся только скупые строчки в местных новостях.
— spinore (12/06/2007 21:10)   
Вы, unknown, неужто полагаете что я всё это знал заранее? Каждую минуту я не знал какой будет следующий шаг, сообщение и идея. Это всё рождалось налету. и я совсем не предполагал что выльется в этом
Может быть, когда-нибудь SATtva'а добавит страничку в фак или ещё куда о существовании в ИБ такого понятия как социнженерия и спекуляции на пересечении разных алфавитов. Да, ранее я прекрасно знал что какую-нибдь "o" можно написать в обоих раскладках, но я даже не предполагал что из этого можно сотворить комедию вселенского масштаба :-)
P. S.: вещи из категории очевидных, но только "задним числом", когда уже знаешь... :-)
— SATtva (12/06/2007 21:34)   
P. S.: ну за неделю поди исправим?

Основное исправим, прочее оставим на закуску.

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

Лучше сваливайте свои наблюдения на страницу разработки движка. Поверьте, мне так проще будет самому отслеживать прогресс и подлежащие исправлению проблемы, чем искать их по всем топикам (коих уже не меньше дюжины). Я ведь не только этим сайтом занимаюсь, а ещё и на покушать себе зарабатываю, и иногда читаю обсуждения "по диагонали", могу что-то пропустить.
— unknown (12/06/2007 22:07)   

Вы, unknown, неужто полагаете что я всё это знал заранее? Каждую минуту я не знал какой будет следующий шаг, сообщение и идея. Это всё рождалось налету. и я совсем не предполагал что выльется в этом


Не скромничайте! Блестящая импровизация иногда ценится даже больше, чем хорошо продуманный план.

[/me] подумывает сменить свой ник на жертва киберклонирования.
А Вам в придачу к обещанному пиву подарить SATtve ящик корвалола, чтобы какой-нибудь очередной бал-маскарад не попортил ему нервы. А то смотрите, он ведь и разозлиться может!
— SATtva (12/06/2007 23:38, исправлен 12/06/2007 23:56)   
Я сделал некоторую проверку ников на похожесть при регистрации и добавлении комментария / правки страницы гостем. Вряд ли она даст стопроцентный результат, но от большинства проблем избавит.

Мы ищем в базе данных два варианта имени с заменёнными наборами символов (как из кириллицы в латиницу, так и обратно), а также оригинальный вариант без транслитерации:

Подскажите, если здесь чего-то не достаёт. У меня после пары бессонных ночей голова уже слабо соображает.
— spinore (13/06/2007 02:07, исправлен 13/06/2007 02:09)   
SATtva:
Лучше сваливайте свои наблюдения на страницу разработки движка.

Хорошо
unknown:
подумывает сменить свой ник на жертва киберклонирования.

"герой киберклонирования" звучит оптимистичнее :-)
unknown:
А Вам в придачу к обещанному пиву подарить SATtve ящик корвалола

Ещё есть волокардин, димидрол, валерианка, реланиум,...
unknown:
А то смотрите, он ведь и разозлиться может!

Не прежеивайте, у него хорошая выдержка. Кстати, unknown, а вас никогда не ломали/копрометировали?
SATtva:
Если бы я искал только выгоду, то этот сайт ныне вообще бы не существовал. ;-)

Насколько я понимаю, только те вещи, которые человек сделал в жизни бесплатно ради идеи в конечном счёте покажутся ему не бессмысленными в конце жизни. А деньги, это то что сгубило всё, всю жизнь протравило :-(
— spinore (13/06/2007 02:13)   
I l <-> 1

SATтva (тест)
— spinore (13/06/2007 02:22)   
unknown:
Не скромничайте! Блестящая импровизация иногда ценится даже больше, чем хорошо продуманный план.

Уже позже дошло, что надо было инсценировать приход подлинного SATtva'ы, его возмущёные реплики, апелляции к тому у кого хэш длинее и кто больше может подписать, потом появление ещё одного подлинного SATtva'ы с другой моделью реакции на происходящее, где каждый бы аппелировал к своим параметрам аккаунта, выдавая за верные, в итоге подлинность SATtva'ы стала бы определяться голосованием среди посетителей, а каждый бы из клонов SATtva'ы кричал "голосуйте за менчя! Я завтра восстановлю аккаунт и у меня будет 10.000 постов в рейтинге! И вам всем по 100 набавлю! А другой бы кричал "да это всё ернуда! Голосуйте за меня, я настоящий SATtva! Я вам дам возможность править все документы! У нас будет демократичный форум где все будут модераторами а пользователи будут отчаянно метаться между разными инстэнсами Саттв пытаясь выбрать лучшее ... В итоге всё сводится к полнейшему бардаку, в форуме общаются уже 6 разных инстэнсов SATtva'ы (именно столько их с учётом коллизий), каждый говорит полную чушь, все пользователи в растерянности от происходящего, под самый конец приходит тру истинный SATtva и падает в обморок. Занавес. -:)
Что-то в этом духе :-)
— unknown (13/06/2007 09:19, исправлен 13/06/2007 09:21)   
Не прежеивайте, у него хорошая выдержка. Кстати, unknown, а вас никогда не ломали/копрометировали?

Я каждый раз убеждаюсь и самостоятельно, и с чужой помощью, как легко это можно сделать в любой момент, что давно надоело относиться всерьёз ко всему этому "security theater".

К счастью мне ничего особо ценного не поручают.

каждый говорит полную чушь, все пользователи в растерянности от происходящего, под самый конец приходит тру истинный SATtva и падает в обморок. Занавес. -:)

Это уже не комедия, это киберапокалипсис какой-то :)
— unknown (13/06/2007 09:56, исправлен 13/06/2007 10:02)   
Кстати, на протяжении всей истории люди чем-то похожим занимались, только эта стратегия была придумана не для забавных игр:

Что-нибудь слышали про false-flag?

False flag[link4]

False flag operations are covert operations conducted by governments, corporations, or other organizations, which are designed to appear as if they are being carried out by other entities. The name is derived from the military concept of flying false colors; that is, flying the flag of a country other than one's own. False flag operations are not limited to war and counter-insurgency operations, and have been used in peace-time; for example, during Italy's strategy of tension.

Spy tradecraft

In espionage the false flag technique is used to recruit people into spying or stealing critical documents, by convincing them that they are working for a friendly government or their own government. The technique can also be used to catch a spy by having a loyal agent pose as a spy from the other side and approach someone suspected of spying.

Terrorism and false flag operations

Terrorist attacks may sometimes be in fact false flag operations.


Civilian usage:
Businesses/Political Campaigning


См. также black operations, black bag operations, sabotage, PSYOP...
— SATtva (13/06/2007 11:06, исправлен 13/06/2007 11:17)   
spinore:
SATтva (тест)

Буквы "t=т", "I=l" добавил.
— unknown (13/06/2007 11:41)   
Может помещать вновь зарегистрировавшихся пользователей в карантин с минимальным набором прав?

Хотя что потом с ними делать? Вручную подозрительных отслеживать? Так они хитрые, затаиться могут :-)
— mellon (13/06/2007 13:37)   


Зобанить мну! Зобанить! :D

Говоря по существу, у меня никакого умысла портить что-либо здесь не было (еслиб было, то сайт мигом в зловонную помойку превратился бы :D )

Проект сугубо тематический и ориентирован на дружеское общение по делу :)
Строго говоря, заинтерисован в этом проекте только благодря просветительской деятельности SATtva и unknown: благодаря SATtva заинтерисвался своей безопасностью, а unknown помог стать профессиональным параноиком :D

Но SATtva сам предложил протестировать не проект, а движок, который очевидно предназначен не только для этого проекта, но и для совершенно других, подчас очень агрессивных сред :) А раз так, то и было решено проверить его на прочность :)
Но, действия spinore всётаки осуждаю: играться надо в специальной песочнице предназначенной для тестирования движка, а не по всему проекту :D
— unknown (13/06/2007 14:04)   
Но, действия spinore всётаки осуждаю: играться надо в специальной песочнице предназначенной для тестирования движка, а не по всему проекту :D

Боюсь тогда будут проблемы с мотивацией. В песочнице словно дитю малому играться неспортивно. Хулиганить так на самой грани :-) репутация проекта от этого не пострадает, он ведь некоммерческий, перед клиентами оправдываться не надо, а свои всё поймут им ещё на пользу пойдёт.

Тем более он ничего не поломал, ничего плохого не написал, так нафлудил малость.

Кроме того, это не произвело бы ТАКОГО впечатления. Ну была бы очередная дыра в движке и всё, потенциал которой до конца бы не осознали. А так всё очень наглядно в онлайне и можно о многом подумать.

Не осуждаю :-)
— spinore (14/06/2007 06:10)   
unknown:
Может помещать вновь зарегистрировавшихся пользователей в карантин с минимальным набором прав?

Хотя что потом с ними делать? Вручную подозрительных отслеживать? Так они хитрые, затаиться могут :-)

Ничего не понял. Запретить писать комменты в произвольных темах что ли? А редактировать документы итак могут толкьо члены группы OpenPGP, которая не столь многочисленна, и туда как я понимаю, попадают те, кто уже более-менее известен пользователям проекта.
Да, есть ещё более интересный вариант, который используется в "агрессивных средах" \© mellon\ – регистрация по личному запросу к администратору либо по его приглашению, причём людей с улицы не берут. Для данного проекта, думаю, это не имеет смысла. Как станет среда агрессивной – так и надо будет думать. Пока важно чтоб не было копрометации и возможности взлома сайта, а загадить можно любой форум при желании если постить разрешено.
В частности, возможность читать оригиналы подписанных сообщений – это большое добро, так как проверяя их, всегда можно сказать что к чему несмотря на взлом/копрометацию сайта.

mellon:
Говоря по существу, у меня никакого умысла портить что-либо здесь не было (еслиб было, то сайт мигом в зловонную помойку превратился бы :D )

Вот видите? Видите? Он уже нарывается! Я ж говорил...
mellon:
Но, действия spinore всётаки осуждаю

А за спинороцид статья есть...
unknown:
Ну была бы очередная дыра в движке и всё, потенциал которой до конца бы не осознали. А так всё очень наглядно в онлайне и можно о многом подумать.

Поднял вверх все свои 4 лапы чтобы поддержать :-)
— spinore (14/06/2007 06:16)   
unknown:
Кстати, на протяжении всей истории люди чем-то похожим занимались, только эта стратегия была придумана не для забавных игр

Я слышал вот о каких вещах, которые может быть имеют отношение к делу:
  • НЛП-тренинги для корпораций. И вообще всякие психологические тренинги, польза/вред от которых довольно спорны, и многие вообще после них инвалидами остаются.
  • Языковые игры, о которых нам рассказывали на лекциях по философии – я толком не помню что там, но так, слышал... Это философия 20-го века, кажется.
  • Собственно, театр, чем это всё и является.

— unknown (14/06/2007 08:53, исправлен 14/06/2007 08:57)   
Я не про НЛП, не про НЛО и не про прочие страшилки для обывателей.
По ссылкам как это кое-где принято не ходили, я совсем не про это, ну да ладно, проехали.

Ничего не понял. Запретить писать комменты в произвольных темах что ли? А редактировать документы итак могут толкьо члены группы OpenPGP,

Ну хотя бы подписи запретить временно использовать, хотя сам понимаю, что это бред.
Избавление от перхоти методом гильотины.

регистрация по личному запросу к администратору либо по его приглашению, причём людей с улицы не берут. Для данного проекта, думаю, это не имеет смысла. Как станет среда агрессивной – так и надо будет думать.

Закрытые клубы и сообщества быстро застаиваются и деградируют. Или какая-то масонская ложа получиться с надменной иерархией, вместо свободного общения пусть и с возможностью нарваться на слегка неадекватных субъектов. (без них тоже скучно).
— unknown (14/06/2007 08:59)   
А за спинороцид статья есть...

Тогда если spinore ещё разбушуется, отправим лечить его от спиноротоксикоза.
— spinore (14/06/2007 10:30)   
unknown:
По ссылкам как это кое-где принято не ходили, я совсем не про это, ну да ладно, проехали.

Я просто английский очень плохо знаю, особенно на общественные темы. Мне надо долго напрягаться чтоб перевести. Я читаю английские тексты не по специальности/компам толкьо если очень интересно/сильно_надо. То есть, проблема исключительно в языке.
unknown
Ну хотя бы подписи запретить временно использовать

За что такая немилость? Их и делали именно затем, чтоб могли их использовать всё, даже неавторизованные пользователи(!).
Или вы имеете в виду всё ту же атаку с подменами символов? Так SATtva уже вроде пофиксил сие (?)
unknown
Закрытые клубы и сообщества быстро застаиваются и деградируют.

В целом это правда, но не совсем: новые члены могут приходить, просто отбор должен быть хоть какой-то. Типа, есть один отстойник, который доступен всем, второй отстойник, куда попадают только проявившие себя хорошо в первом, и истиное место, куда приглашают только тех, кто хорошо себя проявил во втором отстойнике. Схема реально работает, новые члены появляются. Хотя надёжность клуба, возможно, не оправдывает геморрой связанный с вышеуказанным разделением на отстойнике.
unknown
Тогда если spinore ещё разбушуется, отправим лечить его от спиноротоксикоза.

Ну меня осталось забанить только здесь, на obsd.ru[link5] и на runetbsd.ru[link6] чтобы я перестал гнить на форумах :-)
В принципе, полезное дело будет. Когда меня на лоре зобанили я наконец-то вернулся к нормальной жизни :-))) А то просто жил там.
— SATtva (14/06/2007 10:46, исправлен 14/06/2007 10:57)   
Я сделал некоторую проверку ников на похожесть при регистрации и добавлении комментария / правки страницы гостем.

Раз уж в теме есть слово "эксплоиты", то добавлю от себя о своей же схеме. Эта защита даст результат только в том случае, если пытаться сымитировать никнэйм, написанный в одной раскладке. Если же в никнэйме (легитимном) изначально использовались похожие по начертанию подстановки, то его можно будет подделать, просто добавив ещё одну подстановку.

Например, если бы мой никнэйм был SATтva, достаточно было бы заменить вторую или последнюю "a" на кириллическую, чтобы проверка прошла.

Проблема предложенной[link7] схемы проверки в том, что она тестирует (на наличие в БД) только три варианта написания: 1) предложенный пользователем, 2) со всеми кириллическими подстановками, 3) со всеми латинскими подстановками. Т.е. без смешанных вариантов. Чтобы сделать полную защиту, требуется собрать массив всех комбинаций подстановок и проверять их все. Сие есть дурдом. Но если кто-нибудь предложит алгоритм (можно в псевдокоде), можно будет и сделать.
— spinore (14/06/2007 10:48)   
да, кстати по поводу бана, вспомнил:
Возникала у меня как-то в жизни ситуация когда нельзя было себя разрегистрировать.
Как говорится, это нужно не часто, но метко. В этом форуме есть такая возможность или только руками SATtva'ы?
— spinore (14/06/2007 10:57)   
SATtva:
Чтобы сделать полную защиту, требуется собрать массив всех комбинаций подстановок и проверять их все.

Это будет сделано в будущем? (по уму надо, конечно, именно так делать)
P. S.: вспоминается: "проще всего, конечно, запретить кириллицу..." © SATtva
— SATtva (14/06/2007 11:02)   
Только выносить ручками из каждой таблицы БД. Изначально в WackoWiki возможности удалить пользователя предусмотрено не было, а за недостатком прецедентов здесь я тоже данную возможность ещё не реализовал. Это, кстати, будет не так просто, как может показаться: простой delete from users where name = 'nickname' не пройдёт, поскольку имя останется владельцем каких-то документов, наблюдений и т.п.

Бана пока, кстати, тоже нет. :-)
— SATtva (14/06/2007 11:11)   
Чтобы сделать полную защиту, требуется собрать массив всех комбинаций подстановок и проверять их все.
Это будет сделано в будущем? (по уму надо, конечно, именно так делать)

Я тут намедни посмотрел реализации таких проверок в других веб-движках. К сожалению, ничего лучшего, чем у нас, не увидел. "По уму" действительно следует проверять все варианты. Труднее написать алгоритм для построения такого списка. Открыт для предложений.
— spinore (14/06/2007 11:14)   
SATtva:
простой delete from users where name = 'nickname' не пройдёт, поскольку имя останется владельцем каких-то документов, наблюдений и т.п.

ну и что. Во многих форумах при забанивании/удалении пользователя его комментарии/темы остаются. Коменты/темы трутся если нарушают правила/противоречат_личному_вкусу_админа, а бан соответствует просто запрету логиниться в таком случае. Удаление – тоже самое, толкьо запрет логиниться навечно.
— spinore (14/06/2007 11:47)   
SATtva:
Труднее написать алгоритм для построения такого списка. Открыт для предложений.

Не понял в чём проблема.
берём имя пользователя, находим все буквы, которые можно использовать для незаметной подмены – вы уже писали где-то этот список букв.
Далее для каждой из подменяемых букв мы знаем как найти для неё подмены из таблицы соответствий.
Конструируем функцию, которая по по номеру позиции в слове подменяемой буквы конструирует все возможные подмены этой буквы. пусть это функция fun0. И пусть эта функция умеет обрабатывать массив входных имён.
Вначале конструируем первое подменное имя, соответствующее первой подмене первой подменяемой буквы и вносим его в массив. это вызов SATtva – получили SАTtva. Других вариантов подменить Aнет. иначе бы получили массив имён. Полученное имя (массив в общем случае) – добавляем в массив подмен MAS.
Потом находим вторую подменную букву – в случае SATtva это буква T. Вариант один – подмена на Т. Эту подмену (в общем случае массив подменых имён, где подменена только вторая буква) добавляем в MAS, потом суём на вход функции fun0, то есть находим всевозможные комбинации где обе первые буквы подменены в произвольных комбинациях. Полученные подмены добавляем в MAS.
Теперь находим третью подменную букву, в случае SATtva – это буква t. И подмена будет SATтva. Суём SATтva в MAS, подаём на вход fun0 и получаем массив MAS со всевозможными подменами первых 3 подменяемых букв. Продолжаем пока не исчерпаются все подменяемые буквы.

Полученный массив MAS поэлементно сравниваем с каждым из существующих уже имён пользователей на сайте.
P. S.: можно сделать чтоб fun0 не обрабатывала массив – тогда надо будет вместо передачи массива вызывать её несколько раз дял каждого из элементов массива.
Улучшения, думаю, возможны, это – вариант слёту.
— spinore (14/06/2007 11:50)   
Дополнение: функция fun0 каждый раз вызывается со своим аргументом, соотвествующим номеру подменяемой буквы, например.
Идея, думаю, ясна если подумать
— unknown (14/06/2007 12:00)   
Предлагаю открыть страничку, где можно будет тестировать логины на похожесть, чтобы их потом не пришлось вычищать из реальной базы или не повторять спектакль, как spinore.

Т.е. вводим логин, нас или посылают или пишет, что якобы успешно зарегились, а рядом для сравнения можно выбирать на вывод строчка в строчку уже существующий логин и смотреть похоже внешне получилось или нет.
— spinore (14/06/2007 12:25)   
unknown:
чтобы их потом не пришлось вычищать из реальной базы или не повторять спектакль, как spinore.

Нет, повторный спектакль на никнэймах будет бояном:
[][link8]
unknown:
Т.е. вводим логин, нас или посылают или пишет, что якобы успешно зарегились, а рядом для сравнения можно выбирать на вывод строчка в строчку уже существующий логин и смотреть похоже внешне получилось или нет.

Достаточно имхо разработчику проверить исходник программы и провести ряд тестов. Это не настолько сложный алгоритм.
— spinore (14/06/2007 12:31)   
В предыдущем сообщении был боян нарисован после слова боян. Это его wiki съела.
— unknown (14/06/2007 12:50)   
Не для разработчиков, а для всех желающих. Может у кого-то возникнут какие-то идеи и он их захочет по быстрому опробовать.
— Федор (14/06/2007 12:57)   
На других форумах имя мотет состоять или только из латинских букв и цифр, или только из букв кириллицы и цифр. Проверить буквы на кириллицу или латиницу проще чем считать все комбинации замен.
— spinore (14/06/2007 13:57)   
unknown:
Не для разработчиков, а для всех желающих. Может у кого-то возникнут какие-то идеи и он их захочет по быстрому опробовать.

ну SATtva итак публикует исходники...
Вы бы, unknown лучше едлом помогли: набросали исходник, написали страницу для теста если считаете нужным...
Федор:
На других форумах имя мотет состоять или только из латинских букв и цифр, или только из букв кириллицы и цифр. Проверить буквы на кириллицу или латиницу проще чем считать все комбинации замен.

А у нас будет... по-уму а не как на других форумах. По крайней мере что в наших силах.
— SATtva (14/06/2007 14:10)   
Вы бы, unknown лучше едлом помогли

Нее, unknown, лучше едлом не занимайтесь, а реально помогите. :-))
— spinore (14/06/2007 14:32)   
echo "едлом" |sed 's/ед/де' <-опечатался малость при быстром наборе :-)
— Vadim_Z (16/06/2007 23:30)   
Предлагается следующий вариант алгоритма проверки на подмену:
ник с помощью списка букв и их подмен трансформируется в regexp, которому удовлетворяют все подмены ника
например: SATtva --> S[AА][TТ][tт]v[aа]

после чего данным regexp-ом осуществляется поиск по базе пользователей. Если найдено, то ловим за руку и бьем канделябром :)

Данный алгоритм аналогичен тому, что предложил ув. spinore, однако, по-видимому, более эффективен за счет использования стандартных возможностей.
— _Lemtoks (17/06/2007 19:58)   
http://www.phpbbguru.net/community/topic10157.html
— SATtva (17/06/2007 20:47)   
Блин, где ж вы раньше-то были? Ладно, вот что я за сегодня с нуля написал (экспоненциальная сложность (вначале вообще была суперэкспоненциальная :-), но, мне кажется, есть потенциал для дальнейшей оптимизации; в любом случае, это лучше, чем поиск регэкспом по БД):

— SATtva (17/06/2007 22:09)   
Да, если кто-то захочет испытать возможности (не желая тестировать функцию напрямую в среде PHP), воспользуйтесь deniedформой регистрации[link9]: достаточно ввести только никнэйм и подтвердить форму. Если в сообщении об ошибке вы получите уведомление, что данное имя занято, значит, функция сработала. Если же получите множество других ошибок, но в их числе сообщения о занятом имени не будет, значит, подлог проскочил. Удачи!
— Vadim_Z (17/06/2007 22:33)   
Ув. SATtva!
К сожалению, я не знаю языка PHP, однако представляю в общих чертах Ваш алгоритм.
Быстрее он или медленнее поиска regexp-ом по базе, не знаю. Неплохо бы сравнить, думаю, зависит от реализации regexp-engine.
Могу предложить другой порядок перебора — за каждым ником в базе закрепить соответствующий regexp (и закешировать их). При регистрации нового перебрать всю базу, сличая
regexp-ы пользователей с проверяемым ником. Если всё успешно, новый ник добавляется вместе с соотв. regexp-ом.
— SATtva (17/06/2007 22:45)   
Vadim_Z, спасибо за идеи, буду разбираться ближе к концу недели. Поиск регэкспом я оттестирую. Тут, вероятно, будет компромисс по скорости: использование регэкспов в SQL даст лучшую производительность при небольшом числе пользователей (как сейчас) практически независимо от длины никнэйма; использование же алгоритма выгоднее при больших базах пользователей, но на длинных никнэймах может накладывать существенные штрафы (опять же, с текущим уровнем оптимизации).
— spinore (18/06/2007 02:26, исправлен 18/06/2007 02:34)   
2 SATtva
А вот и ещё один небольшой косяк с диагностикой:
После того как я удалил все ключи клонов с сайта, и поменял свой, вот что получил – вы видите в диагностике этого сообщения...

Может ли кто-нибудь предложить простейшую атаку с использованием этой уязвимости?
Или всё-таки это глюки хэша?
— spinore (18/06/2007 02:40)   
у меня даже есть предположение из-за чего это могло бы быть...
Получилось, что сайт из-за того что ключ был на двух аккаунтах а я быстро их отредактировал, последовательность оказалась такой что удаление прошло после загрузки... хотя всяко может быть.

Есть идеи перезагрузить ключ но не буду, чтоб показать что такое что наблюдается – возможно.
— spinore (18/06/2007 03:00, исправлен 18/06/2007 14:47)   
Я тут ещё одну забавную вещь сделал.
раз уж такие дела – решил зайти к себев профиль и попытаться импортировать свой публичный ключ оттуда.
Жму, открывается длиннющая страница... Сохраня её как файл и импортирую в gpg, вот что вижу:



ну, думаю – мож это у всех так и должно быть? Хорошо, лезу в профиль к unknown'у, импортирую его ключ:

— spinore (18/06/2007 03:05)   
Я надеюсь что до приезда SATtva'ы кто-нибудь предложит хороший надёжеый эксплоит под эту вещь, чтоб можно было повторить на бис?

Кстати, когда я импортировал файл с ключами в gpg, о чём говорилось в предыдущем посте, увидев неадекватной длины пост первая мысль была "может быть, это и есть приватные ключи пользователей? Или хотя бы тот самый "секрет" который от нас скрывает SATtva об этом форуме?" -)
— spinore (18/06/2007 03:06)   
На случае если эффект потом пропадёт, копирую шапку предыдущего комментария:
spinore (18/06/2007 03:05) профиль <#> правка удалить
отпечаток ключа: ...02B8F1C5A4FA9B71
неопределенная ЭЦП ключом 0xA4FA9B71, не зарегистрированным на сайте
— spinore (18/06/2007 03:11)   
да, и если заглянуть ко мне в профиль то можно увидеть чудо: отпечаток у ключа есть, а key id у него нет ;-)
Хотя, когда захожу самк себе в настройки он показывает всё корректно: и кейид, и фингер..
— unknown (18/06/2007 09:09)   
2 spinore: спамеры скажут вам спасибо
— SATtva (18/06/2007 11:56, исправлен 06/08/2007 10:40)   
А вот и ещё один небольшой косяк с диагностикой:
После того как я удалил все ключи клонов с сайта, и поменял свой, вот что получил – вы видите в диагностике этого сообщения...

Может ли кто-нибудь предложить простейшую атаку с использованием этой уязвимости?
Или всё-таки это глюки хэша?

Как чувствовал, нельзя вас одних оставлять. Покалечитесь.

Я уже отвечал Вам на подобный вопрос. Вот что произошло в данном случае. Из того, что я вижу в БД, Ваш настоящий отпечаток почему-то превратился в отпечаток одного из клонов (конкретно, псевдо-unknown'а). Подозреваю, что в ходе своих экскрементов экспериментов Вы вначале заменили свой настоящий ключ на ключ клона (закрытые части обоих ключей Вам известны), а затем попытались удалить ключ клона из его профиля. Это привело к тому, что ключ был просто удалён со связки, а поле с отпечатком ключа в профиле клона (которое и связывает пользователя и ключ на связке сервера) было очищено, но Ваше поле с тем же отпечатком — нет. Короче, запороли Вы свой профиль, spinore, и даже не знаю, чем Вам помочь в данном случае. Может ампутировать что-нибудь? :-)

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

Да, профиль я Вам подчистил, можете обратно ключ загружать.



Также запускаю обновлённую версию функции проверки похожих никнэймов по мотивам идеи[link10] Vadim'a_Z (выражаю ему огромную благодарность за конструктивное предложение). Сам алгоритм (сильно упрощённая версия предыдущего без всех этих диких циклов) только строит regexp, определяющий условия поиска, а выборка по выражению производится в SQL-запросе. С учётом количества зарегистрированных пользователей показывает великолепный результат по скорости исполнения.

— spinore (18/06/2007 14:23)   
2 SATtva
Реально можно рассмотреть как то, что у меня было 3 аккаунта, на каждом был один из моих ключей.
Потом я решил ключи с тех акаунтов удалить, а свой заменить на другой свой ключ. В общем-то все
действия были легитимны и совершались не ради эксперимента. Ну ладно, если отловили то хорошо.

А что касется Vadim_Z – я кинул ему ссылку на свой алгоритм, после чего он ответил что можно много проще,
вот я и попросил его запостить...

Что касается ящиков (спамеров)... может кто отредактирует сообщение? Хотя бы тот же unknown...

(не подумал я об этой стороне дела, извиняюсь...)
— spinore (18/06/2007 18:15)   
2 SATtva
А вообще сам факт что в случае ненахождения моего ключа сайт выдал[link11] списокключей всех участников – это нормально?
— SATtva (18/06/2007 19:12)   
Скажем так, я на это не рассчитывал. Ошибка исправлена: если отпечаток и ID ключа не переданы, то система и не вернёт ничего вместо того, чтобы вываливать всё содержимое связки.
Гость (23/12/2009 22:25)   
Эпохиальный баг. Комментарий от 01/01/1970 на pgpru. Скриншот[link12]. Время обернулось вспять, и снова началась "компьютерная эра": SATtva, спасайте!
— SATtva (23/12/2009 22:39, исправлен 23/12/2009 22:50)   

TIME PARADOX! Аааа, мы все умрём!!!1адиндадин


Уже ничего такого на той странице не вижу, похоже на причуду кэша. Но всё равно спасибо за бдительность.

Гость (23/12/2009 23:23)   
Оно держалось минуту или больше, сохранялось когда я перезагружал страницу. Потом – да, исчезло. Но дата-то не случайная, вы же понимаете...
— SATtva (24/12/2009 09:41)   
Ну, я о кэше на стороне сайта. Видимо, часть данных инвалидировалась, и осталась только такая странная ссылка.
— unknown (24/12/2009 09:55)   
Такое было и раньше. Появляется сразу после удаления комментов, возможно при других видах модерирования темы, но кажется не всегда, а при какком-то стечении обстоятельств.
— spinore (26/04/2010 11:53)   
Update: Тыц[link13], Тыц[link14]. Btw, ошибка лежала на поверхности, странно что мы никогда не пытались протестить движок на этот счёт.
— spinore (26/04/2010 12:05)   
И ещё до кучи: тыц[link15] и тыц[link16]. unknown уже топики откатил обратно, thanks.
— SATtva (26/04/2010 12:06)   
Тыц.[link17]
Гость (29/06/2010 06:11)   
Тыц :)
— SATtva (29/06/2010 11:12)   
Лог не подтверждает никаких проблем. Куда пользователь отправил сообщение, туда оно и запостилось.

Ссылки
[link1] https://www.pgpru.com/Новости/Проект/2006/11-03-ЗащитаУчетныхЗаписейПользователейСайта

[link2] http://dump.ru/files/8/8552129268/

[link3] https://www.pgpru.com/Новости/Проект/2007/05-02-РазъяснениеНочНогоИнцидента

[link4] http://en.wikipedia.org/wiki/False_flag

[link5] http://www.obsd.ru

[link6] http://www.runetbsd.ru

[link7] https://www.pgpru.com/comment15817

[link8] https://www.pgpru.com/proekt/poljzovateli?profile=

[link9] https://www.pgpru.com/glavnaja/registracija

[link10] https://www.pgpru.com/comment16045

[link11] https://www.pgpru.com/Comment16100

[link12] http://omploader.org/vMzJkZg/oujaspgp.png

[link13] http://omploader.org/vNGEzMw/pgpru_0day1.png

[link14] http://omploader.org/vNGEzNA/pgpru_0day2.png

[link15] http://omploader.org/vNGEzZA/pgpru_0day3.png

[link16] http://omploader.org/vNGEzZQ/pgpru_0day4.png

[link17] https://www.pgpru.com/forum/sodejjstvie/sozdanievforumenovojjtemyssuschestvujuschimnazvaniem