Ruby on Rails: vulnerabilità  SQL Injection

venerdì 4 gennaio 2013 - 12:39

di Claudio Garau

Recentemente è stata individuata una vulnerabilità  a carico di Rails SQL che riguarderebbe tutte le versioni di Ruby on Rails; si tratterebbe in pratica di una falla che permetterebbe l’esecuzione di attacchi di tipo SQL injection attraverso i metodi dynamic finder; eventuali exploit dovrebbero però poter essere efficaci soltanto in determinati contesti, come per esempio nel caso in cui si utilizzi Authlogic per l’autenticazione e sia noto il secret token di sessione.

Come è noto, per operare con le basi di dati il framework fornisce dei finder methods per i models ActiveRecord, ad esempio “User.find(params[:id])” per una chiave primaria messa a disposizione tramite un parametro di input denominato “id”; vengono poi forniti dynamic finder che producono un metodo find_by_* per le colonne del model, per esempio “User.find_by_id(params[:id])”. Il problema sarebbe stato riscontrato proprio in questi ultimi.

Attualmente sono già  disponibili i fix per le release 3.2.10, 3.1.9 e 3.0.18, essi dovrebbero impedire che i dynamic finders nell’Active Record estrapolino opzioni dai parametri di metodo, questi ultimi potrebbero infatti essere adottati erroneamente come scope utilizzabile quale tramite per SQL injection.

Posto che un aggiornamento sarebbe comunque consigliabile, è bene precisare che, almeno basandosi sulle analisi effettuate, la vulnerabilità  non dovrebbe affliggere i comuni finder methods, inoltre non dovrebbero essere possibili exploit tramite request parameters; va poi detto che tale bug non significa che il framework non operi alcuni filtro sugli input SQL ricevuti. Analogamente, andrebbe infine precisato che la falla non riguarda il già  citato Authlogic ma ROR stesso.

Categoria: Ruby | Commenta

Lascia un Commento

L'indirizzo email non verrà pubblicato. I campi obbligatori sono contrassegnati *

È possibile utilizzare questi tag ed attributi XHTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>