The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

Let's Encrypt перешёл к проверке с использованием разных под..., opennews (?), 23-Фев-20, (0) [смотреть все]

Сообщения [Сортировка по времени | RSS]


50. "Let's Encrypt перешёл к проверке с использованием разных под..."  +/
Сообщение от Аноним (25), 23-Фев-20, 16:43 
> Я абсолютно уверен, что фирмварь в моём железе не будет пытаться утянуть реквизиты моей банковский карты или аккаунт в социалке, и рекламу впихивать на загружаемые веб-страницы - тоже.

Я тоже уверен в этом, если речь идёт о биосе. Это низкий уровень, системный. Для малвари на этом уровне важна возможность взять под контроль ОС и спрятать другое вредоносное ПО, которое уже и будет и инфу тырить, и компилируемые программы анализировать и инфицировать, и факт компрометации скомпилированных программ прятать.

>И что это же не будет делать софт из репозитириев Дебиана - тоже.

А вот в этом я совсем не уверен. Софт из репозиториев дебиана собран компилятором. И невозможно быть уверенным в его невредоносности, если он сам может быть собран вредоносными инструментами. Инфицировав тулчейн, собирающий дебиан, ты инфицируешь весь софт, собранный им, то есть дебиан. Инфицировав дебиан ты инфицируешь всех пользователей дебиана, включая всех разрабов, а также другие дистры, разрабы которых сидят на дебиане. Инфицировав всех разрабов ты предотвращаешь возможность обнаружения ими компрометации. Всё, цикл замкнулся, уробурос укусил свой хвост. Теперь чтобы обнаружить компрометацию придётся сканить HDD неинфицированным софтом. При этом можно заражать только большие и сложные бинари, в которых хрен вы обнаружите вредоносную модификацию и сделать их несобираемыми версиями компиляторов до заражения всего мира, тогда референсного чистого бинаря не будет в принципе, с которым можно bit-per-bit сравнить.

Ответить | Правка | Наверх | Cообщить модератору

54. "Let's Encrypt перешёл к проверке с использованием разных под..."  +/
Сообщение от Crazy Alex (ok), 23-Фев-20, 17:34 
Теоретически да. А на практике - где-то да засветились бы уже. А теоретически игры ума как-то не интересны
Ответить | Правка | Наверх | Cообщить модератору

58. "Let's Encrypt перешёл к проверке с использованием разных под..."  +/
Сообщение от Аноним (25), 23-Фев-20, 18:20 
>А на практике - где-то да засветились бы уже.

А вы думаете есть желающие за такую цену искать чёрных лебедей? Вы всё ещё надеетесь вот что вот за вас лично кто-то это сделает?

Ответить | Правка | Наверх | Cообщить модератору

88. "Let's Encrypt перешёл к проверке с использованием разных под..."  +/
Сообщение от Ordu (ok), 24-Фев-20, 01:20 
> А вот в этом я совсем не уверен. Софт из репозиториев дебиана собран компилятором. И невозможно быть уверенным в его невредоносности, если он сам может быть собран вредоносными инструментами.

Возможно. Если отказаться от бинарной логики -- а от неё надо отказаться, потому что иначе нам про всё вообще придётся сказать "невозможно быть уверенным" -- то "быть уверенным" превращается в вероятностную оценку истинности высказывания.

> Инфицировав всех разрабов ты предотвращаешь возможность обнаружения ими компрометации.

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

> Теперь чтобы обнаружить компрометацию придётся сканить HDD неинфицированным софтом.

Это если у компилятора есть мозги, то может быть. Но у компилятора нет мозгов, в нём есть лишь алгоритмы, а алгоритмы тупые. А раз так, значит при определённых условиях они начнут творить пургу. Дальше дело лишь в частоте возникновения этих определённых условий, но эта частота будет неизбежно расти по мере роста распространённости данного компилятора.

