FireBird Remote Memory Corruption Exploit

Discussion in 'Уязвимости' started by Евгений Минаев, 9 Mar 2008.

  1. Евгений Минаев

    Евгений Минаев Elder - Старейшина

    Joined:
    12 Nov 2007
    Messages:
    55
    Likes Received:
    169
    Reputations:
    159
    Firebird - бесплатная система управления базами данных с открытым кодом. Спецтиально сконструированный пакет позволяет аварийно завершить работу сервера и выполнить произвольный код.После пары dos-пакетов сервер отказывается запускать.Рекоммендуется отправлять несколько пакетов сразу чтобы защитный механизм не успевал перезапускать сервер.

    Затронутые версии

    * Firebird SQL 1.0.3 and before.
    * Firebird SQL 1.5.5 and before.
    * Firebird SQL 2.0.3 and before.
    * Firebird SQL 2.1.0 Beta 2 and before.

    Незатронутые версии

    * Firebird SQL 1.5.6 (to be released)
    * Firebird SQL 2.0.4 (to be released)
    * Firebird SQL 2.1.0 RC1

    Техническое описание

    Нарушение памяти происходит когда парсер получает пакет с неправильным форматом данных. Подверженны переполнению пакеты

    * op_receive
    * op_start
    * op_start_and_receive
    * op_send
    * op_start_and_send
    * op_start_send_and_receive

    Уязвимый код

    PHP:
     *  src/remote/protocol.cpp:417
     
    *
     *      
    MAP(xdr_shortreinterpret_cast<SSHORT&>(data->p_data_request));
     *      
    MAP(xdr_shortreinterpret_cast<SSHORT&>(data->p_data_incarnation));
     *      
    MAP(xdr_shortreinterpret_cast<SSHORT&>(data->p_data_transaction));
     *      
    MAP(xdr_shortreinterpret_cast<SSHORT&>(data->p_data_message_number));
     *      return 
    xdr_request(xdrsdata->p_data_request,
     *           
    data->p_data_message_number,
     *           
    data->p_data_incarnation) ? P_TRUE(xdrsp) : P_FALSE(xdrsp);
    PHP:
    005637D0   8B4424 08        MOV EAX,DWORD PTR SS:[ESP+8]
    005637D4   0FB700           MOVZX EAX,WORD PTR DS:[EAX]
    005637D7   83EC 50          SUB ESP,50
    005637DA   56               PUSH ESI
    005637DB   8BF1             MOV ESI
    ,ECX
    005637DD   8B8E AC000000    MOV ECX
    ,DWORD PTR DS:[ESI+AC]
    005637E3   3B41 08          CMP EAX,DWORD PTR DS:[ECX+8]     <----  CRASH HERE
    Firebird Connect Packet

    PHP:
    *  0x0000   00 00 00 00 00 02 00 00-00 00 00 01 08 00 45 00   ..............E.
     *  
    0x0010   00 BC 00 00 00 00 40 06-00 25 C0 A8 7C 63 C0 A8   .ј....@..%АЁ|cАЁ
     
    *  0x0020   7C 63 0B EA 0E 94 00 00-00 01 00 00 00 01 50 10   |c.к.........P.
     *  
    0x0030   40 00 00 00 00 00 00 00-00 01 00 00 00 13 00 00   @...............
     *  
    0x0040   00 02 00 00 00 1D 00 00-00 3C 43 3A 5C 50 72 6F   .........<C:\Pro
     
    *  0x0050   67 72 61 6D 20 46 69 6C-65 73 5C 46 69 72 65 62   gram Files\Fireb
     
    *  0x0060   69 72 64 5C 46 69 72 65-62 69 72 64 5F 31 5F 35   ird\Firebird_1_5
     
    *  0x0070   5C 65 78 61 6D 70 6C 65-73 5C 45 4D 50 4C 4F 59   \examples\EMPLOY
     
    *  0x0080   45 45 2E 66 64 62 00 00-00 02 00 00 00 13 01 04   EE.fdb..........
     *  
    0x0090   52 4F 4F 54 04 09 75 6E-64 65 72 77 68 61 74 06   ROOT..underwhat.
     *  
    0x00A0   00 00 00 00 00 08 00 00-00 01 00 00 00 02 00 00   ................
     *  
    0x00B0   00 03 00 00 00 02 00 00-00 0A 00 00 00 01 00 00   ................
     *  
    0x00C0   00 02 00 00 00 03 00 00-00 04                     ..........
    Firebird Login Packet

    PHP:
    *  0x0000   00 00 00 00 00 02 00 00-00 00 00 01 08 00 45 00   ..............E.
     *  
    0x0010   00 94 00 00 6C 6C 40 06-93 E0 C0 A8 7C 63 C0 A8   ...ll@.“аАЁ|cАЁ
     
    *  0x0020   7C 63 0B EA 0E 94 00 00-00 95 00 00 00 11 50 10   |c.к........P.
     *  
    0x0030   40 00 00 00 00 00 00 00-00 13 00 00 00 00 00 00   @...............
     *  
    0x0040   00 3C 43 3A 5C 50 72 6F-67 72 61 6D 20 46 69 6C   .<C:\Program Fil
     
    *  0x0050   65 73 5C 46 69 72 65 62-69 72 64 5C 46 69 72 65   es\Firebird\Fire
     
    *  0x0060   62 69 72 64 5F 31 5F 35-5C 65 78 61 6D 70 6C 65   bird_1_5\example
     
    *  0x0070   73 5C 45 4D 50 4C 4F 59-45 45 2E 66 64 62 00 00   s\EMPLOYEE.fdb..
     *  
    0x0080   00 1E 01 1C 06 53 59 53-44 42 41 1E 0B 51 50 33   .....SYSDBA..QP3
     
    *  0x0090   4C 4D 5A 2F 4D 4A 68 2E-3A 04 00 00 00 00 3E 00   LMZ/MJh.:.....>.
     *  
    0x00A0   00 00          
    pastebin.x3k.ru/235
     
    #1 Евгений Минаев, 9 Mar 2008
    Last edited: 9 Mar 2008
    6 people like this.