ghsa-66hf-2p6w-jqfw
Vulnerability from github
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')
<input value="{{ $value }}">
@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.
{ "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" }
Sightings
Author | Source | Type | Date |
---|
Nomenclature
- Seen: The vulnerability was mentioned, discussed, or seen somewhere by the user.
- Confirmed: The vulnerability is confirmed from an analyst perspective.
- Exploited: This vulnerability was exploited and seen by the user reporting the sighting.
- Patched: This vulnerability was successfully patched by the user reporting the sighting.
- Not exploited: This vulnerability was not exploited or seen by the user reporting the sighting.
- Not confirmed: The user expresses doubt about the veracity of the vulnerability.
- Not patched: This vulnerability was not successfully patched by the user reporting the sighting.