> При этом можно заражать только большие и сложные бинари, в которых хрен вы обнаружите вредоносную модификацию и сделать их несобираемыми версиями компиляторов до заражения всего мира, тогда референсного чистого бинаря не будет в принципе, с которым можно bit-per-bit сравнить.

Какая разница какого размера бинарь? Ты когда-нибудь ковырял непонятные баги? Тебе не случалось в процессе вваливаться в такие глубины фрустрации, когда ты начинаешь делать дурацкие изменения в коде, чтобы посмотреть как они по-дурацки же изменят поведение программы? Это уже чистой воды метод тыка: ты знаешь как программа сфейлится, если поменять "int a" на "size_t a", но ты уже ни в чём не уверен, и даже в своём знании, и поэтому всё равно берёшь и пробуешь это изменение. Если такие рандомные изменения наложатся на изменения привносимые компилятором...

Или прикинь, есть такая штука как профайлинг. Есть разные подходы к этому, но один из них -- это в рандомные моменты останавливать программу, и записывать IP (Instruction Pointer) точки останова. После этого, если мы посмотрим какие адреса попадались чаще, а какие реже, мы сможем судить о том, где и сколько времени программа потратила в процессе выполнения. Если твой компилятор не пофиксил профайлер, чтобы тот не учитывал бы адреса, по которым располагается вредоносный код, то этот вредоносный код начнёт светиться. Но профайлеры бывают разные, и бывают очень дорогие профайлеры, и люди реально платят за них. Как ты пофиксишь все?

А фаззеры? Ну вот прикинь, фаззер играется с тем, что он запихивает в программу, пытаясь найти условия, которые позволят прогонять программу по любому возможному пути выполнения. Если в программе есть вредоносная нагрузка, то фаззер (ничего не зная о вредоносности) попытается подобрать условия для активации её. Если ему не удастся, он об этом сообщит, предположив что это недостижимый код. Если ему это удастся, он начнёт подбирать условия для того, чтобы эта вредоносная нагрузка сделала бы всё, на что она способна. Тут крайне сложно не спалиться, не привнести никаких странностей в отчёт фаззера. И фаззеры, опять же, бывают разные.

Короче, чем удачнее проект по инфецированию компилятора, тем ближе этот проект к провалу.

Ответить | Правка | К родителю #50 | Наверх | Cообщить модератору

96. "Let's Encrypt перешёл к проверке с использованием разных под..."  +/
Сообщение от Аноним (25), 24-Фев-20, 09:50 
>Но профайлеры бывают разные, и бывают очень дорогие профайлеры, и люди реально платят за них. Как ты пофиксишь все?

Для профайлеров фикс не такой большой нужен. Только распознать метку, внедрённую в код, и скрыть помеченный код. Разумеется, сам код, который в профайлере выполняет скрытие, тоже помечен. Фаззер тоже можно пропатчить.

Единственный недостаток для атакующего - это требует фуллтайм работы некоторого коллектива, но это явно доступно любой небанановой (а возможно что и банановой тоже) республике.

>Если такие рандомные изменения наложатся на изменения привносимые компилятором...

Компилятор - не сильный ИИ. Все патчи реалистично проектировать исключительно человеком на определённые куски кодовой базы. А при изменении человеком кода, затрагивающего нужный кусок опасным образом достаточно вывалить ошибку пострашнее и понепонятнее. Очень трудно будет понять, в чём действительно дело, если твои инструменты тебя намеренно вводят в заблуждение. Пока он там возиться будет, пытаясь разобраться, откуда эта ошибка, команда из АНБ напишет новый патч и в новой версии компилятора или либ ошибка волшебным образом исчезнет. Разраб обрадуется, ему работать надо, а не чужой говнокод отлаживать.

Ответить | Правка | Наверх | Cообщить модератору

