2016-11-28 13:02 GMT+01:00 Alex Muntada <[email protected]>: > Joaquin Ferrero: > > > IO::Async <https://metacpan.org/release/IO-Async> - Asynchronous > > event-driven programming > > > > if( eval { require "IO/Async/OS/$^O.pm" } ) { > > @ISA = "IO::Async::OS::$^O"; > > } > > Cuidado con usar $^O de esta manera porque no es una variable > read-only (se podría manipular para cargar otro módulo), e.g. > > use v5.20; > > package Trojan; > sub run { $^O = "../../../Trojan/trojan/$^O" } > > package main; > say $^O; > Trojan->run(); > say $^O; > > Es preferible usar $Config{osname}, que sí es read-only. > > Me pregunto hasta que punto esto sería una vulnerabilidad grave > de los módulos que usan $^O a saco y que tal vez habría que > informar de éllo. ¿Qué opináis? > > Pero, ¿como cambias $^O desde el exterior?¿existe alguna forma de hacerlo que no implique poder correr código arbitrario Perl dentro del programa?
En tu ejemplo, has cargado un paquete "Trojan", pero un atacante que consigue hacer eso ya tiene el control completo del programa y puede manipular @ISA o hacer cualquier otra cosa que le plazca directamente.
_______________________________________________ Madrid-pm mailing list [email protected] http://mail.pm.org/mailman/listinfo/madrid-pm
