Atacando o picles de Python
Estou escrevendo um aplicativo da web que armazena a entrada do usuário em um objeto. Este objeto será decapado.
É possível que um usuário crie entradas maliciosas que possam fazer algo notório quando o objeto não é processado?
Aqui está um exemplo de código realmente básico que ignora princípios maravilhosos, como o encapsulamento, mas sintetiza o que estou vendo:
import pickle
class X(object):
some_attribute = None
x = X()
x.some_attribute = 'insert some user input that could possibly be bad'
p = pickle.dumps(x)
# Can bad things happen here if the object, before being picked, contained
# potentially bad data in some_attribute?
x = pickle.loads(p)