105. "Let's Encrypt перешёл к проверке с использованием разных под..."  +/
Сообщение от Ordu (ok), 24-Фев-20, 11:49 
>>Но профайлеры бывают разные, и бывают очень дорогие профайлеры, и люди реально платят за них. Как ты пофиксишь все?
> Для профайлеров фикс не такой большой нужен. Только распознать метку, внедрённую в
> код, и скрыть помеченный код.

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

> Разумеется, сам код, который в профайлере
> выполняет скрытие, тоже помечен. Фаззер тоже можно пропатчить.

Как ты пропатчишь профайлер, если у тебя нет его сорцов, и даже за бинари тебе придётся отдать сотни тысяч нефти? Как ты пропатчишь пропатченный профайлер, который был пропатчен потому что разрабу очень специфичный вид профайлинга понадобился? Как ты пропатчишь наколенный профайлер, который разраб создал потому что ему заняться было нечем, или потому что он хотел понять, как пишут профайлеры?

>>Если такие рандомные изменения наложатся на изменения привносимые компилятором...
> Компилятор - не сильный ИИ. Все патчи реалистично проектировать исключительно человеком
> на определённые куски кодовой базы. А при изменении человеком кода, затрагивающего
> нужный кусок опасным образом достаточно вывалить ошибку пострашнее и понепонятнее. Очень
> трудно будет понять, в чём действительно дело, если твои инструменты тебя
> намеренно вводят в заблуждение.

Если вывалится ошибка пострашнее и понепонятнее, то где-нибудь будет создан тред с заголовком "wtf", где вскоре соберутся люди, которые воспринимут "страшно и непонятно" как долгожданный вызов своему интеллекту, и начнут копать.

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

> Пока он там возиться будет, пытаясь разобраться, откуда эта ошибка, команда из АНБ напишет новый патч и в новой версии компилятора или либ ошибка волшебным образом исчезнет. Разраб обрадуется, ему работать надо, а не чужой говнокод отлаживать.

Эээ нет. Тут ты просто не понимаешь разрабов. Да, разраб в режиме "дедлайны горят" будет рассуждать именно так. Но всегда есть разрабы, для которых "волшебным образом ошибка исчезла" -- это отличная возможность сравнить "исчезла" с "не исчезла" и понять, что изменилось. Плюс, если ты начинаешь распространять патчи, то как ты это будешь делать? У сотен и тысяч разработчиков стоят пропатченные компиляторы, как их все исправить? Отметь, тебе ведь придётся править и, например, гентушные компиляторы, которые упорно собираются из сорцов. Если ты не пропатчишь их, то ты дашь отличную возможность сравнивать дебиановский компилятор с гентушным и искать различия -- это огромная дыра в твоей теории заговора.

Ответить | Правка | Наверх | Cообщить модератору

124. "Let's Encrypt перешёл к проверке с использованием разных под..."  +/
Сообщение от Аноним (25), 24-Фев-20, 20:43 
>Как ты пропатчишь профайлер, если у тебя нет его сорцов, и даже за бинари тебе придётся отдать сотни тысяч нефти?

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

>Как ты пропатчишь пропатченный профайлер, который был пропатчен потому что разрабу очень специфичный вид профайлинга понадобился?

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

>Как ты пропатчишь наколенный профайлер, который разраб создал потому что ему заняться было нечем, или потому что он хотел понять, как пишут профайлеры?

Разрабу наколенного профайлера делать больше нечего, кроме как им GCC профайлить.

>Если вывалится ошибка пострашнее и понепонятнее, то где-нибудь будет создан тред с заголовком "wtf", где вскоре соберутся люди, которые воспринимут "страшно и непонятно" как долгожданный вызов своему интеллекту, и начнут копать.

Если ошибка через день исчезнет после обновления версии компилятора, то никто даже не полезет выискивать, из-за чего в компиляторе такое было.

>Понятно, что ситуации бывают разные, и иногда не до того, дедлайны горят и надо сделать лишь бы работало.

