Forum: Italian Ruby user group Sistema di scripting

Posted by Nicola Racco (gawaine)
on 2012-06-26 09:52
(Received via mailing list)
Ciao a tutti,
in un progetto ruby ho bisogno di gestire un sistema di "scripting" (pi 
o
meno), magari (e possibilmente) con ruby stesso ;)
Il ruby esterno, quando viene valutato, deve poter definire classi e 
metodi
che poi verranno istanziati e lanciati dal codice ruby principale.

Il mio problema  sulla sicurezza. Usando eval + $SAFE mi ritrovo nella
situazione in cui con $SAFE=3 il codice viene valutato ma pu ancora
eseguire operazioni scomode come un "exit". Usando $SAFE=4 non posso pi
fare neanche l'eval del codice ;)
In aggiunta devo tenere di conto anche della possibilit che il codice
caricato esegua qualcosa tipo: while true do; end

Idee ?
Posted by Paolo Perego (Guest)
on 2012-06-26 09:57
(Received via mailing list)
Eh Nicola... questo  un bel dilemma... dovresti cacciare quel
processo in una sorta di sandbox.
Per da quello che leggo qui[1], potresti aprire un Thread a parte,
impostare SAFE a 4 e fare il load() del codice che, come giustamente
dici tu,  da considerarsi malicious per definizione in questo caso.


Ciao ciao
thesp0nge

[1]http://www.ruby-doc.org/docs/ProgrammingRuby/html/taint.html
2012/6/26 Nicola Racco <nicola@nicolaracco.com>:
> In aggiunta devo tenere di conto anche della possibilit che il codice
> caricato esegua qualcosa tipo: while true do; end
>
> Idee ?
>
> --
> Nicola Racco -- nicola.racco@gmail.com
> _______________________________________________
> Ml mailing list
> Ml@lists.ruby-it.org
> http://lists.ruby-it.org/mailman/listinfo/ml



--
$ cd /pub
$ more beer

The blog that fills the gap between appsec and developers:
http://armoredcode.com
Posted by Sergio Berisso (Guest)
on 2012-06-26 10:09
(Received via mailing list)
Il giorno 26 giugno 2012 09:51, Nicola Racco <nicola@nicolaracco.com> ha
scritto:

> In aggiunta devo tenere di conto anche della possibilit che il codice
> caricato esegua qualcosa tipo: while true do; end
>
> Idee ?


Vedi se questi link:
http://stackoverflow.com/questions/2575435/a-scrip...
http://stackoverflow.com/questions/406833/language...
possono essere utili.

Cmq come dicono in quei 3d su stackoverflow "JavaScript has been running 
as
a sandbox language for a long time"
https://github.com/cowboyd/therubyracer potrebbe essere una soluzione :)

S.
Posted by Nicola Racco (gawaine)
on 2012-06-26 10:20
(Received via mailing list)
Grazie mille per i link. Mi  stato suggerito anche
https://github.com/Sophrinix/TryRuby (www.tryruby.org) che usa racc e
ruby_parser.

Il giorno 26 giugno 2012 10:09, Sergio Berisso
<sergio.berisso@gmail.com>ha scritto:
Posted by David Welton (Guest)
on 2012-06-26 12:07
(Received via mailing list)
2012/6/26 Paolo Perego <thesp0nge@gmail.com>:
> Eh Nicola... questo  un bel dilemma... dovresti cacciare quel
> processo in una sorta di sandbox.

Probabilmente in questo caso non sarebbe una buona soluzione,
mescolando linguaggi, ma Tcl ha un ottimo sistema di sandbox.

--
David N. Welton

http://www.welton.it/davidw/

http://www.dedasys.com/
Posted by francesco agati (francescoagati)
on 2012-06-27 14:45
Se usi javascript come sandbox potresti usare opal. Una gemma che 
compila codice ruby in js, ed eseguirlo con execjs.

L'unico limite e che non supporta l'eval attualmente
Please log in before posting. Registration is free and takes only a minute.
Existing account (Switch to SSL-encrypted connection)
NEW: Do you have a Google/GoogleMail or Yahoo account? No registration required!
Log in with Google account | Log in with Yahoo account
No account? Register here.