[Madrid-pm] Selección de módulos dependiendo del S.O.

salvador fandino sfandino en gmail.com
Lun Nov 28 04:58:29 PST 2016


2016-11-28 13:02 GMT+01:00 Alex Muntada <alexm en caliu.cat>:

> 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.
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://mail.pm.org/pipermail/madrid-pm/attachments/20161128/f26a3f36/attachment.html>


Más información sobre la lista de distribución Madrid-pm