В бизнесе всегда всё нужно уже вчера. Это гонка наперегонки, не впереди ты - деньги получают конкуренты и усиливаются ещё больше. Положительная обратная связь.

> Отметь, тебе ведь придётся править и, например, гентушные компиляторы, которые упорно собираются из сорцов.

Если у тебя весь мир инфицирован, в смысле все машины имеют агент, заражающий компилятор так, чтобы он заражал компиляторы и программы, то патчи можно наложить всем автоматически. Есть проблема с обновлениями патчей - некоторые машины могут быть без сети.

Ответить | Правка | Наверх | Cообщить модератору

130. "Let's Encrypt перешёл к проверке с использованием разных под..."  +/
Сообщение от Ordu (ok), 24-Фев-20, 21:56 
>>Как ты пропатчишь профайлер, если у тебя нет его сорцов, и даже за бинари тебе придётся отдать сотни тысяч нефти?
> Если контроллировать машину, на которой этот профайлер собирается, и эта машина подключена
> к инету, то ни своровать код, ни пропатчить профайлер проблемы большой
> не будет.

Не, это если контролировать _все_ машины, на которых этот профайлер собирается. Если ты контролируешь лишь часть, то ты можешь столкнуться с тем, что разработчики заметят, что разные сборки профайлера выдают разные результаты.

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

Вполне вероятно, да. Но если это повторится сто раз, то это будет менее вероятно.

>>Как ты пропатчишь наколенный профайлер, который разраб создал потому что ему заняться было нечем, или потому что он хотел понять, как пишут профайлеры?
> Разрабу наколенного профайлера делать больше нечего, кроме как им GCC профайлить.

Это ещё почему? gcc -- это неплохая реалистичная тестовая нагрузка на процессор, которая всегда под рукой.

>>Если вывалится ошибка пострашнее и понепонятнее, то где-нибудь будет создан тред с заголовком "wtf", где вскоре соберутся люди, которые воспринимут "страшно и непонятно" как долгожданный вызов своему интеллекту, и начнут копать.
> Если ошибка через день исчезнет после обновления версии компилятора, то никто даже
> не полезет выискивать, из-за чего в компиляторе такое было.

Ещё раз говорю: ты не понимаешь менталитета исследователя. Если оно внезапно и необъяснимо пропадёт, то от этого ещё интереснее.

>>Понятно, что ситуации бывают разные, и иногда не до того, дедлайны горят и надо сделать лишь бы работало.
> В бизнесе всегда всё нужно уже вчера. Это гонка наперегонки, не впереди
> ты - деньги получают конкуренты и усиливаются ещё больше. Положительная обратная
> связь.

Это ты к чему сейчас сказал?

>> Отметь, тебе ведь придётся править и, например, гентушные компиляторы, которые упорно собираются из сорцов.
> Если у тебя весь мир инфицирован, в смысле все машины имеют агент,
> заражающий компилятор так, чтобы он заражал компиляторы и программы, то патчи
> можно наложить всем автоматически. Есть проблема с обновлениями патчей - некоторые
> машины могут быть без сети.

Там очень много проблем с наложением патчей. Их надо разослать так, чтобы никто ни при каких настройках файрволов ничего бы не заметил. Чтобы никто бы не возмутился в зоопарке используемых версий компиляторов, ядер, библиотек, систем инициализаций, пакетных менеджеров. Нужно чтобы это произошло в весьма сжатые сроки, потому что если в мире будут существовать обновлённые компиляторы и необновлённые, то они будут генерить разные результаты, а это огромное палево: для исследователя безопасности изучать разницу гораздо переспективнее.

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

Ответить | Правка | Наверх | Cообщить модератору

