GitHub Advisoryadvisory · Packagist
GHSA-66hf-2p6w-jqfw Laravel Framework XSS in Blade templating engine
MEDIUM
Official page ↗
- Aliases
- CVE-2021-43808
- Ecosystem
- Packagist
- Packages
- laravel/framework, illuminate/view
- Severity
- Moderate
- CVSS vector
- CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N
- Weaknesses
- CWE-327, CWE-79
- Reviewed
- 2021-12-07
Affected packages
• Packagist laravel/framework: < 6.20.42 → fixed in 6.20.42
• Packagist laravel/framework: >= 7.0.0, < 7.30.6 → fixed in 7.30.6
• Packagist laravel/framework: >= 8.0.0, < 8.75.0 → fixed in 8.75.0
• Packagist illuminate/view: < 6.20.42 → fixed in 6.20.42
• Packagist illuminate/view: >= 7.0.0, < 7.30.6 → fixed in 7.30.6
• Packagist illuminate/view: >= 8.0.0, < 8.75.0 → fixed in 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:
```html
@section('content')
@show
```
resources/views/child.blade.php:
```html
@extends('parent')
@section('content')
@endsection
```
And a route like the following:
```php
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.
Related
Alias · CVE (1)
- CVE-2021-43808 Laravel is a web application framework. vulnerability
References
- https://github.com/laravel/framework/security/advisories/GHSA-66hf-2p6w-jqfw web
- https://nvd.nist.gov/vuln/detail/CVE-2021-43808 advisory
- https://github.com/laravel/framework/pull/39906 web
- https://github.com/laravel/framework/pull/39908 web
- https://github.com/laravel/framework/pull/39909 web
- https://github.com/laravel/framework/commit/b8174169b1807f36de1837751599e2828ceddb9b web
- https://github.com/FriendsOfPHP/security-advisories/blob/master/illuminate/view/CVE-2021-43808.yaml web
- https://github.com/FriendsOfPHP/security-advisories/blob/master/laravel/framework/CVE-2021-43808.yaml web
- https://github.com/laravel/framework package
- https://github.com/laravel/framework/releases/tag/v6.20.42 web
- https://github.com/laravel/framework/releases/tag/v7.30.6 web
- https://github.com/laravel/framework/releases/tag/v8.75.0 web