{"answers":{"affected":"10 open source packages ship an affected version, including getkirby/cms. It affects 1 product.","exploited":"There is no known exploitation of CVE-2023-38491 in the wild and no public exploit code.","fix":"Upgrade getkirby/cms to a fixed version for your release line: 3.5.8.3, 3.6.6.3, 3.7.5.2 or 3.8.4.1.","what":"CVE-2023-38491 is a medium-severity cross-site scripting vulnerability in getkirby kirby, published on 27 Jul 2023. Any signed-in user can exploit it over the network, and only if a user opens a file or follows a link."},"fix_prompt":"Check this codebase for CVE-2023-38491 and fix it if it is affected.\n\nWhat it is: CVE-2023-38491 is a medium-severity cross-site scripting vulnerability in getkirby kirby, published on 27 Jul 2023. Any signed-in user can exploit it over the network, and only if a user opens a file or follows a link.\nExploitation: There is no known exploitation of CVE-2023-38491 in the wild and no public exploit code.\n\nAffected packages and fixed versions:\n- getkirby/cms (Packagist): affected all versions; fixed in 3.5.8.3\n- getkirby/cms (Packagist): affected all versions; fixed in 3.5.8.3\n- getkirby/cms (Packagist): affected from 3.6.0; fixed in 3.6.6.3\n- getkirby/cms (Packagist): affected from 3.6.0; fixed in 3.6.6.3\n- getkirby/cms (Packagist): affected from 3.7.0; fixed in 3.7.5.2\n- getkirby/cms (Packagist): affected from 3.7.0; fixed in 3.7.5.2\n- getkirby/cms (Packagist): affected from 3.8.0; fixed in 3.8.4.1\n- getkirby/cms (Packagist): affected from 3.8.0; fixed in 3.8.4.1\n- getkirby/cms (Packagist): affected from 3.9.0; fixed in 3.9.6\n- getkirby/cms (Packagist): affected from 3.9.0; fixed in 3.9.6\n\nTask:\n1. Search the dependency manifests and lockfiles (for example package.json, package-lock.json, requirements.txt, poetry.lock, uv.lock, pom.xml, build.gradle, go.mod, Cargo.lock, Gemfile.lock) and any Dockerfiles for the affected packages, including transitive dependencies.\n2. If an affected version is in use, upgrade it to the fixed version for its release line with the project's package manager, so the lockfile is regenerated. Prefer the smallest upgrade that fixes it.\n3. If there is no fix, or the upgrade would break the build, do not guess: explain the risk and the safest workaround instead.\n4. Run the tests and summarise what changed and why.\n5. If nothing in the project is affected, say so and change nothing.\n\nReference: https://insights.sbomify.com/CVE-2023-38491/ (Markdown: https://insights.sbomify.com/CVE-2023-38491/index.md)","id":"CVE-2023-38491","markdown":"https://insights.sbomify.com/CVE-2023-38491/index.md","name":"CVE-2023-38491","record":{"aliases":["GHSA-8fv7-wq38-f5c9"],"analysis":{"component_type":"cms_plugin","fix_type":"patch","impacts":["code_execution","account_takeover"],"network_reachable":"yes","non_default_config":true,"product_category":"Kirby CMS","requires_auth":"low_privilege","summary":"Authenticated users can upload malicious files that execute scripts in victim browsers due to incorrect MIME type handling, potentially leading to account takeover.","user_interaction":"required","vuln_class":"xss"},"analysis_generated_by":"qwen3.8-flash-next","assigner":"GitHub_M","cpe":[{"product":"kirby","vendor":"getkirby"}],"cvss":{"score":5.7,"severity":"medium","source":"cna","vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:U/C:H/I:N/A:N","version":"3.1"},"cwes":[{"id":"CWE-79","name":"Improper Neutralization of Input During Web Page Generation"}],"description":"Kirby is a content management system. A vulnerability in versions prior to 3.5.8.3, 3.6.6.3, 3.7.5.2, 3.8.4.1, and 3.9.6 affects all Kirby sites that might have potential attackers in the group of authenticated Panel users or that allow external visitors to upload an arbitrary file to the content folder. Kirby sites are not affected if they don't allow file uploads for untrusted users or visitors or if the file extensions of uploaded files are limited to a fixed safe list. The attack requires user interaction by another user or visitor and cannot be automated.\n\nAn editor with write access to the Kirby Panel could upload a file with an unknown file extension like `.xyz` that contains HTML code including harmful content like `\u003cscript\u003e` tags. The direct link to that file could be sent to other users or visitors of the site. If the victim opened that link in a browser where they are logged in to Kirby and the file had not been opened by anyone since the upload, Kirby would not be able to send the correct MIME content type, instead falling back to `text/html`. The browser would then run the script, which could for example trigger requests to Kirby's API with the permissions of the victim.\n\nThe issue was caused by the underlying `Kirby\\Http\\Response::file()` method, which didn't have an explicit fallback if the MIME type could not be determined from the file extension. If you use this method in site or plugin code, these uses may be affected by the same vulnerability.\n\nThe problem has been patched in Kirby 3.5.8.3, 3.6.6.3, 3.7.5.2, 3.8.4.1, and 3.9.6. In all of the mentioned releases, the maintainers have fixed the affected method to use a fallback MIME type of `text/plain` and set the `X-Content-Type-Options: nosniff` header if the MIME type of the file is unknown.","ecosystems":["Packagist"],"exploits":{"exploitdb":0,"first_seen":null,"github_poc":0,"max_poc_stars":null,"metasploit":0,"nuclei":0,"refs":[],"tier":"none_known"},"has_fix":true,"headline":"Kirby vulnerable to Cross-site scripting (XSS) from MIME type auto-detection of uploaded files","id":"CVE-2023-38491","indexable":true,"kev":null,"kind":"cve","links":{"ecosystem":"Packagist","product":null,"products":[],"type":"xss","year":"2023"},"n_packages":10,"n_references":7,"next":{"headline":"Kirby vulnerable to denial of service from unlimited password lengths","id":"CVE-2023-38492"},"packages":[{"ecosystem":"Packagist","fixed":["3.5.8.3"],"introduced":["0"],"last_affected":[],"package":"getkirby/cms","purl":null,"source":"GHSA-8fv7-wq38-f5c9"},{"ecosystem":"Packagist","fixed":["3.5.8.3"],"introduced":["0"],"last_affected":[],"package":"getkirby/cms","purl":"pkg:composer/getkirby/cms","source":"GHSA-8fv7-wq38-f5c9"},{"ecosystem":"Packagist","fixed":["3.6.6.3"],"introduced":["3.6.0"],"last_affected":[],"package":"getkirby/cms","purl":null,"source":"GHSA-8fv7-wq38-f5c9"},{"ecosystem":"Packagist","fixed":["3.6.6.3"],"introduced":["3.6.0"],"last_affected":[],"package":"getkirby/cms","purl":"pkg:composer/getkirby/cms","source":"GHSA-8fv7-wq38-f5c9"},{"ecosystem":"Packagist","fixed":["3.7.5.2"],"introduced":["3.7.0"],"last_affected":[],"package":"getkirby/cms","purl":null,"source":"GHSA-8fv7-wq38-f5c9"},{"ecosystem":"Packagist","fixed":["3.7.5.2"],"introduced":["3.7.0"],"last_affected":[],"package":"getkirby/cms","purl":"pkg:composer/getkirby/cms","source":"GHSA-8fv7-wq38-f5c9"},{"ecosystem":"Packagist","fixed":["3.8.4.1"],"introduced":["3.8.0"],"last_affected":[],"package":"getkirby/cms","purl":null,"source":"GHSA-8fv7-wq38-f5c9"},{"ecosystem":"Packagist","fixed":["3.8.4.1"],"introduced":["3.8.0"],"last_affected":[],"package":"getkirby/cms","purl":"pkg:composer/getkirby/cms","source":"GHSA-8fv7-wq38-f5c9"},{"ecosystem":"Packagist","fixed":["3.9.6"],"introduced":["3.9.0"],"last_affected":[],"package":"getkirby/cms","purl":null,"source":"GHSA-8fv7-wq38-f5c9"},{"ecosystem":"Packagist","fixed":["3.9.6"],"introduced":["3.9.0"],"last_affected":[],"package":"getkirby/cms","purl":"pkg:composer/getkirby/cms","source":"GHSA-8fv7-wq38-f5c9"}],"prev":{"headline":"Kirby XML External Entity (XXE) vulnerability in the XML data handler","id":"CVE-2023-38490"},"products":["kirby"],"published":"2023-07-27","related":[{"cvss_score":8.8,"headline":"Kirby vulnerable to unrestricted file upload of user avatar images","id":"CVE-2024-26483","kev_date_added":null,"published":"2024-02-22"},{"cvss_score":8.1,"headline":"Insufficient permission checks in the language settings in Kirby CMS","id":"CVE-2024-41964","kev_date_added":null,"published":"2024-08-29"},{"cvss_score":7.6,"headline":"Kirby has Server-Side Template Injection (SSTI) via double template resolution in option rendering","id":"CVE-2026-34587","kev_date_added":null,"published":"2026-04-24"},{"cvss_score":7.6,"headline":"Cross-site scripting (XSS) from unsanitized uploaded SVG files","id":"CVE-2021-29460","kev_date_added":null,"published":"2021-04-27"},{"cvss_score":7.3,"headline":"Kirby vulnerable to Insufficient Session Expiration after a password change","id":"CVE-2023-38489","kev_date_added":null,"published":"2023-07-27"},{"cvss_score":7.3,"headline":"Cross-site scripting (XSS) from writer field content in the site frontend","id":"CVE-2021-41252","kev_date_added":null,"published":"2021-11-16"},{"cvss_score":7.3,"headline":"Cross-site scripting (XSS) from image block content in the site frontend","id":"CVE-2021-41258","kev_date_added":null,"published":"2021-11-16"}],"sources":[{"class":"attribution","licence":"CVE Terms of Use (MITRE)","name":"CVE List","prefix":"CVE"},{"class":"attribution","licence":"CC BY 4.0","name":"GitHub Advisory Database","prefix":"GHSA"},{"class":"attribution","licence":"US public information, NVD API terms","name":"NVD"},{"class":"attribution","licence":"CWE Terms of Use","name":"CWE (MITRE)"},{"class":"attribution","licence":"FIRST CVSS licence","name":"CVSS (FIRST)"}],"ssvc":{"automatable":"no","exploitation":"none","technical_impact":"partial"},"state":"PUBLISHED","updated":"2024-10-15","vendors":["getkirby"]},"summary":"Authenticated users can upload malicious files that execute scripts in victim browsers due to incorrect MIME type handling, potentially leading to account takeover.","url":"https://insights.sbomify.com/CVE-2023-38491/"}