O módulo pickle do Python fornece mecanismos para serialização binária de objetos, onde o "pickling" transforma estruturas de objetos em fluxos de bytes e o "unpickling" restaura essas estruturas a partir dos bytes (Python Software Foundation, 2024). No entanto, a própria documentação alerta sobre riscos de segurança significativos.
É aquela amizade boa mas tem detalhes que vai ferrar com você
Nooooossa, que módulo eficiente! Serializa tudo!
Você sabe que vai dar merda
Todo mundo avisa que vai dar merda
A documentação GRITA que vai dar merda
Mas... Ah, dessa vez vai ser diferente!
Foco nobres camaradas....
O pickle é usado por uma razão simples: vai executar o código automaticamente durante a desserialização isso nunca foi um bug é o design que se tornou uma vulnerabilidade.
Vamos ao código principal :
1
stealer = LocalDataCollector()
malicious_pickle = pickle.dumps(stealer) # Serializa o objeto
2
result = pickle.loads(malicious_pickle) # DESSERIALIZAÇÃO = EXECUÇÃO
pickle.dumps(obj): Converte objeto Python para bytes
pickle.loads(bytes): Converte bytes para objeto Python EXECUTANDO CÓDIGO
E lógico um códi completo para testar.
Em cenários reais é criado um tipo de coletor de dados e enviado para algum local ou sequestro dos dados, botnet ou minerar bitcoin as possibilidade são muitas.
Esse é meu primeiro post.
código fonte completo: github.com/cardosource/
teste: ...cardosource/actions/
até mais...


Top comments (0)