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 ?
on 2012-06-26 09:52
on 2012-06-26 09:57
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
on 2012-06-26 10:09
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.
on 2012-06-26 10:20
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:
on 2012-06-26 12:07
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/
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
Log in with Google account | Log in with Yahoo account
No account? Register here.