LINUX.ORG.RU
ФорумTalks

В проприетарном драйвере для видеокарт AMD найден «бэкдор»

 


1

0
nm /usr/lib/libamdocl64.so | grep -i backdoor
...
osTestBackdoorATI

А в Debian 40:

$ find /usr/bin /usr/lib -type f |xargs -P8 grep -il backdoor

/usr/lib/debug/lib/modules/3.12-1-amd64/kernel/drivers/media/usb/siano/smsusb.ko
/usr/lib/debug/lib/modules/3.12-1-amd64/kernel/drivers/net/wireless/rtlwifi/rtl8192ce/rtl8192ce.ko
/usr/lib/debug/lib/modules/3.12-1-amd64/kernel/drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common.ko
/usr/lib/debug/lib/modules/3.12-1-amd64/kernel/drivers/net/wireless/rtlwifi/rtl8192se/rtl8192se.ko
/usr/lib/debug/lib/modules/3.12-1-amd64/kernel/drivers/net/wireless/rtlwifi/rtl8192de/rtl8192de.ko
/usr/lib/debug/lib/modules/3.12-1-amd64/kernel/drivers/net/wireless/rtlwifi/rtl8723ae/rtl8723ae.ko
/usr/lib/debug/lib/modules/3.12-1-amd64/kernel/drivers/net/wireless/rtlwifi/rtl8188ee/rtl8188ee.ko
/usr/lib/debug/lib/modules/3.12-1-amd64/kernel/drivers/net/wireless/rtlwifi/rtl8192cu/rtl8192cu.ko
/usr/lib/debug/lib/modules/3.12-1-amd64/kernel/drivers/net/wireless/rtlwifi/rtlwifi.ko
/usr/lib/debug/lib/modules/3.12-1-amd64/kernel/drivers/net/wireless/rtlwifi/rtl_usb.ko
/usr/lib/debug/lib/modules/3.12-1-amd64/kernel/drivers/net/wireless/rtlwifi/rtl_pci.ko
/usr/lib/debug/lib/modules/3.12-1-amd64/kernel/drivers/media/common/siano/smsmdtv.ko
/usr/lib/debug/lib/modules/3.12-1-amd64/kernel/drivers/media/common/siano/smsdvb.ko
/usr/lib/python2.6/hmac.py
/usr/lib/python2.6/hmac.pyc
/usr/lib/python2.7/hmac.py
/usr/lib/python2.7/hmac.pyc
/usr/lib/x86_64-linux-gnu/libgcj.so.14.0.0
/usr/lib/virtualbox/components/VBoxC.so
/usr/lib/virtualbox/VBoxPython.so
/usr/lib/virtualbox/VBoxXPCOMC.so
/usr/lib/virtualbox/VirtualBox.so
/usr/lib/perl5/Net/SSLeay.pod
/usr/lib/virtualbox/VBoxPython2_6.so
/usr/lib/virtualbox/VBoxAuthSimple.so
/usr/lib/virtualbox/VBoxSDL.so
/usr/lib/virtualbox/VBoxSVC
/usr/lib/virtualbox/VBoxDD.so
/usr/lib/virtualbox/VBoxAutostart
/usr/lib/virtualbox/VBoxManage
/usr/lib/virtualbox/VBoxHeadless.so
/usr/lib/virtualbox/VBoxBalloonCtrl
/usr/lib/virtualbox/libvboxjxpcom.so
/usr/lib/virtualbox/VBoxSharedCrOpenGL.so
/usr/lib/virtualbox/VBoxTestOGL
/usr/lib/virtualbox/VBoxRT.so
/usr/lib/virtualbox/vboxwebsrv
/usr/lib/virtualbox/VBoxDD2.so
/usr/lib/x86_64-linux-gnu/libcufft.so.5.0.35
/usr/lib/x86_64-linux-gnu/libgcj.so.13.0.0

Источник

Ждем

В проприетарном драйвере для видеокарт NVIDIA найден «бэкдор»

Бугога

RedEyedMan3 ()

Ты просто ненавидишь всё красное

darkenshvein ★★★★★ ()
Ответ на: комментарий от Sadler

