Skip to content

Blade `@parent` Exploitation Leading To Possible XSS

Moderate
taylorotwell published GHSA-66hf-2p6w-jqfw Dec 7, 2021

Package

composer laravel/framework (Composer)

Affected versions

>=8.0.0, <8.75.0, >=7.0.0, <7.30.6, <6.20.42

Patched versions

6.20.42, 7.30.6, 8.75.0

Description

A security researcher has disclosed a possible XSS vulnerability in the Blade templating engine.

Given the following two Blade templates:

resources/views/parent.blade.php:

@section('content')
<input value="{{ $value }}">
@show

resources/views/child.blade.php:

@extends('parent')

@section('content')
<input value="{{ $value }}">
@endsection

And a route like the following:

Route::get('/example', function() {
    $value = '//localhost/###parent-placeholder-040f06fd774092478d450774f5ba30c5da78acc8## onclick=location.assign(this.value);//';

    return view('child', ['value' => $value]);
});

The broken HTML element may be clicked and the user is taken to another location in their browser due to XSS. This is due to the user being able to guess the parent placeholder SHA-1 hash by trying common names of sections. If the parent template contains an exploitable HTML structure an XSS vulnerability can be exposed.

This vulnerability has been patched by determining the parent placeholder at runtime and using a random hash that is unique to each request.

Severity

Moderate

CVE ID

CVE-2021-43808

Weaknesses

No CWEs

Credits