138. "Let's Encrypt перешёл к проверке с использованием разных под..."  +/
Сообщение от Аноним (25), 25-Фев-20, 00:07 
>>>Как ты пропатчишь профайлер, если у тебя нет его сорцов, и даже за бинари тебе придётся отдать сотни тысяч нефти?
>> Если контроллировать машину, на которой этот профайлер собирается, и эта машина подключена
>> к инету, то ни своровать код, ни пропатчить профайлер проблемы большой
>> не будет.
> Не, это если контролировать _все_ машины, на которых этот профайлер собирается.

Именно.

>Если ты контролируешь лишь часть, то ты можешь столкнуться с тем, что разработчики заметят, что разные сборки профайлера выдают разные результаты.

Да. Но разработчики профайлеров, компиляторов, отладчиков, декомпиляторов, гипервизоров, биосов - это приоритетные цели.

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

> Вполне вероятно, да. Но если это повторится сто раз, то это будет менее вероятно.

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

> Это ещё почему? gcc -- это неплохая реалистичная тестовая нагрузка на процессор, которая всегда под рукой.

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

> Ещё раз говорю: ты не понимаешь менталитета исследователя. Если оно внезапно и необъяснимо пропадёт, то от этого ещё интереснее.

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

> Это ты к чему сейчас сказал?

К тому что даже если дедлайны не горят, заниматься непрофильными исследованиями "шо там у разрабов компилятора за ошибка появилась и исчезла" в рабочее время ни один босс не позволит. "Исчезла, бизнес-процессы не блокирует - просто отлично, возвращайтесь к работе!" - скажет любой босс.


> Там очень много проблем с наложением патчей. Их надо разослать так, чтобы  никто ни при каких настройках файрволов ничего бы не заметил.

Но и файрволы, и DLP тоже можно пропатчить. Это если предположить, что ресурсы, выделенные на этот проект, достаточны. Я оценить ресурсы, необходимые для его реализации, не могу. Но явно меньше тысячи человек на фуллтайм требуется. АНБ точно по карману: AAA игры сравнимое количество разрабов делает.

>Чтобы никто бы не возмутился в зоопарке используемых версий компиляторов, ядер, библиотек

Релевантно.

>систем инициализаций, пакетных менеджеров.

Нерелевантно.

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

Да. Спалиться можно. Но исследователей безопасности в мире не так много, и все заняты работой над конкретной программой. И скорее всего не над той, которые атакующему надо забэкдорить. Эксплоиты обычно ищут в браузерах, частях ОС, доступных из браузеров, сетевых сервисах, сетевом стэке, офисных пакетах и прочем прикладном софте, которым открывают что попало скачанное из инета, гипервизорах и всяком DRM типа SGX. И опять же, к исследователям безопасности можно найти особый подход.

> Тут столько граблей на пути, что обязательно что-нибудь пойдёт не так.

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

Ответить | Правка | Наверх | Cообщить модератору

143. "Let's Encrypt перешёл к проверке с использованием разных под..."  +/
Сообщение от Ordu (ok), 25-Фев-20, 02:09 
>>Если ты контролируешь лишь часть, то ты можешь столкнуться с тем, что разработчики заметят, что разные сборки профайлера выдают разные результаты.
> Да. Но разработчики профайлеров, компиляторов, отладчиков, декомпиляторов, гипервизоров,
> биосов - это приоритетные цели.

Нет. Приоритетные цели -- это _потенциальные_ разработчики профайлеров, компиляторов... и далее по списку. В приоритете любой Васян, которому приспичит поковырять недра компилятора, или написать свой компилятор, или свой отладчик, или гипервизор. Любой такой Васян может напороться на странность, забить на свой проект компилятор-just-for-fun и заняться ковырянием непонятности, на которую он напоролся.

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

