Introducere în Ruby on Rails
Ruby on Rails (Rails) este un cadru web MVC (Model-View-Controller) complet construit cu Ruby. Acesta vine "cu baterii incluse", oferind dezvoltatorilor tot ceea ce au nevoie din cutie: un Mapper Object-Relational (Active Record), o cerere/răspuns și un strat de vizualizare (Action Pack/Action View), procesarea lucrărilor în fundal, mailuri, suport WebSocket, stocare și încărcare de fișiere (Active Storage) și multe altele.
De la lansarea sa inițială în 2004, Ruby on Rails a devenit unul dintre cele mai adoptate framework-uri web din lume. În prezent, acesta alimentează milioane de site-uri web și aplicații - inclusiv platforme de profil precum GitHub, Shopify, Airbnb, Basecamp și Netflix. Cu accentul său puternic pe Convenție în detrimentul Configurației, productivitatea dezvoltatorilor și crearea rapidă de prototipuri, Rails a devenit un cadru ideal atât pentru startup-uri, cât și pentru întreprinderi mari.
Unitatea 515 Cercetare: Expunerea vulnerabilităților critice în Rails
În timpul unei cercetări independente, Thai Do, membru al echipei Unității 515 a OPSWAT, a identificat două vulnerabilități în Ruby on Rails - dintre care una ar putea duce la executarea codului de la distanță (RCE). Aceste descoperiri au fost dezvăluite în mod responsabil echipei de securitate Rails, cu care OPSWAT coordonat întregul proces.
La 13 august 2025, echipa Rails a publicat avertismente publice și a lansat versiuni corectate care abordează ambele vulnerabilități.
Versiuni afectate și versiuni fixate
Componentă | Versiuni afectate | Versiuni fixe |
---|---|---|
Stocare activă (CVE-2025-24293) | Rails ≥ 5.2.0 și sub versiunea fixă | 7.1.5.2, 7.2.2.2, 8.0.2.1 |
Înregistrarea înregistrărilor active (CVE-2025-55193) | Rails < 7.1.5.2, < 7.2.2.2, < 8.0.2.1 | 7.1.5.2, 7.2.2.2, 8.0.2.1 |
Probleme de securitate identificate în Rails
CVE-2025-24293 - Metode de transformare nesigure pentru stocarea activă
Această vulnerabilitate afectează Active Storage în versiunile Rails ≥ 5.2.0. Ea apare atunci când metode nesigure de transformare a imaginilor sunt transmise către mini_magick, care - atunci când sunt combinate cu intrări nevalidate ale utilizatorului - ar putea duce la executarea codului de la distanță (RCE). Deși Rails notează că defectul nu este exploatabil în configurația implicită, aplicațiile care expun utilizatorilor opțiuni de transformare sunt deosebit de expuse riscului.
CVE-2025-55193 - Injecție ANSI Escape în jurnalizarea Active Record
Această vulnerabilitate afectează jurnalizarea Active Record în toate versiunile Rails anterioare versiunilor 7.1.5.2, 7.2.2.2 și 8.0.2.1. Atacatorii ar putea injecta identificatori special creați care conțin secvențe de scăpare ANSI în jurnale, putând manipula modul în care interogările apar în terminalul de ieșire și conducând la jurnale înșelătoare sau corupte. Deși defectul nu expune în mod direct date sau nu permite executarea codului, acesta ar putea îngreuna eforturile de monitorizare și de răspuns la incidente. Echipa de securitate Rails a rezolvat problema în aceleași versiuni corectate.
Analiza tehnică a CVE-2025-24293 - Active Storage Remote Code Execution
Prezentare generală a stocării active
Active Storage este cadrul încorporat în Rails pentru gestionarea încărcărilor de fișiere. Acesta permite dezvoltatorilor să atașeze fișiere la modele Active Record și să le stocheze fie local (pentru dezvoltare/testare), fie pe servicii cloud precum Amazon S3, Google Cloud Storage sau Microsoft Azure. Caracteristicile Core includ efectuarea de transformări ale imaginilor, generarea de previzualizări pentru fișiere care nu sunt imagini, cum ar fi PDF-uri și videoclipuri, și oglindirea încărcărilor către mai multe servicii pentru redundanță sau migrare.
Cum funcționează transformările de imagine
Transformările de imagine permit dezvoltatorilor să livreze atașamente la dimensiuni sau formate specifice. Acest lucru se realizează prin apelarea metodei variant() pe un atașament imagine și prin transmiterea operațiunilor acceptate.
Atunci când un client solicită o variantă URL, Active Storage efectuează transformarea la cerere din blobul original, stochează rezultatul în serviciul configurat și returnează o redirecționare către fișierul nou generat.
Rails acceptă două procesoare pentru transformarea imaginilor: Vips și MiniMagick. Procesorul utilizat poate fi configurat prin config.active_storage.variant_processor.
Operațiile specifice acceptate în transformările de imagine sunt determinate de gemul image_processing și depind de procesorul de bază care este configurat pentru aplicația Rails.
Remediere incompletă a CVE-2022-21831
Cu toate acestea, în timpul unei revizuiri mai aprofundate a patch-ului și a codului sursă Rails, Thai DoOPSWAT Unit 515) a descoperit un bypass care a făcut ca remedierea inițială să fie incompletă. Această ocolire a reintrodus o cale prin care atacatorii pot obține executarea codului de la distanță (RCE), ceea ce a condus la dezvăluirea CVE-2025-24293.
Cauza principală în image_processing Gem
Atunci când se aplică o transformare, Rails deleagă operațiunea gemului image_processing, care apelează în cele din urmă ImageProcessing::Processor#call în lib/image_processing/processor.rb
Dacă procesorul de variante configurat este MiniMagick, vulnerabilitatea se află în două funcții din lib/image_processing/mini_magick.rb:
-load_image - acceptă opțiuni nevalidate de la **loader.
-save_image - acceptă opțiuni nevalidate de la **saver.
Pentru load_image, orice perechi cheie-valoare din **loader, altele decât page, geometry și auto_orient, sunt păstrate în **options. Același lucru este valabil și pentru save_image, unde alte chei decât allow_splitting rămân în **options. Aceste opțiuni sunt trecute ulterior la Utils.apply_options(magick, **options), care le aplică ca indicatori CLI MiniMagick (de exemplu, -quality).
Deși loader și saver sunt incluse în lista implicită de opțiuni permise și, prin urmare, sunt considerate sigure, această încredere este greșită. Cu ajutorul unor intrări pregătite cu atenție, un atacator poate exploata aceste opțiuni pentru a ocoli verificările și, în cele din urmă, pentru a determina Rails să execute comenzi arbitrare de sistem pe mașina gazdă.
Scenariul exploatării în aplicațiile Rails
Dacă o aplicație trece date nevalidate de la utilizator direct în metodele de transformare, de exemplu:
Un atacator ar putea introduce date malițioase pentru a manipula opțiunile de încărcare sau de economisire. Acest lucru ar putea ocoli lista de permisiuni și ar putea executa comenzi arbitrare pe server, ceea ce ar duce la executarea codului la distanță (RCE).
Dovada de concept: Executarea codului de la distanță
În aplicațiile Rails care rulează versiuni vulnerabile (anterioare versiunilor 8.0.2.1, 7.2.2.2 și 7.1.5.2), OPSWAT Unit 515 a demonstrat cu succes un lanț de exploatare în care intrările de transformare nevalidate au dus la executarea comenzilor shell.
Acest video PoC demonstrează capacitatea de exploatare a CVE-2025-24293 și evidențiază impactul real asupra aplicațiilor Rails:
Servicii de atenuare și testare profesională a penetrării
Organizațiile trebuie să abordeze CVE-2025-24293 și CVE-2025-55193 prin actualizarea Ruby on Rails la cele mai recente versiuni de securitate (7.1.5.2, 7.2.2.2 sau 8.0.2.1). Dacă remedierea imediată nu este posibilă, măsurile temporare de protecție includ restricționarea transformărilor de imagini la presetări predefinite, validarea și dezinfectarea datelor de intrare ale utilizatorului, întărirea politicilor ImageMagick și asigurarea faptului că jurnalele nu pot interpreta secvențele de scăpare ANSI.
Cu toate acestea, aplicarea de patch-uri nu elimină toate riscurile în mediile web moderne. Logica de afaceri personalizată, integrările cu terți și conductele de implementare complexe creează adesea căi exploatabile care depășesc recomandările furnizorilor. Acesta este motivul pentru care testarea penetrării aplicațiilor web este esențială.
La OPSWAT, Unitatea 515 oferă servicii specializate de testare a penetrării aplicațiilor web care depășesc cu mult scanerele automate sau auditurile pe liste de verificare. Echipa noastră este formată din experți experimentați în securitate ofensivă care au ani de experiență în testarea aplicațiilor la scară largă în diverse industrii. Folosind o metodologie sistematică, adversă, descoperim vulnerabilități în fluxurile de autentificare, validarea intrărilor, controlul accesului și manipularea datelor - probleme care pot persista chiar și în cadre complet patchate, cum ar fi Ruby on Rails.
Fiecare angajament combină expertiza tehnică profundă cu raportarea pregătită pentru întreprinderi, oferind informații clare și utile care permit echipelor de dezvoltare să remedieze defectele în mod eficient. Prin angajarea Unit 515, organizațiile au garanția că aplicațiile lor critice sunt testate de experți care nu numai că simulează tehnici de atac din lumea reală, dar și validează faptul că remedierile elimină cu adevărat lacunele. Această expertiză consolidează eforturile de remediere, reduce riscul rezidual și sporește rezistența generală a aplicațiilor împotriva amenințărilor în continuă evoluție