GHSA-66HF-2P6W-JQFW
Vulnerability from github – Published: 2021-12-08 19:57 – Updated: 2022-08-11 19:19
VLAI?
Summary
Laravel Framework XSS in Blade templating engine
Details
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 ?
6.1 (Medium)
{
"affected": [
{
"package": {
"ecosystem": "Packagist",
"name": "laravel/framework"
},
"ranges": [
{
"events": [
{
"introduced": "0"
},
{
"fixed": "6.20.42"
}
],
"type": "ECOSYSTEM"
}
]
},
{
"package": {
"ecosystem": "Packagist",
"name": "laravel/framework"
},
"ranges": [
{
"events": [
{
"introduced": "7.0.0"
},
{
"fixed": "7.30.6"
}
],
"type": "ECOSYSTEM"
}
]
},
{
"package": {
"ecosystem": "Packagist",
"name": "laravel/framework"
},
"ranges": [
{
"events": [
{
"introduced": "8.0.0"
},
{
"fixed": "8.75.0"
}
],
"type": "ECOSYSTEM"
}
]
},
{
"package": {
"ecosystem": "Packagist",
"name": "illuminate/view"
},
"ranges": [
{
"events": [
{
"introduced": "0"
},
{
"fixed": "6.20.42"
}
],
"type": "ECOSYSTEM"
}
]
},
{
"package": {
"ecosystem": "Packagist",
"name": "illuminate/view"
},
"ranges": [
{
"events": [
{
"introduced": "7.0.0"
},
{
"fixed": "7.30.6"
}
],
"type": "ECOSYSTEM"
}
]
},
{
"package": {
"ecosystem": "Packagist",
"name": "illuminate/view"
},
"ranges": [
{
"events": [
{
"introduced": "8.0.0"
},
{
"fixed": "8.75.0"
}
],
"type": "ECOSYSTEM"
}
]
}
],
"aliases": [
"CVE-2021-43808"
],
"database_specific": {
"cwe_ids": [
"CWE-327",
"CWE-79"
],
"github_reviewed": true,
"github_reviewed_at": "2021-12-07T21:33:14Z",
"nvd_published_at": "2021-12-08T00:15:00Z",
"severity": "MODERATE"
},
"details": "A security researcher has disclosed a possible XSS vulnerability in the Blade templating engine.\n\nGiven the following two Blade templates:\n\nresources/views/parent.blade.php:\n\n```html\n@section(\u0027content\u0027)\n\u003cinput value=\"{{ $value }}\"\u003e\n@show\n```\n\nresources/views/child.blade.php:\n\n```html\n@extends(\u0027parent\u0027)\n\n@section(\u0027content\u0027)\n\u003cinput value=\"{{ $value }}\"\u003e\n@endsection\n```\n\nAnd a route like the following:\n\n```php\nRoute::get(\u0027/example\u0027, function() {\n $value = \u0027//localhost/###parent-placeholder-040f06fd774092478d450774f5ba30c5da78acc8## onclick=location.assign(this.value);//\u0027;\n\n return view(\u0027child\u0027, [\u0027value\u0027 =\u003e $value]);\n});\n```\n\nThe 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.\n\nThis vulnerability has been patched by determining the parent placeholder at runtime and using a random hash that is unique to each request.",
"id": "GHSA-66hf-2p6w-jqfw",
"modified": "2022-08-11T19:19:57Z",
"published": "2021-12-08T19:57:36Z",
"references": [
{
"type": "WEB",
"url": "https://github.com/laravel/framework/security/advisories/GHSA-66hf-2p6w-jqfw"
},
{
"type": "ADVISORY",
"url": "https://nvd.nist.gov/vuln/detail/CVE-2021-43808"
},
{
"type": "WEB",
"url": "https://github.com/laravel/framework/pull/39906"
},
{
"type": "WEB",
"url": "https://github.com/laravel/framework/pull/39908"
},
{
"type": "WEB",
"url": "https://github.com/laravel/framework/pull/39909"
},
{
"type": "WEB",
"url": "https://github.com/laravel/framework/commit/b8174169b1807f36de1837751599e2828ceddb9b"
},
{
"type": "WEB",
"url": "https://github.com/FriendsOfPHP/security-advisories/blob/master/illuminate/view/CVE-2021-43808.yaml"
},
{
"type": "WEB",
"url": "https://github.com/FriendsOfPHP/security-advisories/blob/master/laravel/framework/CVE-2021-43808.yaml"
},
{
"type": "PACKAGE",
"url": "https://github.com/laravel/framework"
},
{
"type": "WEB",
"url": "https://github.com/laravel/framework/releases/tag/v6.20.42"
},
{
"type": "WEB",
"url": "https://github.com/laravel/framework/releases/tag/v7.30.6"
},
{
"type": "WEB",
"url": "https://github.com/laravel/framework/releases/tag/v8.75.0"
}
],
"schema_version": "1.4.0",
"severity": [
{
"score": "CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N",
"type": "CVSS_V3"
}
],
"summary": "Laravel Framework XSS in Blade templating engine"
}
Loading…
Loading…
Sightings
| Author | Source | Type | Date |
|---|
Nomenclature
- Seen: The vulnerability was mentioned, discussed, or observed by the user.
- Confirmed: The vulnerability has been validated from an analyst's perspective.
- Published Proof of Concept: A public proof of concept is available for this vulnerability.
- Exploited: The vulnerability was observed as exploited by the user who reported the sighting.
- Patched: The vulnerability was observed as successfully patched by the user who reported the sighting.
- Not exploited: The vulnerability was not observed as exploited by the user who reported the sighting.
- Not confirmed: The user expressed doubt about the validity of the vulnerability.
- Not patched: The vulnerability was not observed as successfully patched by the user who reported the sighting.
Loading…
Loading…