Тут ты сильно всё упрощаешь. Невозможно составить список всех продуктов. Разработчики вовсе не сидят все на одинаковых компиляторах и тем более на одинаковых версиях компиляторов. Они не пользуются одинаковыми тулзами, типа дебаггеров, профайлеров, бла-бла-бла. Каждый пользуется тем, что ему удобнее. У них при этом могут быть самописные утилиты. Любые из этих утилит могут не перекомплироваться годами -- нафига мне нужен распоследний gcc, если я не пользуюсь новыми фичами C? Разработчики могут работать с нескольких машин -- ноут, домашний десктоп, десктоп на работе, сборочный сервер, и на всех этих машинах могут стоять разные версии софта. Уже здесь возникает такой зоопарк, что проблема возникнет не на этапе составления списка софта, а уже на этапе составления списка возможных режимов провала, которые надо учесть разрабатывая схему инфецирования.

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

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

>> Это ещё почему? gcc -- это неплохая реалистичная тестовая нагрузка на процессор, которая всегда под рукой.
> GCC - это сложная программа, аномалии в поведении которой могут иметь много
> причин. Для теста профайлера она не подходит. Для теста профайлера нужны
> маленькие программы с полностью предсказуемым поведением и производительностью.

Маленькие тоже нужны, но gcc интересен как раз тем, что он выполняет много io, и вычислительно он нагружает процессор, и всякие заморочные структуры в памяти выстраивает. Тут тебе и парсинг, и всё что угодно. Плюс, ежели ты пишешь профайлер, то далеко не факт, что ты заглядывал в код файрфокса, а вот с кодом gcc скорее всего плюс-минус знаком, и поэтому он гораздо лучше подходит для тестов.

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

>> Ещё раз говорю: ты не понимаешь менталитета исследователя. Если оно внезапно и необъяснимо пропадёт, то от этого ещё интереснее.
> Может и интереснее, но у людей свои проекты, исследовать что там налажали
> разрабы компилятора никому не упёрлось.

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

>> Это ты к чему сейчас сказал?
> К тому что даже если дедлайны не горят, заниматься непрофильными исследованиями "шо
> там у разрабов компилятора за ошибка появилась и исчезла" в рабочее
> время ни один босс не позволит. "Исчезла, бизнес-процессы не блокирует -
> просто отлично, возвращайтесь к работе!" - скажет любой босс.

Начхать на этого босса. Дома я могу заниматься тем, что мне больше нравится, а не только тем, что хочется боссу.

>> Там очень много проблем с наложением патчей. Их надо разослать так, чтобы  никто ни при каких настройках файрволов ничего бы не заметил.
> Но и файрволы, и DLP тоже можно пропатчить. Это если предположить, что
> ресурсы, выделенные на этот проект, достаточны. Я оценить ресурсы, необходимые для
> его реализации, не могу. Но явно меньше тысячи человек на фуллтайм
> требуется. АНБ точно по карману: AAA игры сравнимое количество разрабов делает.

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

>>Нужно чтобы это произошло в весьма сжатые сроки, потому что если в мире будут существовать обновлённые компиляторы и необновлённые, то они будут генерить разные результаты, а это огромное палево: для исследователя безопасности изучать разницу гораздо переспективнее.
> Да. Спалиться можно. Но исследователей безопасности в мире не так много, и
> все заняты работой над конкретной программой.

Исследователем безопасности становится любой, кто напоролся на непонятность, заинтересовался, разобрался в причинах, и причина оказалась отличной от его ошибки. Я не являюсь исследователем безопасности, но со мной бывает, что я напарываюсь на что-то непонятное, и начинаю копать, просто для того, чтобы понять. Когда-то давным-давно я запускал снифер на сетевом интерфейсе и смотрел какие пакеты пролетают, и находя непонятный мне пакет начинал разбираться. Не потому, что я искал дыры, просто потому, что мне было интересно. Если бы в этот момент компилятор решил бы скачать обновлённый свой патч, я бы очень заинтересовался неожиданными пакетами. Если бы они не повторились бы, я бы нашёл способ отлавливать их и писать в лог информацию когда они возникают.

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

