The OpenNET Project / Index page

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



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

Оглавление

Опасные уязвимости в Xen и FreeBSD, проявляющиеся на 64-разр..., opennews (??), 12-Июн-12, (0) [смотреть все]

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


14. "Опасные уязвимости в Xen и FreeBSD, проявляющиеся на 64-разр..."  +/
Сообщение от arcade (ok), 13-Июн-12, 13:23 
А почитать внимательно? http://www.securityfocus.com/archive/1/523076/30/0/threaded
Ответить | Правка | Наверх | Cообщить модератору

18. "Опасные уязвимости в Xen и FreeBSD, проявляющиеся на 64-разр..."  +1 +/
Сообщение от Ваня (??), 13-Июн-12, 13:58 
II. Problem Description

FreeBSD/amd64 runs on CPUs from different vendors. Due to varying
behaviour of CPUs in 64 bit mode a sanity check of the kernel may be
insufficient when returning from a system call.

Описание проблемы: "a sanity check OF THE KERNEL may be insufficient"

Можете дополнительно посмотреть на CVS, где английским по белому указано что ошибка в модуле trap.c, т.е. в модуле обработчика исключений.

Мне каждого здесь в его какашки носом тыкать??

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

20. "Опасные уязвимости в Xen и FreeBSD, проявляющиеся на 64-разр..."  +/
Сообщение от arcade (ok), 13-Июн-12, 14:31 
> II. Problem Description
> FreeBSD/amd64 runs on CPUs from different vendors. Due to varying
>  behaviour of CPUs in 64 bit mode a sanity check of
> the kernel may be
>  insufficient when returning from a system call.
> Описание проблемы: "a sanity check OF THE KERNEL may be insufficient"
> Можете дополнительно посмотреть на CVS, где английским по белому указано что ошибка
> в модуле trap.c, т.е. в модуле обработчика исключений.

Да, именно об этом был мой вопрос. И в Xen, и в FreeBSD фиксили неспецифическое поведение sysret на процессорах Intel, которая не проверяла адрес возврата хотя по спекам вроде как должна.

> Мне каждого здесь в его какашки носом тыкать??

А не могли бы вы разговаривать повежливее а не на уровне пятого класса школы?

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

21. "Опасные уязвимости в Xen и FreeBSD, проявляющиеся на 64-разр..."  +/
Сообщение от Ваня (??), 13-Июн-12, 14:41 
> неспецифическое поведение sysret на процессорах Intel, которая не проверяла адрес возврата хотя по спекам вроде как должна

Хмм... Из какого астрала вы инфу черпаете? Ни в статье, ни в приведённой вами выше ссылки ничего подобного нет. Везде указано что ошибка связана с обработкой исключения ядром.

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

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

24. "Опасные уязвимости в Xen и FreeBSD, проявляющиеся на 64-разр..."  +1 +/
Сообщение от arcade (ok), 13-Июн-12, 15:10 
>> неспецифическое поведение sysret на процессорах Intel, которая не проверяла адрес возврата хотя по спекам вроде как должна
> Хмм... Из какого астрала вы инфу черпаете? Ни в статье, ни в
> приведённой вами выше ссылки ничего подобного нет. Везде указано что ошибка
> связана с обработкой исключения ядром.

Да вот коммент из кода:

If the user-supplied value of %rip is not a canonical address, then some CPUs will trigger a ring 0 #GP during the sysret instruction.  However, the fault handler would execute with the user's %gs and %rsp in ring 0 which would not be safe.  Instead, preemptively kill the thread with a SIGBUS.

А в спеке такого поведения нет: http://www.nalanda.nitc.ac.in/industry/AppNotes/AMD/21086.pdf

Да и вообще неожиданное исполнение кода из юзерлянда это просто подарок.

> Про процессор я написал выше: в нём десятки флагов, влияющих на его
> поведение и работу. Неверная их настройка (или надежда "на авось" и
> отказ от их настройки с сохранением значений по умолчанию) приводят к
> неожидаемым ситуациям, что и случилось.

С моей стороны это выглядит немного иначе. Изначально syscall/sysret как и sysenter/sysexit вводились чтобы заменить call/ret/iret вместе со всем набором проверок которые нужно было произвести для их вызова. А теперь получается что нет, всё равно нужно городить икебану самому потому что есть edge cases...

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

26. "Опасные уязвимости в Xen и FreeBSD, проявляющиеся на 64-разр..."  +/
Сообщение от Ваня (??), 13-Июн-12, 15:29 
1. спецификации выложены на intel.com и amd.com.
2. спецификации размазаны аж по 20 (?) 500-страничным документам, где неверное прочтение любой (!!) строки может в корне повлиять на правильность результата.
3. intel и amd используют различную терминологию, поэтому правильно читать оба документа, не забывая понимать кто что под каким словом понимает.

Ещё ни разу никто не уличил ни intel, ни amd в нарушении спецификаций. Если интересно - можете создать тренд на f.osdev.org и подождать, уверен вам покажут где это описано.

SYSENTER/SYSEXIT/SYSCALL/SYSRET вводились для ускоренной передачи управления между уровнями процессора и отхода от прерываний (с учётом того что прерывания сейчас через MSI, которое MMIO, это более чем логично).

Шаманство с состояниями процессора и флагами было всегда. Маскируемые прерывания, немаскируемые, исключения во время вызова обработчика прерывания, прерывание во время вызова другого прерывания, приоритет прерываний, и т.п. Почитай тот же f.osdev.org где начинающие ОС-кодеры описывают свои злоключения, там добрая треть проблем из-за настройки механизма прерываний.

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

27. "Опасные уязвимости в Xen и FreeBSD, проявляющиеся на 64-разр..."  +/
Сообщение от ананим (?), 13-Июн-12, 16:08 
>Ещё ни разу никто не уличил ни intel, ни amd в нарушении спецификаций.

там вон вверху ссылка на пдф с упоминанием 121 ошибки.
специально для ваней:
Sequential Execution Across Non-Canonical Boundary
Causes Processor Hang
Description
The processor will hang when the following conditions are met:
• The processor is in 64-bit mode
• The code segment limit = 0xFFFF_FFFF
• The last byte of the current instruction is located at 0x7FFF_FFFF_FFFF
• The next sequential instruction fetch is attemped at 0x8000_0000_0000
The correct behaviour is to cause #GP (general protection exception).
Potential Effect on System
The system hangs.
Suggested Workaround
The operating system should not allocate the page at the boundary of canonical address space.

так вот, это и есть нарушение спецификации. :D

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

28. "Опасные уязвимости в Xen и FreeBSD, проявляющиеся на 64-разр..."  +/
Сообщение от Аноним (-), 13-Июн-12, 16:13 
> А не могли бы вы разговаривать повежливее а не на уровне пятого класса школы?

Это Ваня, который гадит на форумы в обмен на наборы байтиков от MS. Как-то наивно ожидать что лох согласный делать кучу работы за право аренды вшивых байтиков будет титаном мысли. А вот уровень развития харакретный для пятиклассников - самое то что надо: несложно запудрить мозг, заставив вкалывать как папу Карло за подачки фактической себестоимостью в $0.

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

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

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




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

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