This media is not supported in your browser
VIEW IN TELEGRAM
2018 is actually came!
TDLib - официальная библиотека для создания клиентских приложений от Telegram.
Telegram выпустил официально кросс-платформенную библиотеку для создания клиентсикх приложений и взаимодействия с серверной частью мессенджера по протоколу MTProto 2.0 (обеспечивается полная поддержка протокола).
https://github.com/tdlib/td
https://core.telegram.org/tdlib
Документация:
https://core.telegram.org/tdlib/docs/
Библиотека кроссплатформенная и достаточно просто компилируется практически для любой платформы и ОС, и таким образом пригодна для создания клиентов для любых платформ.
Библиотека реализована на C++, но есть интерфейсы для возможности её использования в других языках (Java, интерфейс с JNI/JNA, и С#, через поддержку C++/CLI в .Net).
В Python скриптах функции библиотеки очень просто использовать через ctypes или cffi модули поддержки FFI в языке.
Для совсем не поддерживаемых официально языков есть интерфейс для обмена данными в формате JSON (JSON-RPC).
Для многопоточной неблокирующей (асинхронной) обработки ввода-вывода TDLib использует собственную реализацию библиотеки акторов для работы с тред-пулами (thread-pools) — https://github.com/arseny30/tdactor
Акторная модель многопоточности для многопоточной асинхронной обработки ввода-вывода и нативная компиляция, используемые в реализации бибилотеки, также обеспечивают очень высокое выстродействие при обработке API вызовов — заявляется, что библиотека TDLib уже давно используется в продакшн сервер-сайде Telegram для поддержки BotAPI и обработки ввода-вывода при взаимодествии с ботами, при этом каждый инстанс серверного приложения для поддержки BotAPI, использующий TDLib поддерживает взаиможействие с 18000 ботов одновременно, что говорит о весьма хорошем масштабировании приложений по нагрузке при использовании библиотеки и о грамотных решениях (actor-based concurrency), заложенных в её дизайн.
https://github.com/tdlib/td/tree/master/tdactor
https://github.com/tdlib/td/tree/master/benchmark
https://github.com/tdlib/td/blob/master/benchmark/bench_actor.cpp
Links:
https://t.me/technologique/1197
Telegram выпустил официально кросс-платформенную библиотеку для создания клиентсикх приложений и взаимодействия с серверной частью мессенджера по протоколу MTProto 2.0 (обеспечивается полная поддержка протокола).
https://github.com/tdlib/td
https://core.telegram.org/tdlib
Документация:
https://core.telegram.org/tdlib/docs/
Библиотека кроссплатформенная и достаточно просто компилируется практически для любой платформы и ОС, и таким образом пригодна для создания клиентов для любых платформ.
Библиотека реализована на C++, но есть интерфейсы для возможности её использования в других языках (Java, интерфейс с JNI/JNA, и С#, через поддержку C++/CLI в .Net).
В Python скриптах функции библиотеки очень просто использовать через ctypes или cffi модули поддержки FFI в языке.
Для совсем не поддерживаемых официально языков есть интерфейс для обмена данными в формате JSON (JSON-RPC).
Для многопоточной неблокирующей (асинхронной) обработки ввода-вывода TDLib использует собственную реализацию библиотеки акторов для работы с тред-пулами (thread-pools) — https://github.com/arseny30/tdactor
Акторная модель многопоточности для многопоточной асинхронной обработки ввода-вывода и нативная компиляция, используемые в реализации бибилотеки, также обеспечивают очень высокое выстродействие при обработке API вызовов — заявляется, что библиотека TDLib уже давно используется в продакшн сервер-сайде Telegram для поддержки BotAPI и обработки ввода-вывода при взаимодествии с ботами, при этом каждый инстанс серверного приложения для поддержки BotAPI, использующий TDLib поддерживает взаиможействие с 18000 ботов одновременно, что говорит о весьма хорошем масштабировании приложений по нагрузке при использовании библиотеки и о грамотных решениях (actor-based concurrency), заложенных в её дизайн.
In the Telegram Bot API, each TDLib instance handles more than 18000 active bots simultaneously.https://github.com/tdlib/td/tree/master/tdactor
https://github.com/tdlib/td/tree/master/benchmark
https://github.com/tdlib/td/blob/master/benchmark/bench_actor.cpp
Links:
https://t.me/technologique/1197
GitHub
GitHub - tdlib/td: Cross-platform library for building Telegram clients
Cross-platform library for building Telegram clients - tdlib/td
Meltdown & Spectre.
Опубликована информация по некорректной работе процессоров Intel, приведшей к двум критическим уязвимостям, касающимся особенностей аппаратной реализации в процессоре защиты страниц памяти ядра и приложений (Meltdown), её поддержки ядрами современных ОС (главным образом Linux и Windows), а также работы процессорного конвейера (pipeline) и спекулятивного предсказания инструкций при переходах и ветвлении кода (Spectre).
Уязвимы процессоры выпускавшиеся последние 10 лет, начиная с поколений архитектур Nehalem и Sandy Bridge.
https://www.youtube.com/watch?v=bReA1dvGJ6Y
https://googleprojectzero.blogspot.com/2018/01/reading-privileged-memory-with-side.html
https://lwn.net/Articles/738975/
Атака эксплуатирующая уязвимость Meltdown позволяет в непривелегированном режиме читать данные из адресного пространства ядра, вынесенные в user space memory, а также возможна запись кода в данные области памяти с последующим их исполнением в привелегированном режиме работы ядра.
Атака эксплуатирующая уязвимость Spectre позволяет читать данные из памяти других приложений, а также возможно записывать код в областях памяти других приложений, исполняемых с привелегиями других пользователей в системе.
Информация о возможности проведения атак, эксплуатирующих данные уязвимости, впервые появилась и была подтверждена экспериментально в середине декабря прошедшего года.
Однако первая эксплуатация была проведена 1.5 года назад и отчёт по данным уязвимостям был сдан в Intel ещё в июне 2016 года.
Для предотвращения атаки Meltdown в Linux возможно применение двух уже вышедших и включенных в ядро патчей - KAISER и kernel address space layout randomization (KASLR).
Для предотвращения атаки Spectre необходимо коренное изменение и поддержка со стороны кода ядра всех средств безопасности предоставляемых современными процессорами, а именно программная поддержка разделения доступа к памяти с помощью большего количества уровней (колец) привелегий, введённых ещё в архитектуре 80386.
На данный момент разработчики ядра Linux, патча KAISER и патч-сета GRSecutiry ведут разработку патча Kernel Page Table Isolation (KPTI) на базе патча KAISER.
Описание уязвимости:
https://meltdownattack.com и https://spectreattack.com (доменные псевдонимы одного и того же сайта)
https://meltdownattack.com/meltdown.pdf
https://spectreattack.com/spectre.pdf
http://www.opennet.ru/opennews/art.shtml?num=47849
#security
See also:
https://t.me/technologique/709
https://t.me/technologique/710
https://t.me/technologique/964
https://t.me/technologique/999
https://t.me/technologique/1004
Опубликована информация по некорректной работе процессоров Intel, приведшей к двум критическим уязвимостям, касающимся особенностей аппаратной реализации в процессоре защиты страниц памяти ядра и приложений (Meltdown), её поддержки ядрами современных ОС (главным образом Linux и Windows), а также работы процессорного конвейера (pipeline) и спекулятивного предсказания инструкций при переходах и ветвлении кода (Spectre).
Уязвимы процессоры выпускавшиеся последние 10 лет, начиная с поколений архитектур Nehalem и Sandy Bridge.
https://www.youtube.com/watch?v=bReA1dvGJ6Y
https://googleprojectzero.blogspot.com/2018/01/reading-privileged-memory-with-side.html
https://lwn.net/Articles/738975/
Атака эксплуатирующая уязвимость Meltdown позволяет в непривелегированном режиме читать данные из адресного пространства ядра, вынесенные в user space memory, а также возможна запись кода в данные области памяти с последующим их исполнением в привелегированном режиме работы ядра.
Атака эксплуатирующая уязвимость Spectre позволяет читать данные из памяти других приложений, а также возможно записывать код в областях памяти других приложений, исполняемых с привелегиями других пользователей в системе.
Информация о возможности проведения атак, эксплуатирующих данные уязвимости, впервые появилась и была подтверждена экспериментально в середине декабря прошедшего года.
Однако первая эксплуатация была проведена 1.5 года назад и отчёт по данным уязвимостям был сдан в Intel ещё в июне 2016 года.
Для предотвращения атаки Meltdown в Linux возможно применение двух уже вышедших и включенных в ядро патчей - KAISER и kernel address space layout randomization (KASLR).
Для предотвращения атаки Spectre необходимо коренное изменение и поддержка со стороны кода ядра всех средств безопасности предоставляемых современными процессорами, а именно программная поддержка разделения доступа к памяти с помощью большего количества уровней (колец) привелегий, введённых ещё в архитектуре 80386.
На данный момент разработчики ядра Linux, патча KAISER и патч-сета GRSecutiry ведут разработку патча Kernel Page Table Isolation (KPTI) на базе патча KAISER.
Описание уязвимости:
https://meltdownattack.com и https://spectreattack.com (доменные псевдонимы одного и того же сайта)
https://meltdownattack.com/meltdown.pdf
https://spectreattack.com/spectre.pdf
http://www.opennet.ru/opennews/art.shtml?num=47849
#security
See also:
https://t.me/technologique/709
https://t.me/technologique/710
https://t.me/technologique/964
https://t.me/technologique/999
https://t.me/technologique/1004
YouTube
Meltdown in Action: Dumping memory
Meltdown and Spectre exploit critical vulnerabilities in modern processors. These hardware bugs allow programs to steal data which is currently processed on the computer. While programs are typically not permitted to read data from other programs, a malicious…
Technologique
Meltdown & Spectre. Опубликована информация по некорректной работе процессоров Intel, приведшей к двум критическим уязвимостям, касающимся особенностей аппаратной реализации в процессоре защиты страниц памяти ядра и приложений (Meltdown), её поддержки ядрами…
Кто кодил на мнемонике ассемблера 80x386/586/686 знает, что при передаче инструкций и указателей на конвейер в процессорах Intel они никак не проверяются (просто либо исполняются либо возвращается исключение, либо происходит остановка конвейера, операция Halt) — проблема давняя и уходит глубоко корнями в историю.
Сейчас процессорами проверяется только пометка страниц памяти NX битом неисполнения и контекст управляющих контрольных регистров (CR), при восстановлении контекста исполнения кода содержащегося в странице памяти. При этом не все ядра используют весь блок регистров CR и не все кольца привелегий (всего 4, от 0 до 3 в числовом представлении регистра), задаваемые регистром CR0, в т.ч. ядро Linux и ядро Windows, которые используют только два кольца, ring0 для адресного пространства памяти с привелегиями ядра (модулей ядра, драйверов и некоторых резидентных демонов) и ring3 для остальных пользовательских приложений, что во многом обусловлено требованием переносимости ядер на другие аппаратные процессорные архитектуры.
Кольца привелегий были введены впервые программно в ОС Multics, предшественнице Unix, разработанной также в Bell Labs в 1960-x годах. Ядро Multics поддерживало программно 64 кольца (http://www.multicians.org/mgr.html#ring, http://www.multicians.org/protection.html), но аппаратно железо того времени поддерживало только 8 колец.
Для создания более безопасного окружения для исполнения приложений сборка ядра Linux должна быть с поддержкой nx-bit и security модулями (SELinux, AppArmor), и патч-сетом grsecurity (включая патч PaX).
В этом случае для создания безопасного окружения приложений лучше использовать специализированные дистрибутивы, например микро-дистрибутив Alpine Linux (лучше дополнительно в Docker контейнере), сборки ядра которого содержат данные патчи.
Патч ядра Linux GRSecuruty позволяет выполнять в ядре более строгие проверки привелегий и страниц памяти, чтения/записи данных, исполнения кода, но в корне не решает проблему.
В процессорах AMD, при исполнении кода в конвейере, спекулятивном эвристическом предсказании переходов для оптимизации циклов, трансляции адресов памяти через TLB кэш, инструкции и указатели проверяются и исполняются согласно уровню привелегий и контексту безопасности управляющих регистров, поэтому архитектурных проблем в процессорах AMD нет — https://lkml.org/lkml/2017/12/27/2
Удивительно, что до реализации поддержки всех аппаратных возможностей контроля безопасности при исполнении кода, которые предоставляют современные процессоры и аппаратные архитектуры, в реализации ядер ОС дошли только сейчас.
Многие IT издания и СМИ пишут о данных уязвимостях как исключительно аппаратных, ставя в вину Intel и нанося ущерб репутации компании, и при том не разделяя особенности аппаратной реализации и её программную поддержку со стороны ядер ОС и не вникая в суть проблемы, т.е. практически все СМИ пишут только об аппаратной архитектурной проблеме, но никто не акцентирует внимания на программной поддержке средств безопасности, предоставляемых современными процессорными аппаратными архитектурами, уровнях/кольцах привелегий, контексте безопасности при сохранении/восстановлении состояния регистров при исполнении кода, пометке страниц памяти и защите сегментов памяти от записи/изменения кода или исполнения данных в них.
Это вызвало уже ответную реакцию и критику со стороны самой Intel - https://newsroom.intel.com/news/intel-responds-to-security-research-findings/
Сейчас процессорами проверяется только пометка страниц памяти NX битом неисполнения и контекст управляющих контрольных регистров (CR), при восстановлении контекста исполнения кода содержащегося в странице памяти. При этом не все ядра используют весь блок регистров CR и не все кольца привелегий (всего 4, от 0 до 3 в числовом представлении регистра), задаваемые регистром CR0, в т.ч. ядро Linux и ядро Windows, которые используют только два кольца, ring0 для адресного пространства памяти с привелегиями ядра (модулей ядра, драйверов и некоторых резидентных демонов) и ring3 для остальных пользовательских приложений, что во многом обусловлено требованием переносимости ядер на другие аппаратные процессорные архитектуры.
Кольца привелегий были введены впервые программно в ОС Multics, предшественнице Unix, разработанной также в Bell Labs в 1960-x годах. Ядро Multics поддерживало программно 64 кольца (http://www.multicians.org/mgr.html#ring, http://www.multicians.org/protection.html), но аппаратно железо того времени поддерживало только 8 колец.
Для создания более безопасного окружения для исполнения приложений сборка ядра Linux должна быть с поддержкой nx-bit и security модулями (SELinux, AppArmor), и патч-сетом grsecurity (включая патч PaX).
В этом случае для создания безопасного окружения приложений лучше использовать специализированные дистрибутивы, например микро-дистрибутив Alpine Linux (лучше дополнительно в Docker контейнере), сборки ядра которого содержат данные патчи.
Патч ядра Linux GRSecuruty позволяет выполнять в ядре более строгие проверки привелегий и страниц памяти, чтения/записи данных, исполнения кода, но в корне не решает проблему.
В процессорах AMD, при исполнении кода в конвейере, спекулятивном эвристическом предсказании переходов для оптимизации циклов, трансляции адресов памяти через TLB кэш, инструкции и указатели проверяются и исполняются согласно уровню привелегий и контексту безопасности управляющих регистров, поэтому архитектурных проблем в процессорах AMD нет — https://lkml.org/lkml/2017/12/27/2
Удивительно, что до реализации поддержки всех аппаратных возможностей контроля безопасности при исполнении кода, которые предоставляют современные процессоры и аппаратные архитектуры, в реализации ядер ОС дошли только сейчас.
Многие IT издания и СМИ пишут о данных уязвимостях как исключительно аппаратных, ставя в вину Intel и нанося ущерб репутации компании, и при том не разделяя особенности аппаратной реализации и её программную поддержку со стороны ядер ОС и не вникая в суть проблемы, т.е. практически все СМИ пишут только об аппаратной архитектурной проблеме, но никто не акцентирует внимания на программной поддержке средств безопасности, предоставляемых современными процессорными аппаратными архитектурами, уровнях/кольцах привелегий, контексте безопасности при сохранении/восстановлении состояния регистров при исполнении кода, пометке страниц памяти и защите сегментов памяти от записи/изменения кода или исполнения данных в них.
Это вызвало уже ответную реакцию и критику со стороны самой Intel - https://newsroom.intel.com/news/intel-responds-to-security-research-findings/
www.multicians.org
Multics Glossary -R-
Phrases, terms, and acronyms starting with R used during the development of the Multics operating system.
Technologique
Meltdown & Spectre. Опубликована информация по некорректной работе процессоров Intel, приведшей к двум критическим уязвимостям, касающимся особенностей аппаратной реализации в процессоре защиты страниц памяти ядра и приложений (Meltdown), её поддержки ядрами…
Meltdown и Spectre это лишь названия, две грани одной давней проблемы, огреха в дизайне железа при его проектировании и производстве, за которыми по сути стоит одна и та же проблема контроля привилегий при упреждающей (с предсказанием переходов/возвратов) обработке инструкций в конвейере суперскалярной архитектуры соверменных процессоров (параллелизм выполнения на уровне инструкций).
На данный момент опубликованы лишь уязвимости с возможностями чтения привилегированной памяти ядра из непривилегированного режима исполнения пользовательского кода приложений:
Spectre:
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-5715
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-5753
https://nvd.nist.gov/vuln/detail/CVE-2017-5715
https://nvd.nist.gov/vuln/detail/CVE-2017-5753
Meltdown (тайминг атака, через анализ кэша данных, https://habrahabr.ru/post/346078/):
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-5754
https://nvd.nist.gov/vuln/detail/CVE-2017-5754
https://support.f5.com/csp/article/K91229003
Если посмотреть на время попадания (не публикации!) уязвимостей в базу MITRE -
На данный момент опубликованы лишь уязвимости с возможностями чтения привилегированной памяти ядра из непривилегированного режима исполнения пользовательского кода приложений:
Spectre:
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-5715
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-5753
https://nvd.nist.gov/vuln/detail/CVE-2017-5715
https://nvd.nist.gov/vuln/detail/CVE-2017-5753
Meltdown (тайминг атака, через анализ кэша данных, https://habrahabr.ru/post/346078/):
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-5754
https://nvd.nist.gov/vuln/detail/CVE-2017-5754
https://support.f5.com/csp/article/K91229003
Если посмотреть на время попадания (не публикации!) уязвимостей в базу MITRE -
20170201 - становятся вполне оправданной информация, что первая эксплуатация была проведена 1.5 года назад и отчёт по данным уязвимостям был сдан в Intel ещё в июне 2016 года.cve.mitre.org
CVE -
CVE-2017-5715
CVE-2017-5715
The mission of the CVE® Program is to identify, define, and catalog publicly disclosed cybersecurity vulnerabilities.
Но есть ещё более глубокая проблема в дизайне cуперскалярной архитектуры Intel -
injection through the return predictor.Based on the assumption that branch predictor state is shared between hyperthreads [10], we wrote a program of which two instances are each pinned to one of the two logical processors running on a specific physical core, where one instance attempts to perform branch injections while the other measures how often branch injections are successful. Both instances were executed with ASLR disabled and had the same code at the same addresses. The injecting process performed indirect calls to a function that accesses a (per-process) test variable; the measuring process performed indirect calls to a function that tests, based on timing, whether the per-process test variable is cached, and then evicts it using CLFLUSH. Both indirect calls were performed through the same callsite. Before each indirect call, the function pointer stored in memory was flushed out to main memory using CLFLUSH to widen the speculation time window. Additionally, because of the reference to "recent program behavior" in Intel's optimization manual, a bunch of conditional branches that are always taken were inserted in front of the indirect call.
In this test, the injection success rate was above 99%, giving us a base setup for future experiments.
https://googleprojectzero.blogspot.com/2018/01/reading-privileged-memory-with-side.html
Blogspot
Reading privileged memory with a side-channel
Posted by Jann Horn, Project Zero We have discovered that CPU data cache timing can be abused to efficiently leak information out of mi...
В документации (datasheet) по архитектуре Intel и даташите по оптимизации исполнения программ возможность проблемы самомодифицирующегося кода, его вызова и исполнения, через инъекцию адреса в кэш конвейера до исполнения инструкции возврата, с бесконтрольным изменением, повышением (эскалацией) привилегий при исполнении потоков инструкций конвейером, описана очень давно (ещё с начала 2007 года, судя по архивам), но не решалась и игнорировалась до сих пор в угоду производительности, из-за значительного снижения скорости исполнения инструкций блоками процессорного конвейера в многопоточном режиме (а также HT) работы ядер при обработке и исполнении инструкций, предсказании переходов/возвратов/ветвлений, обработке и трансляции адресов (TLB), и при этом контроле привилегий и контекста безопасности исполнения инструкций:
https://www.intel.com/content/dam/www/public/us/en/documents/manuals/64-ia-32-architectures-software-developer-manual-325462.pdf
https://www.intel.com/content/dam/www/public/us/en/documents/manuals/64-ia-32-architectures-software-developer-instruction-set-reference-manual-325383.pdf
https://www.intel.com/content/dam/www/public/us/en/documents/manuals/64-ia-32-architectures-optimization-manual.pdf
Остальные мануалы и даташиты можно найти по адресу:
https://software.intel.com/en-us/articles/intel-sdm
https://www.intel.com/content/dam/www/public/us/en/documents/manuals/64-ia-32-architectures-software-developer-manual-325462.pdf
https://www.intel.com/content/dam/www/public/us/en/documents/manuals/64-ia-32-architectures-software-developer-instruction-set-reference-manual-325383.pdf
https://www.intel.com/content/dam/www/public/us/en/documents/manuals/64-ia-32-architectures-optimization-manual.pdf
Остальные мануалы и даташиты можно найти по адресу:
https://software.intel.com/en-us/articles/intel-sdm
Вся соль.
Инъекция адреса на код через предсказатель возврата:
При предсказании адреса возврата (return predictor) и самом возврате сохраняется состояние контекста безопасности (уровня привелегий) при исполнении кода и это фундаментальный изъян текущей архитектуры и работы конвейера со спекулятивным предсказанием переходов - это делает возможным инжекцию указателей адреса возврата из привилегированной памяти на код в непривилегированной памяти (и его исполнение в привилегированном режиме после перехода) через изменение и подстановку адреса в кэш конвейера который не очищается перед инструкцией возврата и возвратом/переходом.
Leaking or injection through the return predictor:
Это подрывает основу основ безопасности памяти и исполнения кода.
Возможность атаки не гепотетическая, как описано в документе - проведение атаки реально и воспроизводимо (как минимум на архитектуре Haswell), уязвим сам просесс смены привилегий при исполнении инструкций, в особенности в многопоточном режиме и при использовании режима Hyper-Threading (HT), в котором незагруженные части конвейера (образуя "вирутальные ядра") упреждающе (с предсказанием переходов/возвратов/ветвлений кода) обрабатывают инструкции из других программных потоков.
Большую информацию на данный момент разглашать запрещено (NDA) микропроцессорными производителями (вендорами) до тех пор пока не будет найдено решение для текущих поколений процессоров, выпущены патчи ядра и микрокода, и не будет выпущено следующее поколение процессоров с устранением уязвимости.
https://www.intel.com/content/dam/www/public/us/en/documents/manuals/64-ia-32-architectures-optimization-manual.pdf:
Единственное что можно сделать на данный момент - применить программные, частичные решения проблемы спекулятивного предсказания переходов (ведущие к потерям производительности из-за контроля/восстановления контекста безопасности при исполнении инструкций и переносе частей памяти ядра полностью в область привилегий ядра, что увеличивает накладные расходы системных вызовов), через апдейт микрокода процессоров и патч ядра KPTI на базе KAISER с переносом всех непривилегированных частей адресного пространства ядра из режима пользовательских привилегий полностью в режим привилегий ядра, плюс применение патча KASLR для рандомизации частей адресного пространства ядра при запуске системы и программных процессов, который усложняет поиск адресов кода и данных относящихся к адресному пространству ядра системы.
Инъекция адреса на код через предсказатель возврата:
При предсказании адреса возврата (return predictor) и самом возврате сохраняется состояние контекста безопасности (уровня привелегий) при исполнении кода и это фундаментальный изъян текущей архитектуры и работы конвейера со спекулятивным предсказанием переходов - это делает возможным инжекцию указателей адреса возврата из привилегированной памяти на код в непривилегированной памяти (и его исполнение в привилегированном режиме после перехода) через изменение и подстановку адреса в кэш конвейера который не очищается перед инструкцией возврата и возвратом/переходом.
however, the basic hypothesis of this attack variant is that it can also be used to redirect execution of code in the victim context (in other words, to create interference from the attacker to the victim; the other way around).
Leaking or injection through the return predictor:
If the return predictor also doesn't lose its state on a privilege level change, it might be useful for either locating the host kernel from inside a VM (in which case bisection could be used to very quickly discover the full address of the host kernel) or injecting return targets (in particular if the return address is stored in a cache line that can be flushed out by the attacker and isn't reloaded before the return instruction).
Это подрывает основу основ безопасности памяти и исполнения кода.
Возможность атаки не гепотетическая, как описано в документе - проведение атаки реально и воспроизводимо (как минимум на архитектуре Haswell), уязвим сам просесс смены привилегий при исполнении инструкций, в особенности в многопоточном режиме и при использовании режима Hyper-Threading (HT), в котором незагруженные части конвейера (образуя "вирутальные ядра") упреждающе (с предсказанием переходов/возвратов/ветвлений кода) обрабатывают инструкции из других программных потоков.
Большую информацию на данный момент разглашать запрещено (NDA) микропроцессорными производителями (вендорами) до тех пор пока не будет найдено решение для текущих поколений процессоров, выпущены патчи ядра и микрокода, и не будет выпущено следующее поколение процессоров с устранением уязвимости.
https://www.intel.com/content/dam/www/public/us/en/documents/manuals/64-ia-32-architectures-optimization-manual.pdf:
Placing data immediately following an indirect branch can cause a performance problem. If the data consists of all zeros, it looks like a long stream of ADDs to memory destinations and this can cause resource conflicts and slow down branch recovery. Also, data immediately following indirect branches may appear as branches to the branch predication [sic] hardware, which can branch off to execute other data pages. This can lead to subsequent self-modifying code problems.
Software should avoid writing to a code page in the same 1-KByte subpage that is being executed or fetching code in the same 2-KByte subpage of that is being written. In addition, sharing a page containing directly or speculatively executed code with another processor as a data page can trigger an SMC condition that causes the entire pipeline of the machine and the trace cache to be cleared. This is due to the self-modifying code condition.
Единственное что можно сделать на данный момент - применить программные, частичные решения проблемы спекулятивного предсказания переходов (ведущие к потерям производительности из-за контроля/восстановления контекста безопасности при исполнении инструкций и переносе частей памяти ядра полностью в область привилегий ядра, что увеличивает накладные расходы системных вызовов), через апдейт микрокода процессоров и патч ядра KPTI на базе KAISER с переносом всех непривилегированных частей адресного пространства ядра из режима пользовательских привилегий полностью в режим привилегий ядра, плюс применение патча KASLR для рандомизации частей адресного пространства ядра при запуске системы и программных процессов, который усложняет поиск адресов кода и данных относящихся к адресному пространству ядра системы.
Technologique
Вся соль. Инъекция адреса на код через предсказатель возврата: При предсказании адреса возврата (return predictor) и самом возврате сохраняется состояние контекста безопасности (уровня привелегий) при исполнении кода и это фундаментальный изъян текущей архитектуры…
This media is not supported in your browser
VIEW IN TELEGRAM
With best wishes for the birthday of our project - Technologique!
Сегодня каналу исполняется два года! 🎉🎊🍾🥂🎂🍰
Начиналось всё как раз с обзора будущих аппаратных микропроцессорных архитектур, которые уже сейчас стали текущими и нашей реальностью:
https://t.me/technologique/28
https://t.me/technologique/29
За 2017 год изменилось многое, но базовые ценности и принципы ведения канала остались незыблемы.
Был выполнен лёгкий ребрендинг с технологической смысловой нагрузкой в стиле Daft Punk. К слову, благодаря смыслу композиции "Technologique" и из любви автора к электронной музыке и родилось название канала.
Изначально и по сей день канал ориентирован на лонгриды и авторский контент - публикацию обзоров и создание аналитических статей. Такой формат авторского блога даётся с большим трудом и не так популярен в Telegram.
Я стараюсь постоянно повышать качество материалов и держать высокую планку, заданную изначально, писать понятно, даже о сложных вещах.
Рекламу в публикациях не использую (и не буду) из принципа "строго по теме - о технологиях".
В начале 2017 года в канале было всего лишь только сто близких друзей и знакомых. За 2017 год канал вырос до более чем тысячи читающих и думающих людей!
Благодарю читателей за потрясающую энергетику, добрые замечания, предложения и ценные советы, что читаете, даже внимательнее, чем я пишу! =)
Благодарю моих друзей, которые помогают мне, за поддержку, помощь и советы - даже небольшая помощь это уже вклад!
Без всех вас не было бы той искры, проект этого канала не был бы таким интересным и не развивался бы так динамично и с такой энергетикой, а в коридорах нашей "гвардейской редакторской" не кипела бы работа, а только гулял ветер. =)
Спасибо вам за вдохновение продолжать вести канал и публиковать интересные посты и статьи!
Впереди ещё очень много интересных материалов о технологиях, программировании и железе. 🤓
Не переключайте канал! 😉
Links:
https://t.me/technologique/1
https://t.me/technologique/683
Сегодня каналу исполняется два года! 🎉🎊🍾🥂🎂🍰
Начиналось всё как раз с обзора будущих аппаратных микропроцессорных архитектур, которые уже сейчас стали текущими и нашей реальностью:
https://t.me/technologique/28
https://t.me/technologique/29
За 2017 год изменилось многое, но базовые ценности и принципы ведения канала остались незыблемы.
Был выполнен лёгкий ребрендинг с технологической смысловой нагрузкой в стиле Daft Punk. К слову, благодаря смыслу композиции "Technologique" и из любви автора к электронной музыке и родилось название канала.
Изначально и по сей день канал ориентирован на лонгриды и авторский контент - публикацию обзоров и создание аналитических статей. Такой формат авторского блога даётся с большим трудом и не так популярен в Telegram.
Я стараюсь постоянно повышать качество материалов и держать высокую планку, заданную изначально, писать понятно, даже о сложных вещах.
Рекламу в публикациях не использую (и не буду) из принципа "строго по теме - о технологиях".
В начале 2017 года в канале было всего лишь только сто близких друзей и знакомых. За 2017 год канал вырос до более чем тысячи читающих и думающих людей!
Благодарю читателей за потрясающую энергетику, добрые замечания, предложения и ценные советы, что читаете, даже внимательнее, чем я пишу! =)
Благодарю моих друзей, которые помогают мне, за поддержку, помощь и советы - даже небольшая помощь это уже вклад!
Без всех вас не было бы той искры, проект этого канала не был бы таким интересным и не развивался бы так динамично и с такой энергетикой, а в коридорах нашей "гвардейской редакторской" не кипела бы работа, а только гулял ветер. =)
Спасибо вам за вдохновение продолжать вести канал и публиковать интересные посты и статьи!
Впереди ещё очень много интересных материалов о технологиях, программировании и железе. 🤓
Не переключайте канал! 😉
Links:
https://t.me/technologique/1
https://t.me/technologique/683
The king is dead - long live the king!
Что будет дальше, если сейчас суперскалярная архитектура Intel, которую компания продвигала с зарождения всей своей линии процессоров, потерпела такое фиаско?
Вспомнилась одна, едва заметная новость, промелькнувшая в феврале прошлого года в отчёте Intel для инвесторов.
https://t.me/technologique/785
И теперь, перечитывая эту новость, в связи со всей сложившейся сейчас ситуацией вокруг Intel, понятны причины покупки российско-индийского стартапа Soft Machines в сентябре 2016 года.
Финансовый отчёт о приобретении стратапа был представлен в феврале 2017 года на презентации для инвесторов.
Время попадания уязвимостей конвейерного механизма в базу MITRE -
Из поста выше - отчёт по уязвимости конвейерного механизма исполнения инструкций был сдан в Intel ещё в июне 2016 года (https://t.me/technologique/1225), Soft Machines был куплен в сентябре 2016 года.
Перечитайте, какими разработками занимется Soft Machines, это интересно:
В основе ядер VISC архитектуры лежит конвейер исполняющий ограниченный набор RISC инструкций, в свою очередь виртуальный конвейер исполняет виртуальный набор инструкций (практически любой - x86-64, ARM, MIPS) с их преобразованием через уровень трансляции в RISC инструкции.
Отличный обзор архитектуры VISC от Soft Machines писал портал Anandtech:
https://www.anandtech.com/show/10025/examining-soft-machines-architecture-visc-ipc
Виртуализация конвейера на аппаратном уровне - это технология, которая позволит обновлять прошивку микрокода инструкций и логику алгоритма работы конвейера с распараллеливанием исполнения инструкций, что позволит оперативно устранять любые уязвимости и недостатки архитектуры, на виртуальном уровне её эмуляции, ситуации с уязимостью механизма работы конвейра, подобные текущей.
Как гласит великая древняя (математическая) мудрость:
Intel уже не впервые кардинально меняет архитектуру процессорных ядер - в истории были архитектуры P6, NetBurst (HT), которая вновь стала использоваться для оптимизации загрузки конвейера в линейках процессоров новых архитектур (начиная с Nehalem), архитектура Core и современные микро-архитектуры на базе Nehalem.
Не исключено, что будущая архитектура Tinsley (процессор Sapphire Rapids), который предположительно выйдет на рынок после 2020 года - это разработка Soft Machines.
https://www.intel.com/content/www/us/en/design/products-and-solutions/processors-and-chipsets/platform-codenames.html#search-0=tinsley
Но не стоит забывать и другую ситуацию со средой Intel ME (Intel ME/vPro/AMT/TXT), в которой как оказалось исполняется изменённая ОС Minix, исполняется скрытно, на сопроцессоре, с самым высоким уровнем привилегий, в кольце с условным обозначением -3 (по наименованию исследователей из Invisible Things Lab) - исполнение кода AMT поисходит в специальном сопроцессоре независимо от основного процессора, но с полным привелегированным доступом ко всей памяти.
Какие абстракции и что ещё может быть скрыто в процессорах Intel и при этом не описано ни в одном даташите - вопрос открытый.
Истина как всегда где то рядом.
Что будет дальше, если сейчас суперскалярная архитектура Intel, которую компания продвигала с зарождения всей своей линии процессоров, потерпела такое фиаско?
Вспомнилась одна, едва заметная новость, промелькнувшая в феврале прошлого года в отчёте Intel для инвесторов.
https://t.me/technologique/785
И теперь, перечитывая эту новость, в связи со всей сложившейся сейчас ситуацией вокруг Intel, понятны причины покупки российско-индийского стартапа Soft Machines в сентябре 2016 года.
Финансовый отчёт о приобретении стратапа был представлен в феврале 2017 года на презентации для инвесторов.
Время попадания уязвимостей конвейерного механизма в базу MITRE -
20170201, т.е. материал был подготовлен в январе и добавлен в базу первого февраля 2017 года, до презентации для инвесторов.Из поста выше - отчёт по уязвимости конвейерного механизма исполнения инструкций был сдан в Intel ещё в июне 2016 года (https://t.me/technologique/1225), Soft Machines был куплен в сентябре 2016 года.
Перечитайте, какими разработками занимется Soft Machines, это интересно:
Machines занимаются проектрованием новой архитектуры процессоров - VISC (virtual instruction set computing). Это технология программно-аппаратной виртуализации, позволяющая виртуализировать конвейер на уровне микрокода процессора и таким образом лучше распараллеливать поток исполнения инструкций в однопоточных приложениях, и виртуализировать блок команд, сделав многоцелевой процессор, способный исполнять как x86-64/IA-64, так и ARMv8-64 наборы инструкций
В основе ядер VISC архитектуры лежит конвейер исполняющий ограниченный набор RISC инструкций, в свою очередь виртуальный конвейер исполняет виртуальный набор инструкций (практически любой - x86-64, ARM, MIPS) с их преобразованием через уровень трансляции в RISC инструкции.
Отличный обзор архитектуры VISC от Soft Machines писал портал Anandtech:
https://www.anandtech.com/show/10025/examining-soft-machines-architecture-visc-ipc
Виртуализация конвейера на аппаратном уровне - это технология, которая позволит обновлять прошивку микрокода инструкций и логику алгоритма работы конвейера с распараллеливанием исполнения инструкций, что позволит оперативно устранять любые уязвимости и недостатки архитектуры, на виртуальном уровне её эмуляции, ситуации с уязимостью механизма работы конвейра, подобные текущей.
Как гласит великая древняя (математическая) мудрость:
Нет такой проблемы, которую нельзя было бы решить введя дополнительный уровень абстракций, кроме проблемы слишком большого количества уровней абстракций.Intel уже не впервые кардинально меняет архитектуру процессорных ядер - в истории были архитектуры P6, NetBurst (HT), которая вновь стала использоваться для оптимизации загрузки конвейера в линейках процессоров новых архитектур (начиная с Nehalem), архитектура Core и современные микро-архитектуры на базе Nehalem.
Не исключено, что будущая архитектура Tinsley (процессор Sapphire Rapids), который предположительно выйдет на рынок после 2020 года - это разработка Soft Machines.
https://www.intel.com/content/www/us/en/design/products-and-solutions/processors-and-chipsets/platform-codenames.html#search-0=tinsley
Но не стоит забывать и другую ситуацию со средой Intel ME (Intel ME/vPro/AMT/TXT), в которой как оказалось исполняется изменённая ОС Minix, исполняется скрытно, на сопроцессоре, с самым высоким уровнем привилегий, в кольце с условным обозначением -3 (по наименованию исследователей из Invisible Things Lab) - исполнение кода AMT поисходит в специальном сопроцессоре независимо от основного процессора, но с полным привелегированным доступом ко всей памяти.
Какие абстракции и что ещё может быть скрыто в процессорах Intel и при этом не описано ни в одном даташите - вопрос открытый.
Истина как всегда где то рядом.
Technologique
The king is dead - long live the king! Что будет дальше, если сейчас суперскалярная архитектура Intel, которую компания продвигала с зарождения всей своей линии процессоров, потерпела такое фиаско? Вспомнилась одна, едва заметная новость, промелькнувшая…
Презентация Soft Machines на конференции Linley Processor Conference 2014 года:
http://www.softmachines.com/wp-content/uploads/2014/10/MPR-11303.pdf
http://www.softmachines.com/wp-content/uploads/2014/10/MPR-11303.pdf
Technologique
The king is dead - long live the king! Что будет дальше, если сейчас суперскалярная архитектура Intel, которую компания продвигала с зарождения всей своей линии процессоров, потерпела такое фиаско? Вспомнилась одна, едва заметная новость, промелькнувшая…
Видео с презентации Soft Machines на конференции Linley Processor Conference 2014 года:
https://youtu.be/lXE0LTsvYQg
https://youtu.be/lXE0LTsvYQg
YouTube
Soft Machines Launch Presentation at Linley Processor Conference 2014
Soft Machines President and CTO, Mohammad Abdallah, introduces the Soft Machines VISC Architecture to the world. The video opens with an introduction of the ...