При желании ещё погрепайте сырцы ядра. Тоже много бэкдоров найдёте. Уже вижу заголовки: «Никогда ещё работа специалистов по безопасности не была столь простой! Магический греп сам находит бэкдоры!»

Sadler ★★★ ()
Ответ на: комментарий от Sadler

В среднем находится один бэкдор на 64 пебибайта [псевдо]случайных данных. Хватит ли остатка твоей жизни на ожидание нахождения хотя бы одного бэкдора в /dev/urandom?

NeXTSTEP ★★ ()
Ответ на: комментарий от NeXTSTEP

В среднем находится один бэкдор на 64 пебибайта [псевдо]случайных данных. Хватит ли остатка твоей жизни на ожидание нахождения хотя бы одного бэкдора в /dev/urandom?

Это вероятностный процесс, как повезёт. Могу и через секунду найти. Суть в том, что оно точно найдётся. И всё, паника, в /dev/urandom обнаружен бэкдор!

Sadler ★★★ ()
Ответ на: комментарий от Sadler

Со смертью так же, можешь и через полсекунды умереть.

NeXTSTEP ★★ ()

А ведь правда! /usr/lib/python2.7/hmac.py:

# A unique object passed by HMAC.copy() to the HMAC constructor, in order
# that the latter return very quickly.  HMAC("") in contrast is quite
# expensive.
_secret_backdoor_key = []

class HMAC:
    """RFC 2104 HMAC class.  Also complies with RFC 4231.

    This supports the API for Cryptographic Hash Functions (PEP 247).
    """
    blocksize = 64  # 512-bit HMAC; can be changed in subclasses.

    def __init__(self, key, msg = None, digestmod = None):
      ...
        if key is _secret_backdoor_key: # cheap
            return

ziemin ★★ ()
Ответ на: комментарий от NeXTSTEP

Со смертью так же, можешь и через полсекунды умереть.

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

ТС, возьми уже да дизассемблируй файлик, посмотри, что реально эта штука делает.

Sadler ★★★ ()
Последнее исправление: Sadler (всего исправлений: 3)

Мало кто знает, но в старых картах ATI сзади была маленькая дверца, в которой жил гномик, который крутил шестерёнки в glxgears. Потом тёплые ламповые карты делать перестали, и в драйвера стали вставлять такую проверку.