А, ещё тут как-то была моя попытка скомпилировать rust'овый код под дос -- там всё вообще было интересно, и пришлось разбираться с тем, что там rustc генерит, что там генерит llvm, как научить и тот и этот генерить 16-bit код, бла-бла-бла.

Года два назад, я компилировал в ассемблер потому что мне было интересно, что получится если на rust'е писать под avr. Сейчас я планирую заняться компиляцией в ассемблер mips -- мне сам mips любопытен, и... ну и под mips некоторые rust'овые пакеты не собираются (особенно из криптографии), потому как там оптимизации на ассемблере, а mips недостаточно популярен, я хочу поспособствовать исправлению ситуации. Но ты ж понимаешь, что прежде чем писать на асме, я приложу все усилия к тому, чтобы написать на rust'е, получив ту же производительность. А это значит, многократные компиляции в ассемблер с повышенным уровнем оптимизации, эти компиляции будут непонятны и запутанны, поэтому я начну компилировать в бинарь, и потом отлаживать инструкция за инструкцией, ну и... и значит что ежели компилятор будет добавлять лишний код, то я начну искать зачем он добавляет, я начну искать причину добавления, чтобы устранить эту причину. Возможно этой причиной будет несовершенство оптимизатора, возможно что-то ещё. Может быть причина будет неустранима, может быть нет. Но если у меня возникнут сомнения, я пойду обсуждать это с другими.

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

>> Тут столько граблей на пути, что обязательно что-нибудь пойдёт не так.
> Грабель действительно более чем дофига. Но я не уверен, что те организации,
> которым такое по карману, могут это зафейлить. Они и не такое
> проворачивали прямо под носом своих конкурентов. Чего только краденная документация по
> манхеттанскому проекту стоит, которую тппа должны были яро охранять, не то
> что какой-то компилятор, на который всем нaсрaть, но компрометация которого де-факто
> компрометирует всё.

Я по пунктам разберу написанное тобой:

1. Сложность проекта такого рода оценивается количеством грабель, на которые можно наступить, и я не уверен, что хоть одна из организаций, которое такое по карману, когда-нибудь сталкивалась с таким количеством граблей.
2. На манхеттенский проект ты смотришь, но видишь не то, что нужно. Манхеттенский проект было гораздо проще сокрыть, нежели инфекцию всех компиляторов, и тем не менее это не удалось.
3. На компилятор и возможность его компрометации не всем нacpaть. Тут иногда проскакивают новости о компиляторе C, написанном на схеме, которая написана на C. Мне лень искать ссылки, но там вся фишка в том, чтобы сделать bootstrappable компилятор C. Как ты думаешь, зачем люди этим заняты? А воспроизводимые сборки софта -- это зачем, как ты думаешь? Одна из причин заниматься и тем и этим -- избавиться от влияния существующего компилятора. И даже если это не даёт 100% защиты, это добавляет ещё больше граблей на пути у тех организаций во всемогущество которых ты веришь.

Ответить | Правка | Наверх | Cообщить модератору

153. "Let's Encrypt перешёл к проверке с использованием разных под..."  +/
Сообщение от Аноним (25), 25-Фев-20, 10:47 
> Нет. Приоритетные цели -- это _потенциальные_ разработчики профайлеров, компиляторов...
> и далее по списку. В приоритете любой Васян, которому приспичит поковырять
> недра компилятора, или написать свой компилятор, или свой отладчик, или гипервизор.

Согласен.

> Любой такой Васян может напороться на странность, забить на свой проект
> компилятор-just-for-fun и заняться ковырянием непонятности, на которую он напоролся.

А вот в это верится с большим трудом.

> Тут ты сильно всё упрощаешь. Невозможно составить список всех продуктов.
>У них при этом могут быть самописные утилиты. Любые из этих утилит могут не перекомплироваться годами

