[Rio-pm] Padrões de Código seguro

thiagoglauco em ticursos.net thiagoglauco em ticursos.net
Sexta Janeiro 11 06:32:21 PST 2013


O %n coloca o comprimento da string de printf ou sprintf na variável e 
serve para você controlar o tamanho de um string que foi criado de forma 
dinâmica, por exemplo.

No exemplo, um atacante adiciona a string %n em uma variável de 
ambiente.

Caso seu programa utilize printf ou sprintf e a string da variável de 
ambiente maliciosa, alguma variável interna de seu programa pode ser 
modificada e alterar o resto do processamento.

Em 2013-01-11 11:00, Tiago Peczenyj escreveu:
> A explicação eu li, o que eu não entendi é qual o uso do %n na vida 
> real.
>
> 2013/1/11 <ulisses em ibiz.com.br>
>
>> a linha printf "$prompt: Password ok? %dn", $is_ok;
>>  
>> é que seta $is_ok = 4 (no exemplo do site) pq $prompt contem ‘%n’ 
>> dentro dele e %n, no printf, faz com q a prox $var, no caso, $id_ok 
>> receba 4 que o tamanho do string.
>>  
>> veja explicacao na propria pagina:
>>  
>> ... the %n instructed Perl to fill the first format string argument 
>> with the number of characters printed, which caused Perl to set 
>> the $is_ok variable to 4.....
>>  
>>  
>> veja on-liner abaixo:
>>  
>> perl -e "my $prompt='1234567%n'; my $password='xxxx'; my $is_ok = 
>> ($password eq 'goodpass'); printf "$prompt: Password ok? %dn", $is_ok; 
>> print $is_ok;"
>> 1234567: Password ok? 0
>> 7
>>  
>>  
>>
>>  
>>  
>> ULISSES GOMES
>> Tecnologia da Informação
>>
>> IBIZ Tecnologia
>> +55 11 5579-3178 [6] r. 226
>> ulisses em ibiz.com.br
>> www.ibiz.com.br [7]
>>
>> Esta mensagem de correio eletrônico e seus documentos anexos estão 
>> dirigidos EXCLUSIVAMENTE aos destinatários especificados. A informação 
>> contida pode ser CONFIDENCIAL e/ou estar LEGALMENTE PROTEGIDA e não 
>> necessariamente reflete a opinião da IBIZ. Se você receber esta 
>> mensagem por ENGANO, por favor, comunique imediatamente ao remetente e 
>> ELIMINE-A já que você NÃO ESTÁ AUTORIZADO ao uso, revelação, 
>> distribuição, impressão ou cópia de toda ou alguma parte da informação 
>> contida. Obrigado.
>>
>>  
>>
>> FROM: Solli Honorio
>> SENT: Friday, January 11, 2013 10:26 AM
>> TO: Perl Mongers Rio de Janeiro
>>
>> SUBJECT: Re: [Rio-pm] Padrões de Código seguro
>>  
>>
>> perldoc -f sprintf 
>>  
>>
>> %n    special: *stores* the number of characters output so far into 
>> the next variable in the parameter list
>>  
>> Agora, o que isto significa, não tenho idéia :D !!!
>>
>> Em 11 de janeiro de 2013 10:22, Tiago Peczenyj 
>> <tiago.peczenyj em gmail.com> escreveu:
>>
>>> Divertido
>>>  
>>> alguem pode  me explicar o %n ?
>>>  
>>> 
>>> https://www.securecoding.cert.org/confluence/display/perl/IDS30-PL.+Exclude+user+input+from+format+strings 
>>> [4]
>>>
>>> 2013/1/11 <thiagoglauco em ticursos.net>
>>>
>>>> Caros monges, a Cert (www.cert.org [1]) desenvolve padrões e 
>>>> recomendações de segurança para a área de TI.
>>>> Achei bem interessante, pois eles têm recomendações para C, C++, 
>>>> Java e Perl.
>>>>
>>>> www.securecoding.cert.org [2]
>>>>
>>>> Os padrões para Perl e C++ ainda estão em desenvolvimento. Eles 
>>>> aceitam pitacos.
>>>>
>>>> regards.
>>>> _______________________________________________
>>>> Rio-pm mailing list
>>>> Rio-pm em pm.org
>>>> http://mail.pm.org/mailman/listinfo/rio-pm [3]
>>>
>>>  --
>>> Tiago B. Peczenyj
>>> Linux User #405772
>>>
>>> http://about.me/peczenyj [5]
>>> _______________________________________________
>>> Rio-pm mailing list
>>> Rio-pm em pm.org
>>> http://mail.pm.org/mailman/listinfo/rio-pm [3]
>>
>>  --
>> "o animal satisfeito dorme". - Guimarães Rosa
>>
>> -------------------------
>>
>> _______________________________________________
>> Rio-pm mailing list
>> Rio-pm em pm.org
>> http://mail.pm.org/mailman/listinfo/rio-pm [3]
>>
>> _______________________________________________
>> Rio-pm mailing list
>> Rio-pm em pm.org
>> http://mail.pm.org/mailman/listinfo/rio-pm [3]
>
> --
> Tiago B. Peczenyj
> Linux User #405772
>
> http://about.me/peczenyj [5]
>
> Links:
> ------
> [1] http://www.cert.org
> [2] http://www.securecoding.cert.org
> [3] http://mail.pm.org/mailman/listinfo/rio-pm
> [4]
> 
> https://www.securecoding.cert.org/confluence/display/perl/IDS30-PL.+Exclude+user+input+from+format+strings
> [5] http://about.me/peczenyj
> [6] tel:%2B55%2011%205579-3178
> [7] http://www.ibiz.com.br
>
> _______________________________________________
> Rio-pm mailing list
> Rio-pm em pm.org
> http://mail.pm.org/mailman/listinfo/rio-pm



Mais detalhes sobre a lista de discussão Rio-pm