[Python-es] Seguridad en Python

lasizoillo lasizoillo en gmail.com
Mar Oct 30 09:26:22 CET 2012


El día 29 de octubre de 2012 20:29, Dhannier Molina
<dhannier en gmail.com> escribió:
> Hola!! Alguien me puede ayudar, tengo dudas en relacion a la seguridad en
> python.
>
> Hay alguna forma de impedir que el Bytecode generado al correr un programa
> en python sea decompilado? Es decir, que un intruso pueda generar el archivo
> .PY a partir del .PYC.
>
> Necesito blindar lo mejor posible mi sistema, que herramientas podría usar?.
> Saludos!!
>

En mis tiempos de crackercillo solia usar algún que otro
disassembler[1] para obtener el código fuente ensamblador y cackear
los programas. En una primera pasada anulaba las protecciones
anti-debugging y luego con el debugger era más fácil encontrar las
partes del código "interesante". Puede que el programador que
comprimia los ejecutables, ponía anti-debuggers en el código, ...
creyese que hacía más seguro el código. Pero hasta un adolescente con
granos como yo sabía que si lo puede comprender una máquina, también
lo puede comprender un humano.

La única manera de "asegurar" tu código es no compartirlo. Y esta es
una condición necesaria, pero no suficiente, tienes que asegurar que
nadie pueda acceder a el a pesar de que no lo compartas.

Solo se me ocurren dos opciones aquí:
- O dejas de asociar seguridad a la disponibilidad del código fuente.
- O implementas la lógica que quieras "asegurar" en servidores que
ejecutan el código mediante procedimientos RPC y securizas los
servidores.

Para el resto de cosas, lo único que vas a hacer es perder más tiempo
tu del que vas a hacer perder a quien realmente quiera hacer
ingeniería inversa de tu código. Un código limpio es más fácil de
auditar, securizar y depurar que un código con herramientas de
ofuscación, compresión, anti-debuging que dificultan la depuración y
en ocasiones introducen bugs en la ejecución.

[1] http://en.wikipedia.org/wiki/Disassembler

Un saludo,

Javi


Más información sobre la lista de distribución Python-es