SvelteKit vulnerable to Cross-Site Request Forgery
概要
SvelteKit vulnerable to Cross-Site Request Forgery
原文の説明
取得元が公開している説明をそのまま載せています (多くは英語)。
Summary
The SvelteKit framework offers developers an option to create simple REST APIs. This is done by defining a +server.js file, containing endpoint handlers for different HTTP methods.
SvelteKit provides out-of-the-box cross-site request forgery (CSRF) protection to it’s users. The protection is implemented at kit/src/runtime/server/respond.js#L52. While the implementation does a sufficient job in mitigating common CSRF attacks, the protection can be bypassed by simply specifying a different Content-Type header value.
Details
The CSRF protection is implemented using the code shown below.
const forbidden =
// (1)
request.method === 'POST' &&
// (2)
request.headers.get('origin') !== url.origin &&
// (3)
is_form_content_type(request);
if (forbidden) {
// (4)
const csrf_error = error(403, `Cross-site ${request.method} form submissions are forbidden`);
if (request.headers.get('accept') === 'application/json') {
return json(csrf_error.body, { status: csrf_error.status });
}
return text(csrf_error.body.message, { status: csrf_error.status });
}
If the incoming request specifies a POST method (1), the protection will compare the server’s origin with the value of the HTTP Origin header (2). A mismatch between these values signals that a potential attack has been detected. The final check is performed on the request’s Content-Type header (3) whether the value is either application/x-www-form-urlencoded or `multipart/form-d…
出典: OSV.dev (Open Source Vulnerabilities) NVD GitHub Advisory OSV
影響パッケージ
参照URL
- advisory nvd.nist.gov
- package github.com
- web github.com
- web github.com
- web github.com