Список всех самодельных и недодельных утилит действительно составить нельзя. Зато можно насоздавать заготовок таких утилит на гитхабе. Разумеется, это не гарантирует, что этими заготовками захотят пользоваться. И опять же, для работы никто не будет использовать самоделку, если есть готовая утилита и суть работы не есть в создании самоделки. Если чего-то не хватает, то скорее пропатчат готовую опенсорсную, и на неё опять же наложется патч.

>Разработчики вовсе не сидят все на одинаковых компиляторах и тем более на одинаковых версиях компиляторов.

Версий конечное число и друг от друга они мало отличаются. Большинство сидит на версиях из пакетов дистров, потому что пересобирать часами gcc/llvm самому мало кому упёрлось.


>Разработчики могут работать с нескольких машин -- ноут, домашний десктоп, десктоп на работе, сборочный сервер, и на всех этих машинах могут стоять разные версии софта. Уже здесь возникает такой зоопарк, что проблема возникнет не на этапе составления списка софта, а уже на этапе составления списка возможных режимов провала, которые надо учесть разрабатывая схему инфецирования.

Вполне возможно. Но это зависит от определения провала.

> А не надо никакой регулярности. Достаточно чтобы в год писалась бы сотня наколенных профайлеров. И даже не важна дальнейшая судьба этих профайлеров, даже не важно чтобы из них получалось что-нибудь завершённое, даже неудачная попытка написать профайлер может вскрыть странное поведение компилятора.

Согласен. Скрыть кампанию по массовому инфицированию скорее всего не получится даже при ресурсах АНБ.

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

Аргумент принят.

> Тебе придётся пропатчить все файрволлы. Для некоторых из них у тебя не будет сорцов.

Для файроволов можно патчить не сам файрвол, а механизм захвата. Для ОС можно пропатчить ядерные функции для работы с ФС: при вызове не из загрузчика вырезать маркированный код. Правда это открывает способ обхода: сделать кастомный загрузчик. Но если предположить, что это  этап "раскрутки" системы удастся, то получить исходники софта уже будет не проблема. А пропатчить их всех - это исключительно вопрос финансирования и количества специалистов достаточного уровня, готовых работать на такие организации.

Обновления не должны быть большой проблемой - модифицировать придётся относительно редко изменяемые части. Вроде считывания с диска.

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

Абсолютно верно. Далее всё зависит от вашей решимости ковырять конкретно эту дыру и от ресурсов, требуемых на это.


> 1. Сложность проекта такого рода оценивается количеством грабель, на которые можно наступить,
> и я не уверен, что хоть одна из организаций, которое такое
> по карману, когда-нибудь сталкивалась с таким количеством граблей.

Я тоже. Но я - пессимист.

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

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


> 3. На компилятор и возможность его компрометации не всем нacpaть. Тут иногда
> проскакивают новости о компиляторе C, написанном на схеме, которая написана на
> C. Мне лень искать ссылки, но там вся фишка в том,
> чтобы сделать bootstrappable компилятор C. Как ты думаешь, зачем люди этим
> заняты? А воспроизводимые сборки софта -- это зачем, как ты думаешь?
> Одна из причин заниматься и тем и этим -- избавиться от
> влияния существующего компилятора.

Вот это - очень хороший и правильный проект. Но реально заработает только если он будет self-hosted. То есть если есть доверенная железка, типа fpga, на которой софт-процессор, на котором крутится bare metal компилятор, получающий ввод с доверенных железок типа самодельного сканнера, подключённого к gpio, и выводящий на магнитную ленту.

Одна проблема - дорого.

Ответить | Правка | Наверх | Cообщить модератору

148. "Let's Encrypt перешёл к проверке с использованием разных под..."  +/
Сообщение от Аноним (-), 25-Фев-20, 06:01 
> Если контроллировать машину, на которой этот профайлер собирается,

...то всегда есть шанс что *удак-системщик соберет его таки на соседнем компе, притащит, и... таки затроллирует экспертов по всему )))

Ответить | Правка | К родителю #124 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру