Compilare ruby

Ciao, tu che stai leggendo, se sei un purista ignora questa mail :slight_smile:

A volte sulle macchine devo dare accesso ad alcuni utenti esterni
(supporti, clienti, consulenti). In questi script vi sono procedure
aziendali - si direbbe segreti industriali - che automatizzano la nostra
infrastruttura oltre che metodi comodi di recupero credenziali, e trovo
inconveniente che qualcuno possa fare cat myscript.rb, leggere, copiare,
o anche modificare accidentalmente questi script.

So che dall’avvento delle release >= 1.9.x stata migliorata la VM e vi
sono interpreti alternativi, come RBX o JRuby, che creano bytecode.
Scrivo per chiedere se potete consigliarmi qualche best practice o
condividere esperienze (compatibilit, problemi) per compilare gli
script di sistema che scrivo in Ruby in binari eseguibili. Questi binari
devono girare su GNU/Linux x86_64. Li distribuisco automaticamente con i
miei .rpm o .deb privati o con puppet.

Cosa ne pensate?

Fabrizio.

Il 19/12/13 10:49, Fabrizio S. ha scritto:

sono interpreti alternativi, come RBX o JRuby, che creano bytecode.
Scrivo per chiedere se potete consigliarmi qualche best practice o
condividere esperienze (compatibilit, problemi) per compilare gli
script di sistema che scrivo in Ruby in binari eseguibili. Questi binari
devono girare su GNU/Linux x86_64. Li distribuisco automaticamente con i
miei .rpm o .deb privati o con puppet.

Cosa ne pensate?

Al codemotion o al rubyday, 2012 o 2013 (sorry, la mia memoria non
riesce a fare di meglio :D) c’era una presentazione di Github in cui,
tra le altre cose, spiegavano come offuscano il codice ruby per le
installazioni che fanno direttamente dai clienti enterprise.

Le vaghe indicazioni potrebbero aiutarti nel ricercare la presentazione
online :slight_smile:

Per semplicit, non essendo probabilmente script enormi e neanche usati
tutti i giorni, forse ti conviene un binario in C o in Go.

Inviato da iPhone

On 12/19/2013 11:21 AM, Luca P. wrote:

Per semplicit, non essendo probabilmente script enormi e neanche usati tutti i
giorni, forse ti conviene un binario in C o in Go.

In realt sono piuttosto complessi perch automatizzano setup,
aggiornamenti, backup e quant’altro… Li modifico spesso aggiungendo o
togliendo pezzi (poi si autodistribuiscono). Ti prego non dirmi che devo
riscriverli in C :smiley:

Al codemotion o al rubyday, 2012 o 2013 (sorry, la mia memoria non riesce a
fare di meglio :D) c’era una presentazione di Github in cui, tra le altre cose,
spiegavano come offuscano il codice ruby per le installazioni che fanno
direttamente dai clienti enterprise.

Le vaghe indicazioni potrebbero aiutarti nel ricercare la presentazione online
:slight_smile:

Ottimo grazie, cerco.

FS.

Ciao,

la compilazione pu andare solo se vuoi difenderti da cat myscript.rb e
poco altro, non la considerare una sicurezza per le credenziali presenti
nello script, se necessaria adotta soluzioni alternative.

2013/12/19 Tommaso V. [email protected]

On 12/19/2013 11:27 AM, Rocco G. wrote:

Ciao,

la compilazione pu andare solo se vuoi difenderti da cat myscript.rb e
poco altro, non la considerare una sicurezza per le credenziali presenti
nello script, se necessaria adotta soluzioni alternative.

S, desidero proprio questo: che quello che pubblico su Github sia
pubblico, ma che le procedure interne aziendali (proprio le cose che
facciamo, in un determinato ordine con determinate condizioni con
determinate ottimizzazioni e sotto determinate regole) non possano
essere lette, almeno non cos facilmente :slight_smile:

Cio lo desidera il mio capo.

FS.

Ciao Fabrizio, faccio la domanda banale. Non riesci a risolverla con
le permission Unix?

Compilare non ti cautela del tutto, se un segreto quello che vuoi
difendere, con xargs recuperi le stringhe… e uno bravo ti
disassembla l’ELF.
Se vuoi compilare allora devi necessariamente anche offuscare il
compilato per evitare che qualcuno abbia accesso a quelle
informazioni.

Altrimenti la cosa che puoi fare questa. Dai l’ownership del file
.rb ad un utente e 0 a group e other. Crei un launcher in C, lo fai
suid a root [1] (attenzione), e nel launcher cambi l’euid e fai la
system di “ruby file.rb”.

Pi semplice? Fai firmare una NDA ai consulenti esterni :slight_smile:

[1] (attenzione) il programma suid a root devi farlo in modo che non
accetti input dall’esterno, non onori alcuna variabile d’ambiente e
quindi non possa essere usato in una privilege escalation.

Paolo

2013/12/19 Fabrizio S. [email protected]:

determinate ottimizzazioni e sotto determinate regole) non possano
essere lette, almeno non cos facilmente :slight_smile:

Cio lo desidera il mio capo.

FS.


Ml mailing list
[email protected]
http://lists.ruby-it.org/mailman/listinfo/ml

–
$ cd /pub
$ more beer

The Application Security blog you really want to read:

Ciao Fabrizio,
per windows c’ una cosa del genere GitHub - larsch/ocra: One-Click Ruby Application Builder non
so se c’ anche su linux o se poi semplice modificarla per farla
andare anche su linux …

C’ un thread simile qu Is there way to convert a ruby script to executable file under Linux? - Ruby - Ruby-Forum

Ti posso, aggiungere che tempo fa girando su internet ho trovato un
prodotto simile a ocra, a pagamento, che sembrava molto completo,
purtroppo non riesco a ritrovare il link…

Saluti
Gianluca

Il 19 dicembre 2013 11:51, Paolo P. [email protected] ha
scritto: