Vulnerabilidade em str.format() em Python
Pré-requisitos: Python - função format()
str.format() é um dos métodos de formatação de string em Python3, que permite várias substituições e formatação de valor. Esse método nos permite concatenar elementos em uma string por meio da formatação posicional. Parece uma coisa bem legal. Mas a vulnerabilidade surge quando nosso aplicativo Python usa str.format na string controlada pelo usuário. Essa vulnerabilidade pode fazer com que os invasores tenham acesso a informações confidenciais.
Nota: Este problema foi relatado aqui
vulnerabilidade do formato str
Então, como isso se torna uma vulnerabilidade. Vamos ver o seguinte exemplo
Exemplo:
CONFIG
=
{
"KEY"
:
"ASXFYFGK78989"
}
class
PeopleInfo:
def
__init__(
self
, fname, lname):
self
.fname
=
fname
self
.lname
=
lname
def
get_name_for_avatar(avatar_str, people_obj):
return
avatar_str.
format
(people_obj
=
people_obj)
people
=
PeopleInfo(
'GEEKS'
,
'FORGEEKS'
)
st
=
input
()
get_name_for_avatar(st, people_obj
=
people)
Caso 1:
quando o usuário fornece o seguinte str como entrada
Avatar_ {people_obj.fname} _ {people_obj.lname}
Resultado:
Avatar_GEEKS_FORGEEKS
Caso 2:
quando o usuário insere o seguinte str como entrada
{people_obj .__ init __.__ globais __ [CONFIG] [CHAVE]}
Resultado:
ASXFYFGK78989
Isso ocorre porque as funções de formatação de string podem acessar objetos de atributos também, que podem vazar dados. Agora, uma pergunta pode surgir. É ruim usar str.format() ?. Não, mas se torna vulnerável quando é usado em strings controladas pelo usuário.
As postagens do blog Acervo Lima te ajudaram? Nos ajude a manter o blog no ar!
Faça uma doação para manter o blog funcionando.
70% das doações são no valor de R$ 5,00...
Diógenes Lima da Silva