OpenSSL это либа, а не отдельное приложение. Даже если она создает отдельный поток для какой-то там своей активности (как скажем делает x264), то все равно это всё будет находиться в одном адресном пространстве с моей программой, которая печатает на 3Д принтере и запускает пони в космос. Более того — у них даже менеджер памяти скорее всего будет один и тот же.
Если бы весь OpenSSL был в отдельном процессе, то эта уязвимость стала бы сразу на порядок менее критической — ведь вся бизнеслогика, все логины, пароли, номера кредиток и так далее, были бы от нее изолированы, лежали бы в другом, отдельном адресном пространстве, до которого из OpenSSL нельзя было бы добраться даже теоретически, даже если поменять его код ради этого.
Уязвимы бы были только те данные которые прошли через OpenSSL в данную сессию в явном (не шифрованном) виде. (тут сессия — сессия работы приложения, то есть от старта процесса с OpenSSL)
Процесса? Сколько угодно. Ибо в этом же процессе может быть еще и вся бизнес-логика, работа с графикой, звуком и управлением 3Д печатью в одном флаконе.
А может занимать совсем мало — если это мой личный hello world работы с сокетами.
SIGSEGV (если мы говорим о юниксах и им подобных типа линукса) возникает следующим образом — все зарождается в MMU, при попытке обратиться к адресу не отображенному в память, это сигнал (прервывание? никогда непосредственно с MMU не работал, надо будет попробовать) дергает за хвост ядро, которое уже обрабатывает эту ситуацию, если эта страничка в свопе, то она из свопа подгружается в ОЗУ, и прикладному процессу возвращается управление как будто ничего и не было, если же приложение не имеет прав на чтение/записть этой странички, или она вообще не была для него валидна (скажем через mmap не отображена), то приложению посылается сигнал SIGSEGV.
Соответственно SIGSEGV в случае heartbleed может возникнуть ровно по той же причине, по которой он может возникнуть и в случае обычного выхода за границу массива — наступили на страничку которая не отображена в память, либо к которой у нас нет прав на read.
Поэтому, иногда, в некоторых случаях, сегфолт тут таки возможен. Вероятность возникновения сегфолта при эксплуатации дыры сильно зависит от менеджера памяти данной конкретной софтины и того как активно им пользуются.
Либо куча должна выделяться не непрерывным куском адресного пространства. То есть некоторые диапазоны адресов «из середины» должны быть не отображены в память.
Грубо говоря, если мои секретные данные лежат только в диапазоне адресов за страницей не отображенной в память, то через эту уязвимость до них не добраться в принципе.
Плюс, насколько я понимаю, если не увлекаться malloc/free, то есть если расположение данных довольно статично и предсказуемов (в пулах), то сделать дамп всей памяти процесса через эту уязвимость не получится, просто потому, что скорее всего через уязвимость будут утекать одни и те же 64Кб данных.
Вообще то да. Атакующий не может знать как у меня распределение память, и не выйдем ли мы за пределы сегмента при попытке скопировать память. Да что там — мы и сами то не знам выйдем мы за сегмент или нет, зависит от того, как в данном конкретном случае.эта структура будет лежать в памяти, точнее — где будет лежать.
Собственно в си при случайном выходе за границу масссива (или просто обращении по не вал догму указателю) сегфолт бывает лишь иногда, а иногда просто чтение/запись не того что ожидалось. И это меняется от запуска к запуску приложения, и просто от раза к разу. Думаю каждый наблюдал подобное неоднократно в своих программах.
Однако в пользу моего предположения говорит тот факт, что в пункте (где подробно про облака) 6 нет ни слова про MS, есть только про Google. Да и вообще Microsoft больше нигде не упоминается.
А что в плане облаков было у MS в 2010 году? По моему, в этом пункте Джобс говорил о общей картине. Конкретно про облака у него тут: «6. MobileMe — Кью, SJ, Роджер Рознер»
В виде показаний датчиков. С достаточно высокой частотой семплирования. Это вначале, потом по этому делу строятся некие вычисляемые значения. Но в принципе там можно было бы вытащить через ML много больше, если иметь такой мозг как у того же Watson'a.
А каким боком тут английский язык — вообще не понятно :-)
А, так значит это таки не ML в общем виде, а просто вопрос-ответ на естественном (в данном случае только английском) языке. Как-то обучать тоже нельзя. Это совершенно не то, что мне надо. Спасибо.
Что вообще Watson может? То есть в смысле ML, что там есть? Его обучать можно? Например задачу восстановления регрессии он умеет? А как умеет? А что там можно подкрутить?
То есть хочется увидеть конкретный API, и возможности, а не общие слова про то, как Watson крут и как здорово он в healthcare поднаторел.
Вот небольшие примеры с описанием и кодом реализации — были бы очень в тему.
Если бы весь OpenSSL был в отдельном процессе, то эта уязвимость стала бы сразу на порядок менее критической — ведь вся бизнеслогика, все логины, пароли, номера кредиток и так далее, были бы от нее изолированы, лежали бы в другом, отдельном адресном пространстве, до которого из OpenSSL нельзя было бы добраться даже теоретически, даже если поменять его код ради этого.
Уязвимы бы были только те данные которые прошли через OpenSSL в данную сессию в явном (не шифрованном) виде. (тут сессия — сессия работы приложения, то есть от старта процесса с OpenSSL)
А может занимать совсем мало — если это мой личный hello world работы с сокетами.
Какая разница, пишешь ты foo[n] или же *(foo+n)?
Соответственно SIGSEGV в случае heartbleed может возникнуть ровно по той же причине, по которой он может возникнуть и в случае обычного выхода за границу массива — наступили на страничку которая не отображена в память, либо к которой у нас нет прав на read.
Поэтому, иногда, в некоторых случаях, сегфолт тут таки возможен. Вероятность возникновения сегфолта при эксплуатации дыры сильно зависит от менеджера памяти данной конкретной софтины и того как активно им пользуются.
Грубо говоря, если мои секретные данные лежат только в диапазоне адресов за страницей не отображенной в память, то через эту уязвимость до них не добраться в принципе.
Плюс, насколько я понимаю, если не увлекаться malloc/free, то есть если расположение данных довольно статично и предсказуемов (в пулах), то сделать дамп всей памяти процесса через эту уязвимость не получится, просто потому, что скорее всего через уязвимость будут утекать одни и те же 64Кб данных.
Собственно в си при случайном выходе за границу масссива (или просто обращении по не вал догму указателю) сегфолт бывает лишь иногда, а иногда просто чтение/запись не того что ожидалось. И это меняется от запуска к запуску приложения, и просто от раза к разу. Думаю каждый наблюдал подобное неоднократно в своих программах.
А это — просто «процесс» перекладывания из одного буфера в другой.
А каким боком тут английский язык — вообще не понятно :-)
В принципе я тоже хотел бы его приспособить для диагностики медицинской. Но у меня данные далеко не в виде запросов на человеческом языке.
Что вообще Watson может? То есть в смысле ML, что там есть? Его обучать можно? Например задачу восстановления регрессии он умеет? А как умеет? А что там можно подкрутить?
То есть хочется увидеть конкретный API, и возможности, а не общие слова про то, как Watson крут и как здорово он в healthcare поднаторел.
Вот небольшие примеры с описанием и кодом реализации — были бы очень в тему.
И в случае специализации шаблона Qt Creator 3.0 ведет себя также как и MSVS2012.