iamsoaw ()
/ (fcn) sym.osTestBackdoorATI 122
|          0x004e4d30    55           push ebp
|          0x004e4d31    89e5         mov ebp, esp
|          0x004e4d33    53           push ebx
|          0x004e4d34    83ec74       sub esp, 0x74
|          0x004e4d37    8b5508       mov edx, [ebp+sym.tlsReserved0]
|          0x004e4d3a    e8e849c7ff   call sym.__i686.get_pc_thunk.bx
|             sym.__i686.get_pc_thunk.bx(unk, unk)
|          0x004e4d3f    81c3693de601 add ebx, 0x1e63d69
|          0x004e4d45    8b4d10       mov ecx, [ebp+sym._ZN8tcmalloc11ThreadCache15threadLocalHeapE]
|          0x004e4d48    83fa01       cmp edx, 0x1
|      ,=< 0x004e4d4b    7443         jz 0x4e4d90
|      |   0x004e4d4d    83fa02       cmp edx, 0x2
|     ,==< 0x004e4d50    7426         jz 0x4e4d78
|     ||   0x004e4d52    31c0         xor eax, eax
|     ||   0x004e4d54    85d2         test edx, edx
|    ,===< 0x004e4d56    7408         jz 0x4e4d60
|    |||   0x004e4d58    83c474       add esp, 0x74
|    |||   0x004e4d5b    5b           pop ebx
|    |||   0x004e4d5c    5d           pop ebp
|    |||   0x004e4d5d    c3           ret
|    |||   0x004e4d5e    6690         nop
|    `---> 0x004e4d60    8b01         mov eax, [ecx]
|     ||   0x004e4d62    890424       mov [esp], eax
|     ||   0x004e4d65    e8d63d0000   call sym.osMemStateCheckPoint
|     ||      sym.osMemStateCheckPoint()
|     ||   0x004e4d6a    83c474       add esp, 0x74
|     ||   0x004e4d6d    5b           pop ebx
|     ||   0x004e4d6e    5d           pop ebp
|     ||   0x004e4d6f    0fb6c0       movzx eax, al
|     ||   0x004e4d72    c3           ret
|     ||   0x004e4d73    90           nop
|     ||   0x004e4d74    8d742600     lea esi, [esi]
|     `--> 0x004e4d78    8b01         mov eax, [ecx]
|      |   0x004e4d7a    890424       mov [esp], eax
|      |   0x004e4d7d    e8de3d0000   call sym.osMemStateDumpAllObjectsSince
|      |      sym.osMemStateDumpAllObjectsSince()
|      |   0x004e4d82    83c474       add esp, 0x74
|      |   0x004e4d85    5b           pop ebx
|      |   0x004e4d86    5d           pop ebp
|      |   0x004e4d87    0fb6c0       movzx eax, al
|      |   0x004e4d8a    c3           ret
|      |   0x004e4d8b    90           nop
|      |   0x004e4d8c    8d742600     lea esi, [esi]
|      `-> 0x004e4d90    8b4104       mov eax, [ecx+sym._ZN3amd7details7thread_E]
|          0x004e4d93    89442404     mov [esp+sym._ZN3amd7details7thread_E], eax
|          0x004e4d97    8b01         mov eax, [ecx]
|          0x004e4d99    890424       mov [esp], eax
|          0x004e4d9c    e8af3d0000   call sym.osMemStateDifferent
|             sym.osMemStateDifferent()
|          0x004e4da1    83c474       add esp, 0x74
|          0x004e4da4    5b           pop ebx
|          0x004e4da5    5d           pop ebp
|          0x004e4da6    0fb6c0       movzx eax, al
\          0x004e4da9    c3           ret
XVilka ★★★★★ ()
Ответ на: комментарий от XVilka

багет, стало быть, нужно хватать после osMemStateDumpAllObjectsSince() ?

x0r ★★★★★ ()

Прочти хотя бы комментарии по своей ссылке, хакир.

Gotf ★★★ ()

Срочно патентуй антиbackdoor им. Попова:

 find / -type f |xargs -P8 grep -il backdoor | while read line; do
  rm -f "$line"
  echo "Removed backdoor: $line"
 done
ncrmnt ★★★★★ ()
Ответ на: комментарий от XVilka

А что так рисует? Под другие архитектуры есть?

GAMer ★★★★★ ()
Ответ на: комментарий от XVilka

ух ты. а чем так дизассемблировать чтоб получить такой выхлоп?

dib2 ★★★★★ ()
Ответ на: комментарий от Sadler

ТС, возьми уже да дизассемблируй файлик, посмотри, что реально эта штука делает.

Для этого нужно много специфического опыта. Уже для 1 Мб дизассемблированый код не прочитать, не то что в голове уместить

router ★★★★★ ()
Ответ на: комментарий от router

Для этого нужно много специфического опыта. Уже для 1 Мб дизассемблированый код не прочитать, не то что в голове уместить

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

Sadler ★★★ ()
Ответ на: комментарий от Falcon-peregrinus

Так греп еще ищет построчно. Если повезет, еще должен быть End of Line.

a1batross ★★★★★ ()
Ответ на: комментарий от XVilka

Хм, зачётная штука, но, видать, сырая, по крайней мере для z80 выдаёт смещения по 16-32 бита там, где надо 8.

GAMer ★★★★★ ()
Ответ на: комментарий от GAMer

Можно и сюда подбробно отписать (желательно с примером файла или данных), я сам заполню баг.

XVilka ★★★★★ ()
Ответ на: комментарий от XVilka

Для Z80, в дисасме JR/JR C|NC|Z|NZ положительное смещение выдаётся длиной в 16 бит, отрицательное - 32, тогда как под это поле выделен всего один байт и смещение должно быть от -126 до +129(e-2).
C 16ю битами понятно, в 8мь не влезет, но вот для отрицательных смещений
[code]
rasm2 -a z80 -d 18fd
jr 0xFFFFFFFF
[/code]
математика 32хбитная, что для z80 как-то много =)
В целом-то это вроде и не баг, зависит от того, чем потом собирать.

GAMer ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.