From 62321be3651eee3c52b1a271753b06288cca5dfd Mon Sep 17 00:00:00 2001 From: Cody Maffucci <46459665+Maffooch@users.noreply.github.com> Date: Thu, 7 Nov 2024 17:52:05 -0600 Subject: [PATCH 1/4] Burp Enterprise: Support newer format --- dojo/settings/.settings.dist.py.sha256sum | 2 +- dojo/settings/settings.dist.py | 2 + dojo/templatetags/display_tags.py | 7 +- dojo/tools/burp_enterprise/parser.py | 391 +++++++++++----------- 4 files changed, 210 insertions(+), 192 deletions(-) diff --git a/dojo/settings/.settings.dist.py.sha256sum b/dojo/settings/.settings.dist.py.sha256sum index 259f13a4c69..2680eff16d6 100644 --- a/dojo/settings/.settings.dist.py.sha256sum +++ b/dojo/settings/.settings.dist.py.sha256sum @@ -1 +1 @@ -6b9365d002880ae64ab54da905ede076db5a8661960f8f1e2793b7f4d25ff7e8 +fa22f1252ee3a34e272f3715e1d21a429a1d43616c9448bbb007fb92e1fd5b57 diff --git a/dojo/settings/settings.dist.py b/dojo/settings/settings.dist.py index 9920533272f..32021d25cc4 100644 --- a/dojo/settings/settings.dist.py +++ b/dojo/settings/settings.dist.py @@ -1744,6 +1744,8 @@ def saml2_attrib_map_format(dict): "ELSA": "https://linux.oracle.com/errata/&&.html", # e.g. https://linux.oracle.com/errata/ELSA-2024-12714.html "ELBA": "https://linux.oracle.com/errata/&&.html", # e.g. https://linux.oracle.com/errata/ELBA-2024-7457.html "RXSA": "https://errata.rockylinux.org/", # e.g. https://errata.rockylinux.org/RXSA-2024:4928 + "CAPEC": "https://capec.mitre.org/data/definitions/&&.html", # e.g. https://capec.mitre.org/data/definitions/157.html + "CWE": "https://cwe.mitre.org/data/definitions/&&.html", # e.g. https://cwe.mitre.org/data/definitions/79.html } # List of acceptable file types that can be uploaded to a given object via arbitrary file upload FILE_UPLOAD_TYPES = env("DD_FILE_UPLOAD_TYPES") diff --git a/dojo/templatetags/display_tags.py b/dojo/templatetags/display_tags.py index 7b634febf63..3fa030d90a4 100644 --- a/dojo/templatetags/display_tags.py +++ b/dojo/templatetags/display_tags.py @@ -781,7 +781,12 @@ def vulnerability_url(vulnerability_id): for key in settings.VULNERABILITY_URLS: if vulnerability_id.upper().startswith(key): if "&&" in settings.VULNERABILITY_URLS[key]: - return settings.VULNERABILITY_URLS[key].split("&&")[0] + str(vulnerability_id) + settings.VULNERABILITY_URLS[key].split("&&")[1] + # Process specific keys specially if need + if key in ["CAPEC", "CWE"]: + vuln_id = str(vulnerability_id).replace(f"{key}-", "") + else: + vuln_id = str(vulnerability_id) + return f'{settings.VULNERABILITY_URLS[key].split("&&")[0]}{vuln_id}{settings.VULNERABILITY_URLS[key].split("&&")[1]}' return settings.VULNERABILITY_URLS[key] + str(vulnerability_id) return "" diff --git a/dojo/tools/burp_enterprise/parser.py b/dojo/tools/burp_enterprise/parser.py index aab8e565242..052d8a80f84 100644 --- a/dojo/tools/burp_enterprise/parser.py +++ b/dojo/tools/burp_enterprise/parser.py @@ -1,7 +1,7 @@ import logging import re -from lxml import etree +from lxml import etree, html from dojo.models import Endpoint, Finding @@ -9,6 +9,16 @@ class BurpEnterpriseParser: + vulnerability_list_xpath = ( + "/html/body/div/div[contains(@class, 'section details')]/div[contains(@class, 'issue-container')]" + ) + table_contents_xpath = "/html/body/div/div[contains(@class, 'section') and .//table[contains(@class, 'issue-table')]]" + description_headers = ["issue detail", "issue description"] + request_response_headers = ["request", "response"] + impact_headers = ["issue background", "issue remediation"] + mitigation_headers = ["remediation detail", "remediation background"] + references_headers = ["vulnerability classifications", "references"] + def get_scan_types(self): return ["Burp Enterprise Scan"] @@ -19,230 +29,231 @@ def get_description_for_scan_types(self, scan_type): return "Import Burp Enterprise Edition findings in HTML format" def get_findings(self, filename, test): - parser = etree.HTMLParser() - tree = etree.parse(filename, parser) + tree = html.parse(filename) if tree: return self.get_items(tree, test) return () - def get_content(self, container): + def _get_endpoints_title_severity_mapping(self, tree: etree.ElementTree) -> dict[str, str]: + """ + Construct a dict that contains mappings of endpoints and severities by a a title key. + + Example: { + "finding-title": { + "title": "finding-title", + "severity: "Medium", + "cwe": None, + "endpoints: [ + "http://127.0.0.1/path/A", + "http://127.0.0.1/path/B", + ], + } + } + """ + finding_mapping = {} + table_contents = tree.xpath(self.table_contents_xpath) + for table in table_contents: + # There is only one header in this div, so we will get a string back here + base_endpoint = table.xpath("h1")[0].text.replace("Issues found on ", "").removesuffix("/") + # Iterate over the table of endpoint paths and severities + title = None + for entry in table.xpath("table[contains(@class, 'issue-table')]/tbody/tr"): + # The etree.element with a class of "issue-type-row" is the title of the finding + if "issue-type-row" in entry.classes: + # The structure of this section is consistent + #
+ Site name:
+ m
+ Scanned:
+
Duration:
+ 13m 53s
+ Status:
+ Completed
+ |
+
+ Start URLs:
+ https://instance.example.com/fe/m3/m-login
+
+ In-scope URL prefixes:
+ https://instance.example.com/fe/m3/
+ https://instance.example.com/m/v3/
+
+ Application logins:
+ DEMOMX m login only (no clerk)
+
+ Reference:
+
+
+ #150
+
+ |
+
+ Issues by severity+
|
+
+ Scan statistics+
|
+
URLs By issue type | +Severity | +Confidence | +More detail | +
---|---|---|---|
Strict transport security not enforced [7] | +|||
+ /fe/m3/m-login + | +Low | +Certain | +>> | +
+ /m/v3/actions/action-log + | +Low | +Certain | +>> | +
+ /m/v3/actions/event-log + | +Low | +Certain | +>> | +
+ /m/v3/actions/login-m-by-name + | +Low | +Certain | +>> | +
+ /m/v3/actions/request-m-password-reset + | +Low | +Certain | +>> | +
+ /m/v3/translations + | +Low | +Certain | +>> | +
+ /m/v3/translations/locales + | +Low | +Certain | +>> | +
Open redirection (DOM-based) [4] | +|||
+ /fe/m3/m-login + | +Low | +Tentative | +>> | +
+ /fe/m3/m-login + | +Low | +Tentative | +>> | +
+ /fe/m3/m-login + | +Low | +Tentative | +>> | +
+ /fe/m3/m-login + | +Low | +Tentative | +>> | +
TLS certificate [1] | +|||
+ / + | +Info | +Certain | +>> | +
Content security policy: allows untrusted script execution [7] | +|||
+ /fe/m3/m-login + | +Info | +Certain | +>> | +
+ /m/v3/actions/action-log + | +Info | +Certain | +>> | +
+ /m/v3/actions/event-log + | +Info | +Certain | +>> | +
+ /m/v3/actions/login-m-by-name + | +Info | +Certain | +>> | +
+ /m/v3/actions/request-m-password-reset + | +Info | +Certain | +>> | +
+ /m/v3/translations + | +Info | +Certain | +>> | +
+ /m/v3/translations/locales + | +Info | +Certain | +>> | +
Content security policy: allows untrusted style execution [7] | +|||
+ /fe/m3/m-login + | +Info | +Certain | +>> | +
+ /m/v3/actions/action-log + | +Info | +Certain | +>> | +
+ /m/v3/actions/event-log + | +Info | +Certain | +>> | +
+ /m/v3/actions/login-m-by-name + | +Info | +Certain | +>> | +
+ /m/v3/actions/request-m-password-reset + | +Info | +Certain | +>> | +
+ /m/v3/translations + | +Info | +Certain | +>> | +
+ /m/v3/translations/locales + | +Info | +Certain | +>> | +
Content security policy: allows form hijacking [7] | +|||
+ /fe/m3/m-login + | +Info | +Certain | +>> | +
+ /m/v3/actions/action-log + | +Info | +Certain | +>> | +
+ /m/v3/actions/event-log + | +Info | +Certain | +>> | +
+ /m/v3/actions/login-m-by-name + | +Info | +Certain | +>> | +
+ /m/v3/actions/request-m-password-reset + | +Info | +Certain | +>> | +
+ /m/v3/translations + | +Info | +Certain | +>> | +
+ /m/v3/translations/locales + | +Info | +Certain | +>> | +
Cross-origin resource sharing [6] | +|||
+ /m/v3/actions/action-log + | +Info | +Certain | +>> | +
+ /m/v3/actions/event-log + | +Info | +Certain | +>> | +
+ /m/v3/actions/login-m-by-name + | +Info | +Certain | +>> | +
+ /m/v3/actions/request-m-password-reset + | +Info | +Certain | +>> | +
+ /m/v3/translations + | +Info | +Certain | +>> | +
+ /m/v3/translations/locales + | +Info | +Certain | +>> | +
Cross-origin resource sharing: arbitrary origin trusted [6] | +|||
+ /m/v3/actions/action-log + | +Info | +Certain | +>> | +
+ /m/v3/actions/event-log + | +Info | +Certain | +>> | +
+ /m/v3/actions/login-m-by-name + | +Info | +Certain | +>> | +
+ /m/v3/actions/request-m-password-reset + | +Info | +Certain | +>> | +
+ /m/v3/translations + | +Info | +Certain | +>> | +
+ /m/v3/translations/locales + | +Info | +Certain | +>> | +
Robots.txt file [1] | +|||
+ /robots.txt + | +Info | +Certain | +>> | +
Cacheable HTTPS response [1] | +|||
+ /fe/m3/m-login + | +Info | +Certain | +>> | +
DOM data manipulation (DOM-based) [6] | +|||
+ /fe/m3/m-login + | +Info | +Firm | +>> | +
+ /fe/m3/m-login + | +Info | +Firm | +>> | +
+ /fe/m3/m-login + | +Info | +Firm | +>> | +
+ /fe/m3/m-login + | +Info | +Firm | +>> | +
+ /fe/m3/m-login + | +Info | +Firm | +>> | +
+ /fe/m3/m-login + | +Info | +Firm | +>> | +
URLs By issue type | +Severity | +Confidence | +More detail | +
---|---|---|---|
Input returned in response (reflected) [2] | +|||
+ /fe/m3/m-login + | +Info | +Certain | +>> | +
+ /fe/m3/m-login + | +Info | +Certain | +>> | +
The application fails to prevent users from connecting to it over unencrypted connections. An + attacker able to modify a legitimate user's network traffic could bypass the application's use + of SSL/TLS encryption, and use the application as a platform for attacks against its users. This + attack is performed by rewriting HTTPS links as HTTP, so that if a targeted user follows a link + to the site from an HTTP page, their browser never attempts to use an encrypted connection. The + sslstrip tool automates this process.
++ To exploit this vulnerability, an attacker must be suitably positioned to intercept and modify + the victim's network traffic.This scenario typically occurs when a client communicates with the + server over an insecure connection such as public Wi-Fi, or a corporate or home network that is + shared with a compromised computer. Common defenses such as switched networks are not sufficient + to prevent this. An attacker situated in the user's ISP or the application's hosting + infrastructure could also perform this attack. Note that an advanced adversary could potentially + target any connection made over the Internet's core infrastructure.
+The application should instruct web browsers to only access the application using HTTPS. To do + this, enable HTTP Strict Transport Security (HSTS) by adding a response header with the name + 'Strict-Transport-Security' and the value 'max-age=expireTime', where expireTime is the time in + seconds that browsers should remember that the site should only be accessed using HTTPS. + Consider adding the 'includeSubDomains' flag if appropriate.
+Note that because HSTS is a "trust on first use" (TOFU) protocol, a user who has never + accessed the application will never have seen the HSTS header, and will therefore still be + vulnerable to SSL stripping attacks. To mitigate this risk, you can optionally add the 'preload' + flag to the HSTS header, and submit the domain for review by browser vendors.
+The application fails to prevent users from connecting to it over unencrypted connections. An + attacker able to modify a legitimate user's network traffic could bypass the application's use + of SSL/TLS encryption, and use the application as a platform for attacks against its users. This + attack is performed by rewriting HTTPS links as HTTP, so that if a targeted user follows a link + to the site from an HTTP page, their browser never attempts to use an encrypted connection. The + sslstrip tool automates this process.
++ To exploit this vulnerability, an attacker must be suitably positioned to intercept and modify + the victim's network traffic.This scenario typically occurs when a client communicates with the + server over an insecure connection such as public Wi-Fi, or a corporate or home network that is + shared with a compromised computer. Common defenses such as switched networks are not sufficient + to prevent this. An attacker situated in the user's ISP or the application's hosting + infrastructure could also perform this attack. Note that an advanced adversary could potentially + target any connection made over the Internet's core infrastructure.
+The application should instruct web browsers to only access the application using HTTPS. To do + this, enable HTTP Strict Transport Security (HSTS) by adding a response header with the name + 'Strict-Transport-Security' and the value 'max-age=expireTime', where expireTime is the time in + seconds that browsers should remember that the site should only be accessed using HTTPS. + Consider adding the 'includeSubDomains' flag if appropriate.
+Note that because HSTS is a "trust on first use" (TOFU) protocol, a user who has never + accessed the application will never have seen the HSTS header, and will therefore still be + vulnerable to SSL stripping attacks. To mitigate this risk, you can optionally add the 'preload' + flag to the HSTS header, and submit the domain for review by browser vendors.
+The application fails to prevent users from connecting to it over unencrypted connections. An + attacker able to modify a legitimate user's network traffic could bypass the application's use + of SSL/TLS encryption, and use the application as a platform for attacks against its users. This + attack is performed by rewriting HTTPS links as HTTP, so that if a targeted user follows a link + to the site from an HTTP page, their browser never attempts to use an encrypted connection. The + sslstrip tool automates this process.
++ To exploit this vulnerability, an attacker must be suitably positioned to intercept and modify + the victim's network traffic.This scenario typically occurs when a client communicates with the + server over an insecure connection such as public Wi-Fi, or a corporate or home network that is + shared with a compromised computer. Common defenses such as switched networks are not sufficient + to prevent this. An attacker situated in the user's ISP or the application's hosting + infrastructure could also perform this attack. Note that an advanced adversary could potentially + target any connection made over the Internet's core infrastructure.
+The application should instruct web browsers to only access the application using HTTPS. To do + this, enable HTTP Strict Transport Security (HSTS) by adding a response header with the name + 'Strict-Transport-Security' and the value 'max-age=expireTime', where expireTime is the time in + seconds that browsers should remember that the site should only be accessed using HTTPS. + Consider adding the 'includeSubDomains' flag if appropriate.
+Note that because HSTS is a "trust on first use" (TOFU) protocol, a user who has never + accessed the application will never have seen the HSTS header, and will therefore still be + vulnerable to SSL stripping attacks. To mitigate this risk, you can optionally add the 'preload' + flag to the HSTS header, and submit the domain for review by browser vendors.
+The application fails to prevent users from connecting to it over unencrypted connections. An + attacker able to modify a legitimate user's network traffic could bypass the application's use + of SSL/TLS encryption, and use the application as a platform for attacks against its users. This + attack is performed by rewriting HTTPS links as HTTP, so that if a targeted user follows a link + to the site from an HTTP page, their browser never attempts to use an encrypted connection. The + sslstrip tool automates this process.
++ To exploit this vulnerability, an attacker must be suitably positioned to intercept and modify + the victim's network traffic.This scenario typically occurs when a client communicates with the + server over an insecure connection such as public Wi-Fi, or a corporate or home network that is + shared with a compromised computer. Common defenses such as switched networks are not sufficient + to prevent this. An attacker situated in the user's ISP or the application's hosting + infrastructure could also perform this attack. Note that an advanced adversary could potentially + target any connection made over the Internet's core infrastructure.
+The application should instruct web browsers to only access the application using HTTPS. To do + this, enable HTTP Strict Transport Security (HSTS) by adding a response header with the name + 'Strict-Transport-Security' and the value 'max-age=expireTime', where expireTime is the time in + seconds that browsers should remember that the site should only be accessed using HTTPS. + Consider adding the 'includeSubDomains' flag if appropriate.
+Note that because HSTS is a "trust on first use" (TOFU) protocol, a user who has never + accessed the application will never have seen the HSTS header, and will therefore still be + vulnerable to SSL stripping attacks. To mitigate this risk, you can optionally add the 'preload' + flag to the HSTS header, and submit the domain for review by browser vendors.
+The application fails to prevent users from connecting to it over unencrypted connections. An + attacker able to modify a legitimate user's network traffic could bypass the application's use + of SSL/TLS encryption, and use the application as a platform for attacks against its users. This + attack is performed by rewriting HTTPS links as HTTP, so that if a targeted user follows a link + to the site from an HTTP page, their browser never attempts to use an encrypted connection. The + sslstrip tool automates this process.
++ To exploit this vulnerability, an attacker must be suitably positioned to intercept and modify + the victim's network traffic.This scenario typically occurs when a client communicates with the + server over an insecure connection such as public Wi-Fi, or a corporate or home network that is + shared with a compromised computer. Common defenses such as switched networks are not sufficient + to prevent this. An attacker situated in the user's ISP or the application's hosting + infrastructure could also perform this attack. Note that an advanced adversary could potentially + target any connection made over the Internet's core infrastructure.
+The application should instruct web browsers to only access the application using HTTPS. To do + this, enable HTTP Strict Transport Security (HSTS) by adding a response header with the name + 'Strict-Transport-Security' and the value 'max-age=expireTime', where expireTime is the time in + seconds that browsers should remember that the site should only be accessed using HTTPS. + Consider adding the 'includeSubDomains' flag if appropriate.
+Note that because HSTS is a "trust on first use" (TOFU) protocol, a user who has never + accessed the application will never have seen the HSTS header, and will therefore still be + vulnerable to SSL stripping attacks. To mitigate this risk, you can optionally add the 'preload' + flag to the HSTS header, and submit the domain for review by browser vendors.
+The application fails to prevent users from connecting to it over unencrypted connections. An + attacker able to modify a legitimate user's network traffic could bypass the application's use + of SSL/TLS encryption, and use the application as a platform for attacks against its users. This + attack is performed by rewriting HTTPS links as HTTP, so that if a targeted user follows a link + to the site from an HTTP page, their browser never attempts to use an encrypted connection. The + sslstrip tool automates this process.
++ To exploit this vulnerability, an attacker must be suitably positioned to intercept and modify + the victim's network traffic.This scenario typically occurs when a client communicates with the + server over an insecure connection such as public Wi-Fi, or a corporate or home network that is + shared with a compromised computer. Common defenses such as switched networks are not sufficient + to prevent this. An attacker situated in the user's ISP or the application's hosting + infrastructure could also perform this attack. Note that an advanced adversary could potentially + target any connection made over the Internet's core infrastructure.
+The application should instruct web browsers to only access the application using HTTPS. To do + this, enable HTTP Strict Transport Security (HSTS) by adding a response header with the name + 'Strict-Transport-Security' and the value 'max-age=expireTime', where expireTime is the time in + seconds that browsers should remember that the site should only be accessed using HTTPS. + Consider adding the 'includeSubDomains' flag if appropriate.
+Note that because HSTS is a "trust on first use" (TOFU) protocol, a user who has never + accessed the application will never have seen the HSTS header, and will therefore still be + vulnerable to SSL stripping attacks. To mitigate this risk, you can optionally add the 'preload' + flag to the HSTS header, and submit the domain for review by browser vendors.
+The application fails to prevent users from connecting to it over unencrypted connections. An + attacker able to modify a legitimate user's network traffic could bypass the application's use + of SSL/TLS encryption, and use the application as a platform for attacks against its users. This + attack is performed by rewriting HTTPS links as HTTP, so that if a targeted user follows a link + to the site from an HTTP page, their browser never attempts to use an encrypted connection. The + sslstrip tool automates this process.
++ To exploit this vulnerability, an attacker must be suitably positioned to intercept and modify + the victim's network traffic.This scenario typically occurs when a client communicates with the + server over an insecure connection such as public Wi-Fi, or a corporate or home network that is + shared with a compromised computer. Common defenses such as switched networks are not sufficient + to prevent this. An attacker situated in the user's ISP or the application's hosting + infrastructure could also perform this attack. Note that an advanced adversary could potentially + target any connection made over the Internet's core infrastructure.
+The application should instruct web browsers to only access the application using HTTPS. To do + this, enable HTTP Strict Transport Security (HSTS) by adding a response header with the name + 'Strict-Transport-Security' and the value 'max-age=expireTime', where expireTime is the time in + seconds that browsers should remember that the site should only be accessed using HTTPS. + Consider adding the 'includeSubDomains' flag if appropriate.
+Note that because HSTS is a "trust on first use" (TOFU) protocol, a user who has never + accessed the application will never have seen the HSTS header, and will therefore still be + vulnerable to SSL stripping attacks. To mitigate this risk, you can optionally add the 'preload' + flag to the HSTS header, and submit the domain for review by browser vendors.
+DOM-based vulnerabilities arise when a client-side script reads data from a controllable part of + the DOM (for example, the URL) and processes this data in an unsafe way.
+ +DOM-based open redirection arises when a script writes controllable data into the target of a + redirection in an unsafe way. An attacker may be able to use the vulnerability to construct a + URL that, if visited by another application user, will cause a redirection to an arbitrary + external domain. This behavior can be leveraged to facilitate phishing attacks against users of + the application. The ability to use an authentic application URL, targeting the correct domain + and with a valid SSL certificate (if SSL is used), lends credibility to the phishing attack + because many users, even if they verify these features, will not notice the subsequent + redirection to a different domain.
+Note: If an attacker is able to control the start of the string that is passed to the + redirection API, then it may be possible to escalate this vulnerability into a JavaScript + injection attack, by using a URL with the javascript: pseudo-protocol to execute arbitrary + script code when the URL is processed by the browser.
+ +Burp Suite automatically identifies this issue using dynamic and static code analysis. Static + analysis can lead to false positives that are not actually exploitable. If Burp Scanner has not + provided any evidence resulting from dynamic analysis, you should review the relevant code and + execution paths to determine whether this vulnerability is indeed present, or whether + mitigations are in place that would prevent exploitation.
+The most effective way to avoid DOM-based open redirection vulnerabilities is not to dynamically + set redirection targets using data that originated from any untrusted source. If the desired + functionality of the application means that this behavior is unavoidable, then defenses must be + implemented within the client-side code to prevent malicious data from introducing an arbitrary + URL as a redirection target. In general, this is best achieved by using a whitelist of URLs that + are permitted redirection targets, and strictly validating the target against this list before + performing the redirection.
++ Data is read from location.href and passed to xhr.send. +
+The following value was injected into the source:
+https://instance.example.com/fe/m3/m-login?iepuap2p8w=iepuap2p8w%27%22`'"/iepuap2p8w/><iepuap2p8w/\>fwqsx8nplw&#iepuap2p8w=iepuap2p8w%27%22`'"/iepuap2p8w/><iepuap2p8w/\>fwqsx8nplw&+
The previous value reached the sink:
+{"access_token":"ed227e6e767e4584a5b3c10dc8b68c2a","data":{"environment":"development","level":"error","endpoint":"api.rollbar.com/api/1/item/","platform":"browser","framework":"browser-js","language":"javascript","server":{},"uuid":"a4231093-6d2e-4dbb-9f7f-7f0c97fde382","notifier":{"name":"rollbar-browser-js","version":"2.26.2","configured_options":{"captureUncaught":true,"captureUnhandledRejections":true,"payload":{"environment":"development"}},"diagnostic":{"original_arg_types":["string","error","undefined"],"is_uncaught":true,"raw_error":{"message":"Cannot read properties of null (reading 'once')","name":"TypeError","constructor_name":"TypeError","stack":"TypeError: Cannot read properties of null (reading 'once')\n at InfoReceiver.doXhr (https://instance.example.com/fe/js/cv-script.js:202406:11)\n at https://instance.example.com/fe/js/cv-script.js:202367:10"}}},"request":{"url":"https://instance.example.com/fe/m3/m-login?iepuap2p8w=iepuap2p8w%27%22`'\"/iepuap2p8w/><iepuap2p8w/\\>fwqsx8nplw&#iepuap2p8w=iepuap2p8w%27%22`'\"/iepuap2p8w/><iepuap2p8w/\\>fwqsx8nplw&","query_string":"?kpiqhi5l29=kpiqhi5l29%27%22`'\"/kpiqhi5l29/><kpiqhi5l29/\\>ba6kcvqqrk&","user_ip":"$remote_ip"},"client":{"runtime_ms":53,"timestamp":1730843997,"javascript":{"browser":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.70 Safari/537.36","language":"en-US","cookie_enabled":true,"screen":{"width":800,"height":600},"plugins":[]}},"body":{"trace":{"exception":{"class":"TypeError","message":"Cannot read properties of null (reading 'once')","description":"Uncaught TypeError: Cannot read properties of null (reading 'once')"},"frames":[{"filename":"https://instance.example.com/fe/js/cv-script.js","lineno":202367,"method":"[anonymous]","colno":10},{"filename":"https://instance.example.com/fe/js/cv-script.js","lineno":202406,"method":"InfoReceiver.doXhr","colno":11}]},"telemetry":[{"level":"error","type":"error","timestamp_ms":1730843997119,"body":{"message":"Cannot read properties of null (reading 'once')","stack":"TypeError: Cannot read properties of null (reading 'once')\n at InfoReceiver.doXhr (https://instance.example.com/fe/js/cv-script.js:202406:11)\n at https://instance.example.com/fe/js/cv-script.js:202367:10"},"source":"client","uuid":"a4231093-6d2e-4dbb-9f7f-7f0c97fde382"}]},"context":""}}+
The stack trace at source was:
+at Object._0x165f99 [as proxiedGetterCallback] (<anonymous>:1:557377) +at get href (<anonymous>:1:249544) +at Array.<anonymous> (https://instance.example.com/fe/js/cv-script.js:201791:42576) +at s (https://instance.example.com/fe/js/cv-script.js:201791:31979) +at Array.addBaseInfo (https://instance.example.com/fe/js/cv-script.js:201791:42473) +at s (https://instance.example.com/fe/js/cv-script.js:201791:31979) +at Array.ensureItemHasSomethingToSay (https://instance.example.com/fe/js/cv-script.js:201791:42150) +at s (https://instance.example.com/fe/js/cv-script.js:201791:31979) +at Array.handleItemWithError (https://instance.example.com/fe/js/cv-script.js:201791:42001) +at s (https://instance.example.com/fe/js/cv-script.js:201791:31979) +at Array.handleDomException (https://instance.example.com/fe/js/cv-script.js:201791:41530) +at s (https://instance.example.com/fe/js/cv-script.js:201791:31979) +at o._applyTransforms (https://instance.example.com/fe/js/cv-script.js:201791:31998) +at o.log (https://instance.example.com/fe/js/cv-script.js:201791:31700) +at a._log (https://instance.example.com/fe/js/cv-script.js:201791:24343) +at a.log (https://instance.example.com/fe/js/cv-script.js:201791:23115) +at m.handleUncaughtException (https://instance.example.com/fe/js/cv-script.js:201791:18878) +at n (https://instance.example.com/fe/js/cv-script.js:201791:35409) +at i (https://instance.example.com/fe/js/cv-script.js:201791:35806)+
The stack trace at the sink was:
+at Object.XMhUr (<anonymous>:1:544502) +at _0x13dcf0 (<anonymous>:1:558761) +at _0xdc6a5f.<computed>._0x13cc4d.oknbI._0x3e2633.XMLHttpRequest.<computed> (<anonymous>:1:458938) +at XMLHttpRequest.send (https://instance.example.com/fe/js/cv-script.js:201791:62448) +at t.exports (https://instance.example.com/fe/js/cv-script.js:201791:39384) +at s._makeRequest (https://instance.example.com/fe/js/cv-script.js:201791:37748) +at s._makeZoneRequest (https://instance.example.com/fe/js/cv-script.js:201791:37505) +at s.post (https://instance.example.com/fe/js/cv-script.js:201791:36989) +at https://instance.example.com/fe/js/cv-script.js:201791:32574+
DOM-based vulnerabilities arise when a client-side script reads data from a controllable part of + the DOM (for example, the URL) and processes this data in an unsafe way.
+ +DOM-based open redirection arises when a script writes controllable data into the target of a + redirection in an unsafe way. An attacker may be able to use the vulnerability to construct a + URL that, if visited by another application user, will cause a redirection to an arbitrary + external domain. This behavior can be leveraged to facilitate phishing attacks against users of + the application. The ability to use an authentic application URL, targeting the correct domain + and with a valid SSL certificate (if SSL is used), lends credibility to the phishing attack + because many users, even if they verify these features, will not notice the subsequent + redirection to a different domain.
+Note: If an attacker is able to control the start of the string that is passed to the + redirection API, then it may be possible to escalate this vulnerability into a JavaScript + injection attack, by using a URL with the javascript: pseudo-protocol to execute arbitrary + script code when the URL is processed by the browser.
+ +Burp Suite automatically identifies this issue using dynamic and static code analysis. Static + analysis can lead to false positives that are not actually exploitable. If Burp Scanner has not + provided any evidence resulting from dynamic analysis, you should review the relevant code and + execution paths to determine whether this vulnerability is indeed present, or whether + mitigations are in place that would prevent exploitation.
+The most effective way to avoid DOM-based open redirection vulnerabilities is not to dynamically + set redirection targets using data that originated from any untrusted source. If the desired + functionality of the application means that this behavior is unavoidable, then defenses must be + implemented within the client-side code to prevent malicious data from introducing an arbitrary + URL as a redirection target. In general, this is best achieved by using a whitelist of URLs that + are permitted redirection targets, and strictly validating the target against this list before + performing the redirection.
++ Data is read from location.search and passed to xhr.send. +
+The following value was injected into the source:
+?kpiqhi5l29=kpiqhi5l29%27%22`'"/kpiqhi5l29/><kpiqhi5l29/\>ba6kcvqqrk&+
The previous value reached the sink:
+{"access_token":"ed227e6e767e4584a5b3c10dc8b68c2a","data":{"environment":"development","level":"error","endpoint":"api.rollbar.com/api/1/item/","platform":"browser","framework":"browser-js","language":"javascript","server":{},"uuid":"a4231093-6d2e-4dbb-9f7f-7f0c97fde382","notifier":{"name":"rollbar-browser-js","version":"2.26.2","configured_options":{"captureUncaught":true,"captureUnhandledRejections":true,"payload":{"environment":"development"}},"diagnostic":{"original_arg_types":["string","error","undefined"],"is_uncaught":true,"raw_error":{"message":"Cannot read properties of null (reading 'once')","name":"TypeError","constructor_name":"TypeError","stack":"TypeError: Cannot read properties of null (reading 'once')\n at InfoReceiver.doXhr (https://instance.example.com/fe/js/cv-script.js:202406:11)\n at https://instance.example.com/fe/js/cv-script.js:202367:10"}}},"request":{"url":"https://instance.example.com/fe/m3/m-login?iepuap2p8w=iepuap2p8w%27%22`'\"/iepuap2p8w/><iepuap2p8w/\\>fwqsx8nplw&#iepuap2p8w=iepuap2p8w%27%22`'\"/iepuap2p8w/><iepuap2p8w/\\>fwqsx8nplw&","query_string":"?kpiqhi5l29=kpiqhi5l29%27%22`'\"/kpiqhi5l29/><kpiqhi5l29/\\>ba6kcvqqrk&","user_ip":"$remote_ip"},"client":{"runtime_ms":53,"timestamp":1730843997,"javascript":{"browser":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.70 Safari/537.36","language":"en-US","cookie_enabled":true,"screen":{"width":800,"height":600},"plugins":[]}},"body":{"trace":{"exception":{"class":"TypeError","message":"Cannot read properties of null (reading 'once')","description":"Uncaught TypeError: Cannot read properties of null (reading 'once')"},"frames":[{"filename":"https://instance.example.com/fe/js/cv-script.js","lineno":202367,"method":"[anonymous]","colno":10},{"filename":"https://instance.example.com/fe/js/cv-script.js","lineno":202406,"method":"InfoReceiver.doXhr","colno":11}]},"telemetry":[{"level":"error","type":"error","timestamp_ms":1730843997119,"body":{"message":"Cannot read properties of null (reading 'once')","stack":"TypeError: Cannot read properties of null (reading 'once')\n at InfoReceiver.doXhr (https://instance.example.com/fe/js/cv-script.js:202406:11)\n at https://instance.example.com/fe/js/cv-script.js:202367:10"},"source":"client","uuid":"a4231093-6d2e-4dbb-9f7f-7f0c97fde382"}]},"context":""}}+
The stack trace at source was:
+at Object._0x165f99 [as proxiedGetterCallback] (<anonymous>:1:557377) +at get search (<anonymous>:1:248279) +at Array.<anonymous> (https://instance.example.com/fe/js/cv-script.js:201791:42607) +at s (https://instance.example.com/fe/js/cv-script.js:201791:31979) +at Array.addBaseInfo (https://instance.example.com/fe/js/cv-script.js:201791:42473) +at s (https://instance.example.com/fe/js/cv-script.js:201791:31979) +at Array.ensureItemHasSomethingToSay (https://instance.example.com/fe/js/cv-script.js:201791:42150) +at s (https://instance.example.com/fe/js/cv-script.js:201791:31979) +at Array.handleItemWithError (https://instance.example.com/fe/js/cv-script.js:201791:42001) +at s (https://instance.example.com/fe/js/cv-script.js:201791:31979) +at Array.handleDomException (https://instance.example.com/fe/js/cv-script.js:201791:41530) +at s (https://instance.example.com/fe/js/cv-script.js:201791:31979) +at o._applyTransforms (https://instance.example.com/fe/js/cv-script.js:201791:31998) +at o.log (https://instance.example.com/fe/js/cv-script.js:201791:31700) +at a._log (https://instance.example.com/fe/js/cv-script.js:201791:24343) +at a.log (https://instance.example.com/fe/js/cv-script.js:201791:23115) +at m.handleUncaughtException (https://instance.example.com/fe/js/cv-script.js:201791:18878) +at n (https://instance.example.com/fe/js/cv-script.js:201791:35409) +at i (https://instance.example.com/fe/js/cv-script.js:201791:35806)+
The stack trace at the sink was:
+at Object.XMhUr (<anonymous>:1:544502) +at _0x13dcf0 (<anonymous>:1:558761) +at _0xdc6a5f.<computed>._0x13cc4d.oknbI._0x3e2633.XMLHttpRequest.<computed> (<anonymous>:1:458938) +at XMLHttpRequest.send (https://instance.example.com/fe/js/cv-script.js:201791:62448) +at t.exports (https://instance.example.com/fe/js/cv-script.js:201791:39384) +at s._makeRequest (https://instance.example.com/fe/js/cv-script.js:201791:37748) +at s._makeZoneRequest (https://instance.example.com/fe/js/cv-script.js:201791:37505) +at s.post (https://instance.example.com/fe/js/cv-script.js:201791:36989) +at https://instance.example.com/fe/js/cv-script.js:201791:32574+
DOM-based vulnerabilities arise when a client-side script reads data from a controllable part of + the DOM (for example, the URL) and processes this data in an unsafe way.
+ +DOM-based open redirection arises when a script writes controllable data into the target of a + redirection in an unsafe way. An attacker may be able to use the vulnerability to construct a + URL that, if visited by another application user, will cause a redirection to an arbitrary + external domain. This behavior can be leveraged to facilitate phishing attacks against users of + the application. The ability to use an authentic application URL, targeting the correct domain + and with a valid SSL certificate (if SSL is used), lends credibility to the phishing attack + because many users, even if they verify these features, will not notice the subsequent + redirection to a different domain.
+Note: If an attacker is able to control the start of the string that is passed to the + redirection API, then it may be possible to escalate this vulnerability into a JavaScript + injection attack, by using a URL with the javascript: pseudo-protocol to execute arbitrary + script code when the URL is processed by the browser.
+ +Burp Suite automatically identifies this issue using dynamic and static code analysis. Static + analysis can lead to false positives that are not actually exploitable. If Burp Scanner has not + provided any evidence resulting from dynamic analysis, you should review the relevant code and + execution paths to determine whether this vulnerability is indeed present, or whether + mitigations are in place that would prevent exploitation.
+The most effective way to avoid DOM-based open redirection vulnerabilities is not to dynamically + set redirection targets using data that originated from any untrusted source. If the desired + functionality of the application means that this behavior is unavoidable, then defenses must be + implemented within the client-side code to prevent malicious data from introducing an arbitrary + URL as a redirection target. In general, this is best achieved by using a whitelist of URLs that + are permitted redirection targets, and strictly validating the target against this list before + performing the redirection.
++ Data is read from location.href and passed to xhr.send. +
+The following value was injected into the source:
+https://instance.example.com/fe/m3/m-login?bih4qyzpvt=bih4qyzpvt%27%22`'"/bih4qyzpvt/><bih4qyzpvt/\>sbxdhx44wf&#bih4qyzpvt=bih4qyzpvt%27%22`'"/bih4qyzpvt/><bih4qyzpvt/\>sbxdhx44wf&+
The previous value reached the sink:
+{"access_token":"ed227e6e767e4584a5b3c10dc8b68c2a","data":{"environment":"development","level":"error","endpoint":"api.rollbar.com/api/1/item/","platform":"browser","framework":"browser-js","language":"javascript","server":{},"uuid":"8ea547f7-4ead-4638-bd75-97e9d3af07a9","notifier":{"name":"rollbar-browser-js","version":"2.26.2","configured_options":{"captureUncaught":true,"captureUnhandledRejections":true,"payload":{"environment":"development"}},"diagnostic":{"original_arg_types":["string","error","undefined"],"is_uncaught":true,"raw_error":{"message":"Request failed with status code 500","name":"Error","constructor_name":"Error","stack":"Error: Request failed with status code 500\n at createError (https://instance.example.com/fe/js/cv-script.js:51368:15)\n at settle (https://instance.example.com/fe/js/cv-script.js:51664:12)\n at XMLHttpRequest.onloadend (https://instance.example.com/fe/js/cv-script.js:50688:7)"}}},"request":{"url":"https://instance.example.com/fe/m3/m-login?bih4qyzpvt=bih4qyzpvt%27%22`'\"/bih4qyzpvt/><bih4qyzpvt/\\>sbxdhx44wf&#bih4qyzpvt=bih4qyzpvt%27%22`'\"/bih4qyzpvt/><bih4qyzpvt/\\>sbxdhx44wf&","query_string":"?esux3absmq=esux3absmq%27%22`'\"/esux3absmq/><esux3absmq/\\>z0k5afa1h6&","user_ip":"$remote_ip"},"client":{"runtime_ms":497,"timestamp":1730843998,"javascript":{"browser":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.70 Safari/537.36","language":"en-US","cookie_enabled":true,"screen":{"width":800,"height":600},"plugins":[]}},"body":{"trace":{"exception":{"class":"Error","message":"Request failed with status code 500","description":"Request failed with status code 500"},"frames":[{"filename":"https://instance.example.com/fe/js/cv-script.js","lineno":50688,"method":"XMLHttpRequest.onloadend","colno":7},{"filename":"https://instance.example.com/fe/js/cv-script.js","lineno":51664,"method":"settle","colno":12},{"filename":"https://instance.example.com/fe/js/cv-script.js","lineno":51368,"method":"createError","colno":15}]},"telemetry":[{"level":"error","type":"error","timestamp_ms":1730843997119,"body":{"message":"Cannot read properties of null (reading 'once')","stack":"TypeError: Cannot read properties of null (reading 'once')\n at InfoReceiver.doXhr (https://instance.example.com/fe/js/cv-script.js:202406:11)\n at https://instance.example.com/fe/js/cv-script.js:202367:10"},"source":"client","uuid":"a4231093-6d2e-4dbb-9f7f-7f0c97fde382"},{"level":"log","type":"log","timestamp_ms":1730843997217,"body":{"message":"--DynamicJavaScriptAnalysis from JS:-------------------------"},"source":"client"},{"level":"log","type":"log","timestamp_ms":1730843997217,"body":{"message":"--DynamicJavaScriptAnalysis from JS:DOM XSS found"},"source":"client"},{"level":"log","type":"log","timestamp_ms":1730843997217,"body":{"message":"--DynamicJavaScriptAnalysis from JS:Context: NaN.queryString"},"source":"client"},{"level":"log","type":"log","timestamp_ms":1730843997217,"body":{"message":"--DynamicJavaScriptAnalysis from JS:Tag name: "},"source":"client"},{"level":"log","type":"log","timestamp_ms":1730843997217,"body":{"message":"--DynamicJavaScriptAnalysis from JS:Original url: https://instance.example.com/fe/m3/m-login"},"source":"client"},{"level":"log","type":"log","timestamp_ms":1730843997217,"body":{"message":"--DynamicJavaScriptAnalysis from JS:Generated url: https://instance.example.com/fe/m3/m-login?iepuap2p8w=iepuap2p8w%27%22`'\"/iepuap2p8w/><iepuap2p8w/\\>fwqsx8nplw&#iepuap2p8w=iepuap2p8w%27%22`'\"/iepuap2p8w/><iepuap2p8w/\\>fwqsx8nplw&"},"source":"client"},{"level":"log","type":"log","timestamp_ms":1730843997217,"body":{"message":"--DynamicJavaScriptAnalysis from JS:PoC:Unable to generate PoC"},"source":"client"},{"level":"log","type":"log","timestamp_ms":1730843997217,"body":{"message":"--DynamicJavaScriptAnalysis from JS:Source identified as: location.href"},"source":"client"},{"level":"log","type":"log","timestamp_ms":1730843997218,"body":{"message":"--DynamicJavaScriptAnalysis from JS:Source Stack trace: at Object._0x165f99 [as proxiedGetterCallback] (<anonymous>:1:557377)\n at get href (<anonymous>:1:249544)\n at Array.<anonymous> (https://instance.example.com/fe/js/cv-script.js:201791:42576)\n at s (https://instance.example.com/fe/js/cv-script.js:201791:31979)\n at Array.addBaseInfo (https://instance.example.com/fe/js/cv-script.js:201791:42473)\n at s (https://instance.example.com/fe/js/cv-script.js:201791:31979)\n at Array.ensureItemHasSomethingToSay (https://instance.example.com/fe/js/cv-script.js:201791:42150)\n at s (https://instance.example.com/fe/js/cv-script.js:201791:31979)\n at Array.handleItemWithError (https://instance.example.com/fe/js/cv-script.js:201791:42001)\n at s (https://instance.example.com/fe/js/cv-script.js:201791:31979)\n at Array.handleDomException (https://instance.example.com/fe/js/cv-script.js:201791:41530)\n at s (https://instance.example.com/fe/js/cv-script.js:201791:31979)\n at o._applyTransforms (https://instance.example.com/fe/js/cv-script.js:201791:31998)\n at o.log (https://instance.example.com/fe/js/cv-script.js:201791:31700)\n at a._log (https://instance.example.com/fe/js/cv-script.js:201791:24343)\n at a.log (https://instance.example.com/fe/js/cv-script.js:201791:23115)\n at m.handleUncaughtException (https://instance.example.com/fe/js/cv-script.js:201791:18878)\n at n (https://instance.example.com/fe/js/cv-script.js:201791:35409)\n at i (https://instance.example.com/fe/js/cv-script.js:201791:35806)"},"source":"client"},{"level":"log","type":"log","timestamp_ms":1730843997218,"body":{"message":"--DynamicJavaScriptAnalysis from JS:Sink identified as: xhr.send"},"source":"client"},{"level":"log","type":"log","timestamp_ms":1730843997218,"body":{"message":"--DynamicJavaScriptAnalysis from JS:Sink Stack trace: at Object.XMhUr (<anonymous>:1:544502)\n at _0x13dcf0 (<anonymous>:1:558761)\n at _0xdc6a5f.<computed>._0x13cc4d.oknbI._0x3e2633.XMLHttpRequest.<computed> (<anonymous>:1:458938)\n at XMLHttpRequest.send (https://instance.example.com/fe/js/cv-script.js:201791:62448)\n at t.exports (https://instance.example.com/fe/js/cv-script.js:201791:39384)\n at s._makeRequest (https://instance.example.com/fe/js/cv-script.js:201791:37748)\n at s._makeZoneRequest (https://instance.example.com/fe/js/cv-script.js:201791:37505)\n at s.post (https://instance.example.com/fe/js/cv-script.js:201791:36989)\n at https://instance.example.com/fe/js/cv-script.js:201791:32574"},"source":"client"},{"level":"log","type":"log","timestamp_ms":1730843997218,"body":{"message":"--DynamicJavaScriptAnalysis from JS:Sink value: {\"access_token\":\"ed227e6e767e4584a5b3c10dc8b68c2a\",\"data\":{\"environment\":\"development\",\"level\":\"error\",\"endpoint\":\"api.rollbar.com/api/1/item/\",\"platform\":\"browser\",\"framework\":\"browser-js\",\"language\":\"javascript\",\"server\":{},\"uuid\":\"a4231093-6d2e-4dbb-9f7f-7f0c97fde382\",\"notifier\":{\"name\":\"rollbar-browser-js\",\"version\":\"2.26.2\",\"configured_options\":{\"captureUncaught\":true,\"captureUnhandledRejections\":true,\"payload\":{\"environment\":\"development\"}},\"diagnostic\":{\"original_arg_types\":[\"string\",\"error\",\"undefined\"],\"is_uncaught\":true,\"raw_error\":{\"message\":\"Cannot read properties of null (reading 'once')\",\"name\":\"TypeError\",\"constructor_name\":\"TypeError\",\"stack\":\"TypeError: Cannot read properties of null (reading 'once')\\n at InfoReceiver.doXhr (https://instance.example.com/fe/js/cv-script.js:202406:11)\\n at https://instance.example.com/fe/js/cv-script.js:202367:10\"}}},\"request\":{\"url\":\"https://instance.example.com/fe/m3/m-login?iepuap2p8w=iepuap2p8w%27%22`'\\\"/iepuap2p8w/><iepuap2p8w/\\\\>fwqsx8nplw&#iepuap2p8w=iepuap2p8w%27%22`'\\\"/iepuap2p8w/><iepuap2p8w/\\\\>fwqsx8nplw&\",\"query_string\":\"?kpiqhi5l29=kpiqhi5l29%27%22`'\\\"/kpiqhi5l29/><kpiqhi5l29/\\\\>ba6kcvqqrk&\",\"user_ip\":\"$remote_ip\"},\"client\":{\"runtime_ms\":53,\"timestamp\":1730843997,\"javascript\":{\"browser\":\"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.70 Safari/537.36\",\"language\":\"en-US\",\"cookie_enabled\":true,\"screen\":{\"width\":800,\"height\":600},\"plugins\":[]}},\"body\":{\"trace\":{\"exception\":{\"class\":\"TypeError\",\"message\":\"Cannot read properties of null (reading 'once')\",\"description\":\"Uncaught TypeError: Cannot read properties of null (reading 'once')\"},\"frames\":[{\"filename\":\"https://instance.example.com/fe/js/cv-script.js\",\"lineno\":202367,\"method\":\"[anonymous]\",\"colno\":10},{\"filename\":\"https://instance.example.com/fe/js/cv-script.js\",\"lineno\":202406,\"method\":\"InfoReceiver.doXhr\",\"colno\":11}]},\"telemetry\":[{\"level\":\"error\",\"type\":\"error\",\"timestamp_ms\":1730843997119,\"body\":{\"message\":\"Cannot read properties of null (reading 'once')\",\"stack\":\"TypeError: Cannot read properties of null (reading 'once')\\n at InfoReceiver.doXhr (https://instance.example.com/fe/js/cv-script.js:202406:11)\\n at https://instance.example.com/fe/js/cv-script.js:202367:10\"},\"source\":\"client\",\"uuid\":\"a4231093-6d2e-4dbb-9f7f-7f0c97fde382\"}]},\"context\":\"\"}}"},"source":"client"},{"level":"log","type":"log","timestamp_ms":1730843997218,"body":{"message":"--DynamicJavaScriptAnalysis from JS:-------------------------"},"source":"client"},{"level":"log","type":"log","timestamp_ms":1730843997218,"body":{"message":"--DynamicJavaScriptAnalysis from JS:-------------------------"},"source":"client"},{"level":"log","type":"log","timestamp_ms":1730843997218,"body":{"message":"--DynamicJavaScriptAnalysis from JS:DOM XSS found"},"source":"client"},{"level":"log","type":"log","timestamp_ms":1730843997219,"body":{"message":"--DynamicJavaScriptAnalysis from JS:Context: NaN.queryString"},"source":"client"},{"level":"log","type":"log","timestamp_ms":1730843997219,"body":{"message":"--DynamicJavaScriptAnalysis from JS:Tag name: "},"source":"client"},{"level":"log","type":"log","timestamp_ms":1730843997219,"body":{"message":"--DynamicJavaScriptAnalysis from JS:Original url: https://instance.example.com/fe/m3/m-login"},"source":"client"},{"level":"log","type":"log","timestamp_ms":1730843997219,"body":{"message":"--DynamicJavaScriptAnalysis from JS:Generated url: https://instance.example.com/fe/m3/m-login?kpiqhi5l29=kpiqhi5l29%27%22`'\"/kpiqhi5l29/><kpiqhi5l29/\\>ba6kcvqqrk&"},"source":"client"},{"level":"log","type":"log","timestamp_ms":1730843997219,"body":{"message":"--DynamicJavaScriptAnalysis from JS:PoC:Unable to generate PoC"},"source":"client"},{"level":"log","type":"log","timestamp_ms":1730843997219,"body":{"message":"--DynamicJavaScriptAnalysis from JS:Source identified as: location.search"},"source":"client"},{"level":"log","type":"log","timestamp_ms":1730843997219,"body":{"message":"--DynamicJavaScriptAnalysis from JS:Source Stack trace: at Object._0x165f99 [as proxiedGetterCallback] (<anonymous>:1:557377)\n at get search (<anonymous>:1:248279)\n at Array.<anonymous> (https://instance.example.com/fe/js/cv-script.js:201791:42607)\n at s (https://instance.example.com/fe/js/cv-script.js:201791:31979)\n at Array.addBaseInfo (https://instance.example.com/fe/js/cv-script.js:201791:42473)\n at s (https://instance.example.com/fe/js/cv-script.js:201791:31979)\n at Array.ensureItemHasSomethingToSay (https://instance.example.com/fe/js/cv-script.js:201791:42150)\n at s (https://instance.example.com/fe/js/cv-script.js:201791:31979)\n at Array.handleItemWithError (https://instance.example.com/fe/js/cv-script.js:201791:42001)\n at s (https://instance.example.com/fe/js/cv-script.js:201791:31979)\n at Array.handleDomException (https://instance.example.com/fe/js/cv-script.js:201791:41530)\n at s (https://instance.example.com/fe/js/cv-script.js:201791:31979)\n at o._applyTransforms (https://instance.example.com/fe/js/cv-script.js:201791:31998)\n at o.log (https://instance.example.com/fe/js/cv-script.js:201791:31700)\n at a._log (https://instance.example.com/fe/js/cv-script.js:201791:24343)\n at a.log (https://instance.example.com/fe/js/cv-script.js:201791:23115)\n at m.handleUncaughtException (https://instance.example.com/fe/js/cv-script.js:201791:18878)\n at n (https://instance.example.com/fe/js/cv-script.js:201791:35409)\n at i (https://instance.example.com/fe/js/cv-script.js:201791:35806)"},"source":"client"},{"level":"log","type":"log","timestamp_ms":1730843997219,"body":{"message":"--DynamicJavaScriptAnalysis from JS:Sink identified as: xhr.send"},"source":"client"},{"level":"log","type":"log","timestamp_ms":1730843997219,"body":{"message":"--DynamicJavaScriptAnalysis from JS:Sink Stack trace: at Object.XMhUr (<anonymous>:1:544502)\n at _0x13dcf0 (<anonymous>:1:558761)\n at _0xdc6a5f.<computed>._0x13cc4d.oknbI._0x3e2633.XMLHttpRequest.<computed> (<anonymous>:1:458938)\n at XMLHttpRequest.send (https://instance.example.com/fe/js/cv-script.js:201791:62448)\n at t.exports (https://instance.example.com/fe/js/cv-script.js:201791:39384)\n at s._makeRequest (https://instance.example.com/fe/js/cv-script.js:201791:37748)\n at s._makeZoneRequest (https://instance.example.com/fe/js/cv-script.js:201791:37505)\n at s.post (https://instance.example.com/fe/js/cv-script.js:201791:36989)\n at https://instance.example.com/fe/js/cv-script.js:201791:32574"},"source":"client"},{"level":"log","type":"log","timestamp_ms":1730843997219,"body":{"message":"--DynamicJavaScriptAnalysis from JS:Sink value: {\"access_token\":\"ed227e6e767e4584a5b3c10dc8b68c2a\",\"data\":{\"environment\":\"development\",\"level\":\"error\",\"endpoint\":\"api.rollbar.com/api/1/item/\",\"platform\":\"browser\",\"framework\":\"browser-js\",\"language\":\"javascript\",\"server\":{},\"uuid\":\"a4231093-6d2e-4dbb-9f7f-7f0c97fde382\",\"notifier\":{\"name\":\"rollbar-browser-js\",\"version\":\"2.26.2\",\"configured_options\":{\"captureUncaught\":true,\"captureUnhandledRejections\":true,\"payload\":{\"environment\":\"development\"}},\"diagnostic\":{\"original_arg_types\":[\"string\",\"error\",\"undefined\"],\"is_uncaught\":true,\"raw_error\":{\"message\":\"Cannot read properties of null (reading 'once')\",\"name\":\"TypeError\",\"constructor_name\":\"TypeError\",\"stack\":\"TypeError: Cannot read properties of null (reading 'once')\\n at InfoReceiver.doXhr (https://instance.example.com/fe/js/cv-script.js:202406:11)\\n at https://instance.example.com/fe/js/cv-script.js:202367:10\"}}},\"request\":{\"url\":\"https://instance.example.com/fe/m3/m-login?iepuap2p8w=iepuap2p8w%27%22`'\\\"/iepuap2p8w/><iepuap2p8w/\\\\>fwqsx8nplw&#iepuap2p8w=iepuap2p8w%27%22`'\\\"/iepuap2p8w/><iepuap2p8w/\\\\>fwqsx8nplw&\",\"query_string\":\"?kpiqhi5l29=kpiqhi5l29%27%22`'\\\"/kpiqhi5l29/><kpiqhi5l29/\\\\>ba6kcvqqrk&\",\"user_ip\":\"$remote_ip\"},\"client\":{\"runtime_ms\":53,\"timestamp\":1730843997,\"javascript\":{\"browser\":\"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.70 Safari/537.36\",\"language\":\"en-US\",\"cookie_enabled\":true,\"screen\":{\"width\":800,\"height\":600},\"plugins\":[]}},\"body\":{\"trace\":{\"exception\":{\"class\":\"TypeError\",\"message\":\"Cannot read properties of null (reading 'once')\",\"description\":\"Uncaught TypeError: Cannot read properties of null (reading 'once')\"},\"frames\":[{\"filename\":\"https://instance.example.com/fe/js/cv-script.js\",\"lineno\":202367,\"method\":\"[anonymous]\",\"colno\":10},{\"filename\":\"https://instance.example.com/fe/js/cv-script.js\",\"lineno\":202406,\"method\":\"InfoReceiver.doXhr\",\"colno\":11}]},\"telemetry\":[{\"level\":\"error\",\"type\":\"error\",\"timestamp_ms\":1730843997119,\"body\":{\"message\":\"Cannot read properties of null (reading 'once')\",\"stack\":\"TypeError: Cannot read properties of null (reading 'once')\\n at InfoReceiver.doXhr (https://instance.example.com/fe/js/cv-script.js:202406:11)\\n at https://instance.example.com/fe/js/cv-script.js:202367:10\"},\"source\":\"client\",\"uuid\":\"a4231093-6d2e-4dbb-9f7f-7f0c97fde382\"}]},\"context\":\"\"}}"},"source":"client"},{"level":"log","type":"log","timestamp_ms":1730843997220,"body":{"message":"--DynamicJavaScriptAnalysis from JS:-------------------------"},"source":"client"},{"level":"error","type":"network","timestamp_ms":1730843997410,"body":{"method":"GET","url":"https://localhost:8000/sockjs-node/info?t=1730843997179","status_code":0,"start_time_ms":1730843997180,"end_time_ms":1730843997410,"subtype":"xhr","response_content_type":null},"source":"client"},{"level":"error","type":"network","timestamp_ms":1730843997410,"body":{"method":"GET","url":"https://localhost:8000/sockjs-node/info?t=1730843997221","status_code":0,"start_time_ms":1730843997221,"end_time_ms":1730843997410,"subtype":"xhr","response_content_type":null},"source":"client"},{"level":"info","type":"network","timestamp_ms":1730843997482,"body":{"method":"POST","url":"https://api.rollbar.com:443/api/1/item/","status_code":200,"start_time_ms":1730843997213,"end_time_ms":1730843997482,"request_content_type":"application/json","subtype":"xhr","response_content_type":"application/json; charset=utf-8"},"source":"client"},{"level":"error","type":"error","timestamp_ms":1730843997563,"body":{"message":"Request failed with status code 500","stack":"Error: Request failed with status code 500\n at createError (https://instance.example.com/fe/js/cv-script.js:51368:15)\n at settle (https://instance.example.com/fe/js/cv-script.js:51664:12)\n at XMLHttpRequest.onloadend (https://instance.example.com/fe/js/cv-script.js:50688:7)"},"source":"client","uuid":"8ea547f7-4ead-4638-bd75-97e9d3af07a9"}]},"context":""}}+
The stack trace at source was:
+at Object._0x165f99 [as proxiedGetterCallback] (<anonymous>:1:557377) +at get href (<anonymous>:1:249544) +at Array.<anonymous> (https://instance.example.com/fe/js/cv-script.js:201791:42576) +at s (https://instance.example.com/fe/js/cv-script.js:201791:31979) +at Array.addBaseInfo (https://instance.example.com/fe/js/cv-script.js:201791:42473) +at s (https://instance.example.com/fe/js/cv-script.js:201791:31979) +at Array.ensureItemHasSomethingToSay (https://instance.example.com/fe/js/cv-script.js:201791:42150) +at s (https://instance.example.com/fe/js/cv-script.js:201791:31979) +at Array.handleItemWithError (https://instance.example.com/fe/js/cv-script.js:201791:42001) +at s (https://instance.example.com/fe/js/cv-script.js:201791:31979) +at Array.handleDomException (https://instance.example.com/fe/js/cv-script.js:201791:41530) +at s (https://instance.example.com/fe/js/cv-script.js:201791:31979) +at o._applyTransforms (https://instance.example.com/fe/js/cv-script.js:201791:31998) +at o.log (https://instance.example.com/fe/js/cv-script.js:201791:31700) +at a._log (https://instance.example.com/fe/js/cv-script.js:201791:24343) +at a.log (https://instance.example.com/fe/js/cv-script.js:201791:23115) +at m.handleUnhandledRejection (https://instance.example.com/fe/js/cv-script.js:201791:19920) +at n (https://instance.example.com/fe/js/cv-script.js:201791:36330)+
The stack trace at the sink was:
+at Object.XMhUr (<anonymous>:1:544502) +at _0x13dcf0 (<anonymous>:1:558761) +at _0xdc6a5f.<computed>._0x13cc4d.oknbI._0x3e2633.XMLHttpRequest.<computed> (<anonymous>:1:458938) +at XMLHttpRequest.send (https://instance.example.com/fe/js/cv-script.js:201791:62448) +at t.exports (https://instance.example.com/fe/js/cv-script.js:201791:39384) +at s._makeRequest (https://instance.example.com/fe/js/cv-script.js:201791:37748) +at s._makeZoneRequest (https://instance.example.com/fe/js/cv-script.js:201791:37505) +at s.post (https://instance.example.com/fe/js/cv-script.js:201791:36989) +at https://instance.example.com/fe/js/cv-script.js:201791:32574+
DOM-based vulnerabilities arise when a client-side script reads data from a controllable part of + the DOM (for example, the URL) and processes this data in an unsafe way.
+ +DOM-based open redirection arises when a script writes controllable data into the target of a + redirection in an unsafe way. An attacker may be able to use the vulnerability to construct a + URL that, if visited by another application user, will cause a redirection to an arbitrary + external domain. This behavior can be leveraged to facilitate phishing attacks against users of + the application. The ability to use an authentic application URL, targeting the correct domain + and with a valid SSL certificate (if SSL is used), lends credibility to the phishing attack + because many users, even if they verify these features, will not notice the subsequent + redirection to a different domain.
+Note: If an attacker is able to control the start of the string that is passed to the + redirection API, then it may be possible to escalate this vulnerability into a JavaScript + injection attack, by using a URL with the javascript: pseudo-protocol to execute arbitrary + script code when the URL is processed by the browser.
+ +Burp Suite automatically identifies this issue using dynamic and static code analysis. Static + analysis can lead to false positives that are not actually exploitable. If Burp Scanner has not + provided any evidence resulting from dynamic analysis, you should review the relevant code and + execution paths to determine whether this vulnerability is indeed present, or whether + mitigations are in place that would prevent exploitation.
+The most effective way to avoid DOM-based open redirection vulnerabilities is not to dynamically + set redirection targets using data that originated from any untrusted source. If the desired + functionality of the application means that this behavior is unavoidable, then defenses must be + implemented within the client-side code to prevent malicious data from introducing an arbitrary + URL as a redirection target. In general, this is best achieved by using a whitelist of URLs that + are permitted redirection targets, and strictly validating the target against this list before + performing the redirection.
++ Data is read from location.search and passed to xhr.send. +
+The following value was injected into the source:
+?esux3absmq=esux3absmq%27%22`'"/esux3absmq/><esux3absmq/\>z0k5afa1h6&+
The previous value reached the sink:
+{"access_token":"ed227e6e767e4584a5b3c10dc8b68c2a","data":{"environment":"development","level":"error","endpoint":"api.rollbar.com/api/1/item/","platform":"browser","framework":"browser-js","language":"javascript","server":{},"uuid":"8ea547f7-4ead-4638-bd75-97e9d3af07a9","notifier":{"name":"rollbar-browser-js","version":"2.26.2","configured_options":{"captureUncaught":true,"captureUnhandledRejections":true,"payload":{"environment":"development"}},"diagnostic":{"original_arg_types":["string","error","undefined"],"is_uncaught":true,"raw_error":{"message":"Request failed with status code 500","name":"Error","constructor_name":"Error","stack":"Error: Request failed with status code 500\n at createError (https://instance.example.com/fe/js/cv-script.js:51368:15)\n at settle (https://instance.example.com/fe/js/cv-script.js:51664:12)\n at XMLHttpRequest.onloadend (https://instance.example.com/fe/js/cv-script.js:50688:7)"}}},"request":{"url":"https://instance.example.com/fe/m3/m-login?bih4qyzpvt=bih4qyzpvt%27%22`'\"/bih4qyzpvt/><bih4qyzpvt/\\>sbxdhx44wf&#bih4qyzpvt=bih4qyzpvt%27%22`'\"/bih4qyzpvt/><bih4qyzpvt/\\>sbxdhx44wf&","query_string":"?esux3absmq=esux3absmq%27%22`'\"/esux3absmq/><esux3absmq/\\>z0k5afa1h6&","user_ip":"$remote_ip"},"client":{"runtime_ms":497,"timestamp":1730843998,"javascript":{"browser":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.70 Safari/537.36","language":"en-US","cookie_enabled":true,"screen":{"width":800,"height":600},"plugins":[]}},"body":{"trace":{"exception":{"class":"Error","message":"Request failed with status code 500","description":"Request failed with status code 500"},"frames":[{"filename":"https://instance.example.com/fe/js/cv-script.js","lineno":50688,"method":"XMLHttpRequest.onloadend","colno":7},{"filename":"https://instance.example.com/fe/js/cv-script.js","lineno":51664,"method":"settle","colno":12},{"filename":"https://instance.example.com/fe/js/cv-script.js","lineno":51368,"method":"createError","colno":15}]},"telemetry":[{"level":"error","type":"error","timestamp_ms":1730843997119,"body":{"message":"Cannot read properties of null (reading 'once')","stack":"TypeError: Cannot read properties of null (reading 'once')\n at InfoReceiver.doXhr (https://instance.example.com/fe/js/cv-script.js:202406:11)\n at https://instance.example.com/fe/js/cv-script.js:202367:10"},"source":"client","uuid":"a4231093-6d2e-4dbb-9f7f-7f0c97fde382"},{"level":"log","type":"log","timestamp_ms":1730843997217,"body":{"message":"--DynamicJavaScriptAnalysis from JS:-------------------------"},"source":"client"},{"level":"log","type":"log","timestamp_ms":1730843997217,"body":{"message":"--DynamicJavaScriptAnalysis from JS:DOM XSS found"},"source":"client"},{"level":"log","type":"log","timestamp_ms":1730843997217,"body":{"message":"--DynamicJavaScriptAnalysis from JS:Context: NaN.queryString"},"source":"client"},{"level":"log","type":"log","timestamp_ms":1730843997217,"body":{"message":"--DynamicJavaScriptAnalysis from JS:Tag name: "},"source":"client"},{"level":"log","type":"log","timestamp_ms":1730843997217,"body":{"message":"--DynamicJavaScriptAnalysis from JS:Original url: https://instance.example.com/fe/m3/m-login"},"source":"client"},{"level":"log","type":"log","timestamp_ms":1730843997217,"body":{"message":"--DynamicJavaScriptAnalysis from JS:Generated url: https://instance.example.com/fe/m3/m-login?iepuap2p8w=iepuap2p8w%27%22`'\"/iepuap2p8w/><iepuap2p8w/\\>fwqsx8nplw&#iepuap2p8w=iepuap2p8w%27%22`'\"/iepuap2p8w/><iepuap2p8w/\\>fwqsx8nplw&"},"source":"client"},{"level":"log","type":"log","timestamp_ms":1730843997217,"body":{"message":"--DynamicJavaScriptAnalysis from JS:PoC:Unable to generate PoC"},"source":"client"},{"level":"log","type":"log","timestamp_ms":1730843997217,"body":{"message":"--DynamicJavaScriptAnalysis from JS:Source identified as: location.href"},"source":"client"},{"level":"log","type":"log","timestamp_ms":1730843997218,"body":{"message":"--DynamicJavaScriptAnalysis from JS:Source Stack trace: at Object._0x165f99 [as proxiedGetterCallback] (<anonymous>:1:557377)\n at get href (<anonymous>:1:249544)\n at Array.<anonymous> (https://instance.example.com/fe/js/cv-script.js:201791:42576)\n at s (https://instance.example.com/fe/js/cv-script.js:201791:31979)\n at Array.addBaseInfo (https://instance.example.com/fe/js/cv-script.js:201791:42473)\n at s (https://instance.example.com/fe/js/cv-script.js:201791:31979)\n at Array.ensureItemHasSomethingToSay (https://instance.example.com/fe/js/cv-script.js:201791:42150)\n at s (https://instance.example.com/fe/js/cv-script.js:201791:31979)\n at Array.handleItemWithError (https://instance.example.com/fe/js/cv-script.js:201791:42001)\n at s (https://instance.example.com/fe/js/cv-script.js:201791:31979)\n at Array.handleDomException (https://instance.example.com/fe/js/cv-script.js:201791:41530)\n at s (https://instance.example.com/fe/js/cv-script.js:201791:31979)\n at o._applyTransforms (https://instance.example.com/fe/js/cv-script.js:201791:31998)\n at o.log (https://instance.example.com/fe/js/cv-script.js:201791:31700)\n at a._log (https://instance.example.com/fe/js/cv-script.js:201791:24343)\n at a.log (https://instance.example.com/fe/js/cv-script.js:201791:23115)\n at m.handleUncaughtException (https://instance.example.com/fe/js/cv-script.js:201791:18878)\n at n (https://instance.example.com/fe/js/cv-script.js:201791:35409)\n at i (https://instance.example.com/fe/js/cv-script.js:201791:35806)"},"source":"client"},{"level":"log","type":"log","timestamp_ms":1730843997218,"body":{"message":"--DynamicJavaScriptAnalysis from JS:Sink identified as: xhr.send"},"source":"client"},{"level":"log","type":"log","timestamp_ms":1730843997218,"body":{"message":"--DynamicJavaScriptAnalysis from JS:Sink Stack trace: at Object.XMhUr (<anonymous>:1:544502)\n at _0x13dcf0 (<anonymous>:1:558761)\n at _0xdc6a5f.<computed>._0x13cc4d.oknbI._0x3e2633.XMLHttpRequest.<computed> (<anonymous>:1:458938)\n at XMLHttpRequest.send (https://instance.example.com/fe/js/cv-script.js:201791:62448)\n at t.exports (https://instance.example.com/fe/js/cv-script.js:201791:39384)\n at s._makeRequest (https://instance.example.com/fe/js/cv-script.js:201791:37748)\n at s._makeZoneRequest (https://instance.example.com/fe/js/cv-script.js:201791:37505)\n at s.post (https://instance.example.com/fe/js/cv-script.js:201791:36989)\n at https://instance.example.com/fe/js/cv-script.js:201791:32574"},"source":"client"},{"level":"log","type":"log","timestamp_ms":1730843997218,"body":{"message":"--DynamicJavaScriptAnalysis from JS:Sink value: {\"access_token\":\"ed227e6e767e4584a5b3c10dc8b68c2a\",\"data\":{\"environment\":\"development\",\"level\":\"error\",\"endpoint\":\"api.rollbar.com/api/1/item/\",\"platform\":\"browser\",\"framework\":\"browser-js\",\"language\":\"javascript\",\"server\":{},\"uuid\":\"a4231093-6d2e-4dbb-9f7f-7f0c97fde382\",\"notifier\":{\"name\":\"rollbar-browser-js\",\"version\":\"2.26.2\",\"configured_options\":{\"captureUncaught\":true,\"captureUnhandledRejections\":true,\"payload\":{\"environment\":\"development\"}},\"diagnostic\":{\"original_arg_types\":[\"string\",\"error\",\"undefined\"],\"is_uncaught\":true,\"raw_error\":{\"message\":\"Cannot read properties of null (reading 'once')\",\"name\":\"TypeError\",\"constructor_name\":\"TypeError\",\"stack\":\"TypeError: Cannot read properties of null (reading 'once')\\n at InfoReceiver.doXhr (https://instance.example.com/fe/js/cv-script.js:202406:11)\\n at https://instance.example.com/fe/js/cv-script.js:202367:10\"}}},\"request\":{\"url\":\"https://instance.example.com/fe/m3/m-login?iepuap2p8w=iepuap2p8w%27%22`'\\\"/iepuap2p8w/><iepuap2p8w/\\\\>fwqsx8nplw&#iepuap2p8w=iepuap2p8w%27%22`'\\\"/iepuap2p8w/><iepuap2p8w/\\\\>fwqsx8nplw&\",\"query_string\":\"?kpiqhi5l29=kpiqhi5l29%27%22`'\\\"/kpiqhi5l29/><kpiqhi5l29/\\\\>ba6kcvqqrk&\",\"user_ip\":\"$remote_ip\"},\"client\":{\"runtime_ms\":53,\"timestamp\":1730843997,\"javascript\":{\"browser\":\"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.70 Safari/537.36\",\"language\":\"en-US\",\"cookie_enabled\":true,\"screen\":{\"width\":800,\"height\":600},\"plugins\":[]}},\"body\":{\"trace\":{\"exception\":{\"class\":\"TypeError\",\"message\":\"Cannot read properties of null (reading 'once')\",\"description\":\"Uncaught TypeError: Cannot read properties of null (reading 'once')\"},\"frames\":[{\"filename\":\"https://instance.example.com/fe/js/cv-script.js\",\"lineno\":202367,\"method\":\"[anonymous]\",\"colno\":10},{\"filename\":\"https://instance.example.com/fe/js/cv-script.js\",\"lineno\":202406,\"method\":\"InfoReceiver.doXhr\",\"colno\":11}]},\"telemetry\":[{\"level\":\"error\",\"type\":\"error\",\"timestamp_ms\":1730843997119,\"body\":{\"message\":\"Cannot read properties of null (reading 'once')\",\"stack\":\"TypeError: Cannot read properties of null (reading 'once')\\n at InfoReceiver.doXhr (https://instance.example.com/fe/js/cv-script.js:202406:11)\\n at https://instance.example.com/fe/js/cv-script.js:202367:10\"},\"source\":\"client\",\"uuid\":\"a4231093-6d2e-4dbb-9f7f-7f0c97fde382\"}]},\"context\":\"\"}}"},"source":"client"},{"level":"log","type":"log","timestamp_ms":1730843997218,"body":{"message":"--DynamicJavaScriptAnalysis from JS:-------------------------"},"source":"client"},{"level":"log","type":"log","timestamp_ms":1730843997218,"body":{"message":"--DynamicJavaScriptAnalysis from JS:-------------------------"},"source":"client"},{"level":"log","type":"log","timestamp_ms":1730843997218,"body":{"message":"--DynamicJavaScriptAnalysis from JS:DOM XSS found"},"source":"client"},{"level":"log","type":"log","timestamp_ms":1730843997219,"body":{"message":"--DynamicJavaScriptAnalysis from JS:Context: NaN.queryString"},"source":"client"},{"level":"log","type":"log","timestamp_ms":1730843997219,"body":{"message":"--DynamicJavaScriptAnalysis from JS:Tag name: "},"source":"client"},{"level":"log","type":"log","timestamp_ms":1730843997219,"body":{"message":"--DynamicJavaScriptAnalysis from JS:Original url: https://instance.example.com/fe/m3/m-login"},"source":"client"},{"level":"log","type":"log","timestamp_ms":1730843997219,"body":{"message":"--DynamicJavaScriptAnalysis from JS:Generated url: https://instance.example.com/fe/m3/m-login?kpiqhi5l29=kpiqhi5l29%27%22`'\"/kpiqhi5l29/><kpiqhi5l29/\\>ba6kcvqqrk&"},"source":"client"},{"level":"log","type":"log","timestamp_ms":1730843997219,"body":{"message":"--DynamicJavaScriptAnalysis from JS:PoC:Unable to generate PoC"},"source":"client"},{"level":"log","type":"log","timestamp_ms":1730843997219,"body":{"message":"--DynamicJavaScriptAnalysis from JS:Source identified as: location.search"},"source":"client"},{"level":"log","type":"log","timestamp_ms":1730843997219,"body":{"message":"--DynamicJavaScriptAnalysis from JS:Source Stack trace: at Object._0x165f99 [as proxiedGetterCallback] (<anonymous>:1:557377)\n at get search (<anonymous>:1:248279)\n at Array.<anonymous> (https://instance.example.com/fe/js/cv-script.js:201791:42607)\n at s (https://instance.example.com/fe/js/cv-script.js:201791:31979)\n at Array.addBaseInfo (https://instance.example.com/fe/js/cv-script.js:201791:42473)\n at s (https://instance.example.com/fe/js/cv-script.js:201791:31979)\n at Array.ensureItemHasSomethingToSay (https://instance.example.com/fe/js/cv-script.js:201791:42150)\n at s (https://instance.example.com/fe/js/cv-script.js:201791:31979)\n at Array.handleItemWithError (https://instance.example.com/fe/js/cv-script.js:201791:42001)\n at s (https://instance.example.com/fe/js/cv-script.js:201791:31979)\n at Array.handleDomException (https://instance.example.com/fe/js/cv-script.js:201791:41530)\n at s (https://instance.example.com/fe/js/cv-script.js:201791:31979)\n at o._applyTransforms (https://instance.example.com/fe/js/cv-script.js:201791:31998)\n at o.log (https://instance.example.com/fe/js/cv-script.js:201791:31700)\n at a._log (https://instance.example.com/fe/js/cv-script.js:201791:24343)\n at a.log (https://instance.example.com/fe/js/cv-script.js:201791:23115)\n at m.handleUncaughtException (https://instance.example.com/fe/js/cv-script.js:201791:18878)\n at n (https://instance.example.com/fe/js/cv-script.js:201791:35409)\n at i (https://instance.example.com/fe/js/cv-script.js:201791:35806)"},"source":"client"},{"level":"log","type":"log","timestamp_ms":1730843997219,"body":{"message":"--DynamicJavaScriptAnalysis from JS:Sink identified as: xhr.send"},"source":"client"},{"level":"log","type":"log","timestamp_ms":1730843997219,"body":{"message":"--DynamicJavaScriptAnalysis from JS:Sink Stack trace: at Object.XMhUr (<anonymous>:1:544502)\n at _0x13dcf0 (<anonymous>:1:558761)\n at _0xdc6a5f.<computed>._0x13cc4d.oknbI._0x3e2633.XMLHttpRequest.<computed> (<anonymous>:1:458938)\n at XMLHttpRequest.send (https://instance.example.com/fe/js/cv-script.js:201791:62448)\n at t.exports (https://instance.example.com/fe/js/cv-script.js:201791:39384)\n at s._makeRequest (https://instance.example.com/fe/js/cv-script.js:201791:37748)\n at s._makeZoneRequest (https://instance.example.com/fe/js/cv-script.js:201791:37505)\n at s.post (https://instance.example.com/fe/js/cv-script.js:201791:36989)\n at https://instance.example.com/fe/js/cv-script.js:201791:32574"},"source":"client"},{"level":"log","type":"log","timestamp_ms":1730843997219,"body":{"message":"--DynamicJavaScriptAnalysis from JS:Sink value: {\"access_token\":\"ed227e6e767e4584a5b3c10dc8b68c2a\",\"data\":{\"environment\":\"development\",\"level\":\"error\",\"endpoint\":\"api.rollbar.com/api/1/item/\",\"platform\":\"browser\",\"framework\":\"browser-js\",\"language\":\"javascript\",\"server\":{},\"uuid\":\"a4231093-6d2e-4dbb-9f7f-7f0c97fde382\",\"notifier\":{\"name\":\"rollbar-browser-js\",\"version\":\"2.26.2\",\"configured_options\":{\"captureUncaught\":true,\"captureUnhandledRejections\":true,\"payload\":{\"environment\":\"development\"}},\"diagnostic\":{\"original_arg_types\":[\"string\",\"error\",\"undefined\"],\"is_uncaught\":true,\"raw_error\":{\"message\":\"Cannot read properties of null (reading 'once')\",\"name\":\"TypeError\",\"constructor_name\":\"TypeError\",\"stack\":\"TypeError: Cannot read properties of null (reading 'once')\\n at InfoReceiver.doXhr (https://instance.example.com/fe/js/cv-script.js:202406:11)\\n at https://instance.example.com/fe/js/cv-script.js:202367:10\"}}},\"request\":{\"url\":\"https://instance.example.com/fe/m3/m-login?iepuap2p8w=iepuap2p8w%27%22`'\\\"/iepuap2p8w/><iepuap2p8w/\\\\>fwqsx8nplw&#iepuap2p8w=iepuap2p8w%27%22`'\\\"/iepuap2p8w/><iepuap2p8w/\\\\>fwqsx8nplw&\",\"query_string\":\"?kpiqhi5l29=kpiqhi5l29%27%22`'\\\"/kpiqhi5l29/><kpiqhi5l29/\\\\>ba6kcvqqrk&\",\"user_ip\":\"$remote_ip\"},\"client\":{\"runtime_ms\":53,\"timestamp\":1730843997,\"javascript\":{\"browser\":\"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.70 Safari/537.36\",\"language\":\"en-US\",\"cookie_enabled\":true,\"screen\":{\"width\":800,\"height\":600},\"plugins\":[]}},\"body\":{\"trace\":{\"exception\":{\"class\":\"TypeError\",\"message\":\"Cannot read properties of null (reading 'once')\",\"description\":\"Uncaught TypeError: Cannot read properties of null (reading 'once')\"},\"frames\":[{\"filename\":\"https://instance.example.com/fe/js/cv-script.js\",\"lineno\":202367,\"method\":\"[anonymous]\",\"colno\":10},{\"filename\":\"https://instance.example.com/fe/js/cv-script.js\",\"lineno\":202406,\"method\":\"InfoReceiver.doXhr\",\"colno\":11}]},\"telemetry\":[{\"level\":\"error\",\"type\":\"error\",\"timestamp_ms\":1730843997119,\"body\":{\"message\":\"Cannot read properties of null (reading 'once')\",\"stack\":\"TypeError: Cannot read properties of null (reading 'once')\\n at InfoReceiver.doXhr (https://instance.example.com/fe/js/cv-script.js:202406:11)\\n at https://instance.example.com/fe/js/cv-script.js:202367:10\"},\"source\":\"client\",\"uuid\":\"a4231093-6d2e-4dbb-9f7f-7f0c97fde382\"}]},\"context\":\"\"}}"},"source":"client"},{"level":"log","type":"log","timestamp_ms":1730843997220,"body":{"message":"--DynamicJavaScriptAnalysis from JS:-------------------------"},"source":"client"},{"level":"error","type":"network","timestamp_ms":1730843997410,"body":{"method":"GET","url":"https://localhost:8000/sockjs-node/info?t=1730843997179","status_code":0,"start_time_ms":1730843997180,"end_time_ms":1730843997410,"subtype":"xhr","response_content_type":null},"source":"client"},{"level":"error","type":"network","timestamp_ms":1730843997410,"body":{"method":"GET","url":"https://localhost:8000/sockjs-node/info?t=1730843997221","status_code":0,"start_time_ms":1730843997221,"end_time_ms":1730843997410,"subtype":"xhr","response_content_type":null},"source":"client"},{"level":"info","type":"network","timestamp_ms":1730843997482,"body":{"method":"POST","url":"https://api.rollbar.com:443/api/1/item/","status_code":200,"start_time_ms":1730843997213,"end_time_ms":1730843997482,"request_content_type":"application/json","subtype":"xhr","response_content_type":"application/json; charset=utf-8"},"source":"client"},{"level":"error","type":"error","timestamp_ms":1730843997563,"body":{"message":"Request failed with status code 500","stack":"Error: Request failed with status code 500\n at createError (https://instance.example.com/fe/js/cv-script.js:51368:15)\n at settle (https://instance.example.com/fe/js/cv-script.js:51664:12)\n at XMLHttpRequest.onloadend (https://instance.example.com/fe/js/cv-script.js:50688:7)"},"source":"client","uuid":"8ea547f7-4ead-4638-bd75-97e9d3af07a9"}]},"context":""}}+
The stack trace at source was:
+at Object._0x165f99 [as proxiedGetterCallback] (<anonymous>:1:557377) +at get search (<anonymous>:1:248279) +at Array.<anonymous> (https://instance.example.com/fe/js/cv-script.js:201791:42607) +at s (https://instance.example.com/fe/js/cv-script.js:201791:31979) +at Array.addBaseInfo (https://instance.example.com/fe/js/cv-script.js:201791:42473) +at s (https://instance.example.com/fe/js/cv-script.js:201791:31979) +at Array.ensureItemHasSomethingToSay (https://instance.example.com/fe/js/cv-script.js:201791:42150) +at s (https://instance.example.com/fe/js/cv-script.js:201791:31979) +at Array.handleItemWithError (https://instance.example.com/fe/js/cv-script.js:201791:42001) +at s (https://instance.example.com/fe/js/cv-script.js:201791:31979) +at Array.handleDomException (https://instance.example.com/fe/js/cv-script.js:201791:41530) +at s (https://instance.example.com/fe/js/cv-script.js:201791:31979) +at o._applyTransforms (https://instance.example.com/fe/js/cv-script.js:201791:31998) +at o.log (https://instance.example.com/fe/js/cv-script.js:201791:31700) +at a._log (https://instance.example.com/fe/js/cv-script.js:201791:24343) +at a.log (https://instance.example.com/fe/js/cv-script.js:201791:23115) +at m.handleUnhandledRejection (https://instance.example.com/fe/js/cv-script.js:201791:19920) +at n (https://instance.example.com/fe/js/cv-script.js:201791:36330)+
The stack trace at the sink was:
+at Object.XMhUr (<anonymous>:1:544502) +at _0x13dcf0 (<anonymous>:1:558761) +at _0xdc6a5f.<computed>._0x13cc4d.oknbI._0x3e2633.XMLHttpRequest.<computed> (<anonymous>:1:458938) +at XMLHttpRequest.send (https://instance.example.com/fe/js/cv-script.js:201791:62448) +at t.exports (https://instance.example.com/fe/js/cv-script.js:201791:39384) +at s._makeRequest (https://instance.example.com/fe/js/cv-script.js:201791:37748) +at s._makeZoneRequest (https://instance.example.com/fe/js/cv-script.js:201791:37505) +at s.post (https://instance.example.com/fe/js/cv-script.js:201791:36989) +at https://instance.example.com/fe/js/cv-script.js:201791:32574+
Issued to: | +*.sandbox.example.com | +
Issued by: | +Amazon RSA 2048 M02 | +
Valid from: | +Wed Feb 28 00:00:00 UTC 2024 | +
Valid to: | +Sat Mar 29 23:59:59 UTC 2025 | +
Issued to: | +Amazon RSA 2048 M02 | +
Issued by: | +Amazon Root CA 1 | +
Valid from: | +Tue Aug 23 22:25:30 UTC 2022 | +
Valid to: | +Fri Aug 23 22:25:30 UTC 2030 | +
Issued to: | +Amazon Root CA 1 | +
Issued by: | +Starfield Services Root Certificate Authority - G2 | +
Valid from: | +Mon May 25 12:00:00 UTC 2015 | +
Valid to: | +Thu Dec 31 01:00:00 UTC 2037 | +
Issued to: | +Starfield Services Root Certificate Authority - G2 | +
Issued by: | +Starfield Class 2 Certification Authority | +
Valid from: | +Wed Sep 02 00:00:00 UTC 2009 | +
Valid to: | +Wed Jun 28 17:39:16 UTC 2034 | +
Issued to: | +Starfield Class 2 Certification Authority | +
Issued by: | +Starfield Class 2 Certification Authority | +
Valid from: | +Tue Jun 29 17:39:16 UTC 2004 | +
Valid to: | +Thu Jun 29 17:39:16 UTC 2034 | +
TLS (or SSL) helps to protect the confidentiality and integrity of information in transit between + the browser and server, and to provide authentication of the server's identity. To serve this + purpose, the server must present an TLS certificate that is valid for the server's hostname, is + issued by a trusted authority and is valid for the current date. If any one of these + requirements is not met, TLS connections to the server will not provide the full protection for + which TLS is designed.
+It should be noted that various attacks exist against TLS in general, and in the context of HTTPS + web connections in particular. It may be possible for a determined and suitably-positioned + attacker to compromise TLS connections without user detection even when a valid TLS certificate + is used.
+The content security policy fails to prevent untrusted JavaScript from being executed. As a + result, it may fail to mitigate cross-site scripting attacks.
+The policy has the following issues:
+The policy allows global wildcard URLs which allows arbitrary scripts to be executed.
+The policy allows data: URLs which allows arbitrary scripts to be executed.
+Content Security Policy (CSP) is a security mechanism designed to mitigate cross-site scripting + attacks by disabling dangerous behaviours such as untrusted JavaScript execution. + Websites can specify their security policy in a response header or meta tag, enabling + fine-grained control over dangerous features like scripts and stylesheets. +
++ Mitigate cross-site scripting by avoiding 'unsafe-inline', 'unsafe-eval', data: URLs, and global + wildcards in script directives. Use a secure, random + nonce of at least 8 characters 'nonce-RANDOM' to prevent untrusted JavaScript execution. +
+The content security policy fails to prevent untrusted JavaScript from being executed. As a + result, it may fail to mitigate cross-site scripting attacks.
+The policy has the following issues:
+The policy allows global wildcard URLs which allows arbitrary scripts to be executed.
+The policy allows data: URLs which allows arbitrary scripts to be executed.
+Content Security Policy (CSP) is a security mechanism designed to mitigate cross-site scripting + attacks by disabling dangerous behaviours such as untrusted JavaScript execution. + Websites can specify their security policy in a response header or meta tag, enabling + fine-grained control over dangerous features like scripts and stylesheets. +
++ Mitigate cross-site scripting by avoiding 'unsafe-inline', 'unsafe-eval', data: URLs, and global + wildcards in script directives. Use a secure, random + nonce of at least 8 characters 'nonce-RANDOM' to prevent untrusted JavaScript execution. +
+The content security policy fails to prevent untrusted JavaScript from being executed. As a + result, it may fail to mitigate cross-site scripting attacks.
+The policy has the following issues:
+The policy allows global wildcard URLs which allows arbitrary scripts to be executed.
+The policy allows data: URLs which allows arbitrary scripts to be executed.
+Content Security Policy (CSP) is a security mechanism designed to mitigate cross-site scripting + attacks by disabling dangerous behaviours such as untrusted JavaScript execution. + Websites can specify their security policy in a response header or meta tag, enabling + fine-grained control over dangerous features like scripts and stylesheets. +
++ Mitigate cross-site scripting by avoiding 'unsafe-inline', 'unsafe-eval', data: URLs, and global + wildcards in script directives. Use a secure, random + nonce of at least 8 characters 'nonce-RANDOM' to prevent untrusted JavaScript execution. +
+The content security policy fails to prevent untrusted JavaScript from being executed. As a + result, it may fail to mitigate cross-site scripting attacks.
+The policy has the following issues:
+The policy allows global wildcard URLs which allows arbitrary scripts to be executed.
+The policy allows data: URLs which allows arbitrary scripts to be executed.
+Content Security Policy (CSP) is a security mechanism designed to mitigate cross-site scripting + attacks by disabling dangerous behaviours such as untrusted JavaScript execution. + Websites can specify their security policy in a response header or meta tag, enabling + fine-grained control over dangerous features like scripts and stylesheets. +
++ Mitigate cross-site scripting by avoiding 'unsafe-inline', 'unsafe-eval', data: URLs, and global + wildcards in script directives. Use a secure, random + nonce of at least 8 characters 'nonce-RANDOM' to prevent untrusted JavaScript execution. +
+The content security policy fails to prevent untrusted JavaScript from being executed. As a + result, it may fail to mitigate cross-site scripting attacks.
+The policy has the following issues:
+The policy allows global wildcard URLs which allows arbitrary scripts to be executed.
+The policy allows data: URLs which allows arbitrary scripts to be executed.
+Content Security Policy (CSP) is a security mechanism designed to mitigate cross-site scripting + attacks by disabling dangerous behaviours such as untrusted JavaScript execution. + Websites can specify their security policy in a response header or meta tag, enabling + fine-grained control over dangerous features like scripts and stylesheets. +
++ Mitigate cross-site scripting by avoiding 'unsafe-inline', 'unsafe-eval', data: URLs, and global + wildcards in script directives. Use a secure, random + nonce of at least 8 characters 'nonce-RANDOM' to prevent untrusted JavaScript execution. +
+The content security policy fails to prevent untrusted JavaScript from being executed. As a + result, it may fail to mitigate cross-site scripting attacks.
+The policy has the following issues:
+The policy allows global wildcard URLs which allows arbitrary scripts to be executed.
+The policy allows data: URLs which allows arbitrary scripts to be executed.
+Content Security Policy (CSP) is a security mechanism designed to mitigate cross-site scripting + attacks by disabling dangerous behaviours such as untrusted JavaScript execution. + Websites can specify their security policy in a response header or meta tag, enabling + fine-grained control over dangerous features like scripts and stylesheets. +
++ Mitigate cross-site scripting by avoiding 'unsafe-inline', 'unsafe-eval', data: URLs, and global + wildcards in script directives. Use a secure, random + nonce of at least 8 characters 'nonce-RANDOM' to prevent untrusted JavaScript execution. +
+The content security policy fails to prevent untrusted JavaScript from being executed. As a + result, it may fail to mitigate cross-site scripting attacks.
+The policy has the following issues:
+The policy allows global wildcard URLs which allows arbitrary scripts to be executed.
+The policy allows data: URLs which allows arbitrary scripts to be executed.
+Content Security Policy (CSP) is a security mechanism designed to mitigate cross-site scripting + attacks by disabling dangerous behaviours such as untrusted JavaScript execution. + Websites can specify their security policy in a response header or meta tag, enabling + fine-grained control over dangerous features like scripts and stylesheets. +
++ Mitigate cross-site scripting by avoiding 'unsafe-inline', 'unsafe-eval', data: URLs, and global + wildcards in script directives. Use a secure, random + nonce of at least 8 characters 'nonce-RANDOM' to prevent untrusted JavaScript execution. +
+The content security policy fails to prevent untrusted style execution. As a result, it may fail + to mitigate style based data exfiltration.
+The policy allows global wildcard URLs which allows arbitrary styles to be executed.
+The policy allows data: URLs which allows arbitrary styles to be executed.
+Content Security Policy (CSP) is a security mechanism designed to mitigate cross-site scripting + attacks by disabling dangerous behaviours such as untrusted JavaScript execution. + Websites can specify their security policy in a response header or meta tag, enabling + fine-grained control over dangerous features like scripts and stylesheets. +
++ Mitigate style-based data exfiltration by avoiding 'unsafe-inline', data: URLs, and global + wildcards in style directives. + Use a secure, random nonce of at least 8 characters 'nonce-RANDOM' in the relevant directive. +
+The content security policy fails to prevent untrusted style execution. As a result, it may fail + to mitigate style based data exfiltration.
+The policy allows global wildcard URLs which allows arbitrary styles to be executed.
+The policy allows data: URLs which allows arbitrary styles to be executed.
+Content Security Policy (CSP) is a security mechanism designed to mitigate cross-site scripting + attacks by disabling dangerous behaviours such as untrusted JavaScript execution. + Websites can specify their security policy in a response header or meta tag, enabling + fine-grained control over dangerous features like scripts and stylesheets. +
++ Mitigate style-based data exfiltration by avoiding 'unsafe-inline', data: URLs, and global + wildcards in style directives. + Use a secure, random nonce of at least 8 characters 'nonce-RANDOM' in the relevant directive. +
+The content security policy fails to prevent untrusted style execution. As a result, it may fail + to mitigate style based data exfiltration.
+The policy allows global wildcard URLs which allows arbitrary styles to be executed.
+The policy allows data: URLs which allows arbitrary styles to be executed.
+Content Security Policy (CSP) is a security mechanism designed to mitigate cross-site scripting + attacks by disabling dangerous behaviours such as untrusted JavaScript execution. + Websites can specify their security policy in a response header or meta tag, enabling + fine-grained control over dangerous features like scripts and stylesheets. +
++ Mitigate style-based data exfiltration by avoiding 'unsafe-inline', data: URLs, and global + wildcards in style directives. + Use a secure, random nonce of at least 8 characters 'nonce-RANDOM' in the relevant directive. +
+The content security policy fails to prevent untrusted style execution. As a result, it may fail + to mitigate style based data exfiltration.
+The policy allows global wildcard URLs which allows arbitrary styles to be executed.
+The policy allows data: URLs which allows arbitrary styles to be executed.
+Content Security Policy (CSP) is a security mechanism designed to mitigate cross-site scripting + attacks by disabling dangerous behaviours such as untrusted JavaScript execution. + Websites can specify their security policy in a response header or meta tag, enabling + fine-grained control over dangerous features like scripts and stylesheets. +
++ Mitigate style-based data exfiltration by avoiding 'unsafe-inline', data: URLs, and global + wildcards in style directives. + Use a secure, random nonce of at least 8 characters 'nonce-RANDOM' in the relevant directive. +
+The content security policy fails to prevent untrusted style execution. As a result, it may fail + to mitigate style based data exfiltration.
+The policy allows global wildcard URLs which allows arbitrary styles to be executed.
+The policy allows data: URLs which allows arbitrary styles to be executed.
+Content Security Policy (CSP) is a security mechanism designed to mitigate cross-site scripting + attacks by disabling dangerous behaviours such as untrusted JavaScript execution. + Websites can specify their security policy in a response header or meta tag, enabling + fine-grained control over dangerous features like scripts and stylesheets. +
++ Mitigate style-based data exfiltration by avoiding 'unsafe-inline', data: URLs, and global + wildcards in style directives. + Use a secure, random nonce of at least 8 characters 'nonce-RANDOM' in the relevant directive. +
+The content security policy fails to prevent untrusted style execution. As a result, it may fail + to mitigate style based data exfiltration.
+The policy allows global wildcard URLs which allows arbitrary styles to be executed.
+The policy allows data: URLs which allows arbitrary styles to be executed.
+Content Security Policy (CSP) is a security mechanism designed to mitigate cross-site scripting + attacks by disabling dangerous behaviours such as untrusted JavaScript execution. + Websites can specify their security policy in a response header or meta tag, enabling + fine-grained control over dangerous features like scripts and stylesheets. +
++ Mitigate style-based data exfiltration by avoiding 'unsafe-inline', data: URLs, and global + wildcards in style directives. + Use a secure, random nonce of at least 8 characters 'nonce-RANDOM' in the relevant directive. +
+The content security policy fails to prevent untrusted style execution. As a result, it may fail + to mitigate style based data exfiltration.
+The policy allows global wildcard URLs which allows arbitrary styles to be executed.
+The policy allows data: URLs which allows arbitrary styles to be executed.
+Content Security Policy (CSP) is a security mechanism designed to mitigate cross-site scripting + attacks by disabling dangerous behaviours such as untrusted JavaScript execution. + Websites can specify their security policy in a response header or meta tag, enabling + fine-grained control over dangerous features like scripts and stylesheets. +
++ Mitigate style-based data exfiltration by avoiding 'unsafe-inline', data: URLs, and global + wildcards in style directives. + Use a secure, random nonce of at least 8 characters 'nonce-RANDOM' in the relevant directive. +
+The content security policy doesn't prevent form hijacking, where attackers with HTML injection + hijack forms using action attributes. This can lead to credential theft by autofilling passwords + from a manager and sending them to an attacker's server upon form submission.
+Content Security Policy (CSP) is a security mechanism designed to mitigate cross-site scripting + attacks by disabling dangerous behaviours such as untrusted JavaScript execution. + Websites can specify their security policy in a response header or meta tag, enabling + fine-grained control over dangerous features like scripts and stylesheets. +
+We recommend using the form-action directive in the CSP response header to control form post + destinations. If no form actions are used, set form-action to 'none' to block + untrusted forms. For applications without external form URLs, use 'self' to allow only + same-origin URLs. If needed, allow list hosts for external URL form submissions, but + be aware this lets attackers submit to these external resources. +
+The content security policy doesn't prevent form hijacking, where attackers with HTML injection + hijack forms using action attributes. This can lead to credential theft by autofilling passwords + from a manager and sending them to an attacker's server upon form submission.
+Content Security Policy (CSP) is a security mechanism designed to mitigate cross-site scripting + attacks by disabling dangerous behaviours such as untrusted JavaScript execution. + Websites can specify their security policy in a response header or meta tag, enabling + fine-grained control over dangerous features like scripts and stylesheets. +
+We recommend using the form-action directive in the CSP response header to control form post + destinations. If no form actions are used, set form-action to 'none' to block + untrusted forms. For applications without external form URLs, use 'self' to allow only + same-origin URLs. If needed, allow list hosts for external URL form submissions, but + be aware this lets attackers submit to these external resources. +
+The content security policy doesn't prevent form hijacking, where attackers with HTML injection + hijack forms using action attributes. This can lead to credential theft by autofilling passwords + from a manager and sending them to an attacker's server upon form submission.
+Content Security Policy (CSP) is a security mechanism designed to mitigate cross-site scripting + attacks by disabling dangerous behaviours such as untrusted JavaScript execution. + Websites can specify their security policy in a response header or meta tag, enabling + fine-grained control over dangerous features like scripts and stylesheets. +
+We recommend using the form-action directive in the CSP response header to control form post + destinations. If no form actions are used, set form-action to 'none' to block + untrusted forms. For applications without external form URLs, use 'self' to allow only + same-origin URLs. If needed, allow list hosts for external URL form submissions, but + be aware this lets attackers submit to these external resources. +
+The content security policy doesn't prevent form hijacking, where attackers with HTML injection + hijack forms using action attributes. This can lead to credential theft by autofilling passwords + from a manager and sending them to an attacker's server upon form submission.
+Content Security Policy (CSP) is a security mechanism designed to mitigate cross-site scripting + attacks by disabling dangerous behaviours such as untrusted JavaScript execution. + Websites can specify their security policy in a response header or meta tag, enabling + fine-grained control over dangerous features like scripts and stylesheets. +
+We recommend using the form-action directive in the CSP response header to control form post + destinations. If no form actions are used, set form-action to 'none' to block + untrusted forms. For applications without external form URLs, use 'self' to allow only + same-origin URLs. If needed, allow list hosts for external URL form submissions, but + be aware this lets attackers submit to these external resources. +
+The content security policy doesn't prevent form hijacking, where attackers with HTML injection + hijack forms using action attributes. This can lead to credential theft by autofilling passwords + from a manager and sending them to an attacker's server upon form submission.
+Content Security Policy (CSP) is a security mechanism designed to mitigate cross-site scripting + attacks by disabling dangerous behaviours such as untrusted JavaScript execution. + Websites can specify their security policy in a response header or meta tag, enabling + fine-grained control over dangerous features like scripts and stylesheets. +
+We recommend using the form-action directive in the CSP response header to control form post + destinations. If no form actions are used, set form-action to 'none' to block + untrusted forms. For applications without external form URLs, use 'self' to allow only + same-origin URLs. If needed, allow list hosts for external URL form submissions, but + be aware this lets attackers submit to these external resources. +
+The content security policy doesn't prevent form hijacking, where attackers with HTML injection + hijack forms using action attributes. This can lead to credential theft by autofilling passwords + from a manager and sending them to an attacker's server upon form submission.
+Content Security Policy (CSP) is a security mechanism designed to mitigate cross-site scripting + attacks by disabling dangerous behaviours such as untrusted JavaScript execution. + Websites can specify their security policy in a response header or meta tag, enabling + fine-grained control over dangerous features like scripts and stylesheets. +
+We recommend using the form-action directive in the CSP response header to control form post + destinations. If no form actions are used, set form-action to 'none' to block + untrusted forms. For applications without external form URLs, use 'self' to allow only + same-origin URLs. If needed, allow list hosts for external URL form submissions, but + be aware this lets attackers submit to these external resources. +
+The content security policy doesn't prevent form hijacking, where attackers with HTML injection + hijack forms using action attributes. This can lead to credential theft by autofilling passwords + from a manager and sending them to an attacker's server upon form submission.
+Content Security Policy (CSP) is a security mechanism designed to mitigate cross-site scripting + attacks by disabling dangerous behaviours such as untrusted JavaScript execution. + Websites can specify their security policy in a response header or meta tag, enabling + fine-grained control over dangerous features like scripts and stylesheets. +
+We recommend using the form-action directive in the CSP response header to control form post + destinations. If no form actions are used, set form-action to 'none' to block + untrusted forms. For applications without external form URLs, use 'self' to allow only + same-origin URLs. If needed, allow list hosts for external URL form submissions, but + be aware this lets attackers submit to these external resources. +
+An HTML5 cross-origin resource sharing (CORS) policy controls whether and how content running on + other domains can perform two-way interaction with the domain that publishes the policy. The + policy is fine-grained and can apply access controls per-request based on the URL and other + features of the request.
+If another domain is allowed by the policy, then that domain can potentially attack users of the + application. If a user is logged in to the application, and visits a domain allowed by the + policy, then any malicious content running on that domain can potentially retrieve content from + the application, and sometimes carry out actions within the security context of the logged in + user.
+Even if an allowed domain is not overtly malicious in itself, security vulnerabilities within + that domain could potentially be leveraged by an attacker to exploit the trust relationship and + attack the application that allows access. CORS policies on pages containing sensitive + information should be reviewed to determine whether it is appropriate for the application to + trust both the intentions and security posture of any domains granted access.
+Any inappropriate domains should be removed from the CORS policy.
+An HTML5 cross-origin resource sharing (CORS) policy controls whether and how content running on + other domains can perform two-way interaction with the domain that publishes the policy. The + policy is fine-grained and can apply access controls per-request based on the URL and other + features of the request.
+If another domain is allowed by the policy, then that domain can potentially attack users of the + application. If a user is logged in to the application, and visits a domain allowed by the + policy, then any malicious content running on that domain can potentially retrieve content from + the application, and sometimes carry out actions within the security context of the logged in + user.
+Even if an allowed domain is not overtly malicious in itself, security vulnerabilities within + that domain could potentially be leveraged by an attacker to exploit the trust relationship and + attack the application that allows access. CORS policies on pages containing sensitive + information should be reviewed to determine whether it is appropriate for the application to + trust both the intentions and security posture of any domains granted access.
+Any inappropriate domains should be removed from the CORS policy.
+An HTML5 cross-origin resource sharing (CORS) policy controls whether and how content running on + other domains can perform two-way interaction with the domain that publishes the policy. The + policy is fine-grained and can apply access controls per-request based on the URL and other + features of the request.
+If another domain is allowed by the policy, then that domain can potentially attack users of the + application. If a user is logged in to the application, and visits a domain allowed by the + policy, then any malicious content running on that domain can potentially retrieve content from + the application, and sometimes carry out actions within the security context of the logged in + user.
+Even if an allowed domain is not overtly malicious in itself, security vulnerabilities within + that domain could potentially be leveraged by an attacker to exploit the trust relationship and + attack the application that allows access. CORS policies on pages containing sensitive + information should be reviewed to determine whether it is appropriate for the application to + trust both the intentions and security posture of any domains granted access.
+Any inappropriate domains should be removed from the CORS policy.
+An HTML5 cross-origin resource sharing (CORS) policy controls whether and how content running on + other domains can perform two-way interaction with the domain that publishes the policy. The + policy is fine-grained and can apply access controls per-request based on the URL and other + features of the request.
+If another domain is allowed by the policy, then that domain can potentially attack users of the + application. If a user is logged in to the application, and visits a domain allowed by the + policy, then any malicious content running on that domain can potentially retrieve content from + the application, and sometimes carry out actions within the security context of the logged in + user.
+Even if an allowed domain is not overtly malicious in itself, security vulnerabilities within + that domain could potentially be leveraged by an attacker to exploit the trust relationship and + attack the application that allows access. CORS policies on pages containing sensitive + information should be reviewed to determine whether it is appropriate for the application to + trust both the intentions and security posture of any domains granted access.
+Any inappropriate domains should be removed from the CORS policy.
+An HTML5 cross-origin resource sharing (CORS) policy controls whether and how content running on + other domains can perform two-way interaction with the domain that publishes the policy. The + policy is fine-grained and can apply access controls per-request based on the URL and other + features of the request.
+If another domain is allowed by the policy, then that domain can potentially attack users of the + application. If a user is logged in to the application, and visits a domain allowed by the + policy, then any malicious content running on that domain can potentially retrieve content from + the application, and sometimes carry out actions within the security context of the logged in + user.
+Even if an allowed domain is not overtly malicious in itself, security vulnerabilities within + that domain could potentially be leveraged by an attacker to exploit the trust relationship and + attack the application that allows access. CORS policies on pages containing sensitive + information should be reviewed to determine whether it is appropriate for the application to + trust both the intentions and security posture of any domains granted access.
+Any inappropriate domains should be removed from the CORS policy.
+An HTML5 cross-origin resource sharing (CORS) policy controls whether and how content running on + other domains can perform two-way interaction with the domain that publishes the policy. The + policy is fine-grained and can apply access controls per-request based on the URL and other + features of the request.
+If another domain is allowed by the policy, then that domain can potentially attack users of the + application. If a user is logged in to the application, and visits a domain allowed by the + policy, then any malicious content running on that domain can potentially retrieve content from + the application, and sometimes carry out actions within the security context of the logged in + user.
+Even if an allowed domain is not overtly malicious in itself, security vulnerabilities within + that domain could potentially be leveraged by an attacker to exploit the trust relationship and + attack the application that allows access. CORS policies on pages containing sensitive + information should be reviewed to determine whether it is appropriate for the application to + trust both the intentions and security posture of any domains granted access.
+Any inappropriate domains should be removed from the CORS policy.
+An HTML5 cross-origin resource sharing (CORS) policy controls whether and how content running on + other domains can perform two-way interaction with the domain that publishes the policy. The + policy is fine-grained and can apply access controls per-request based on the URL and other + features of the request.
++ Trusting arbitrary origins effectively disables the same-origin policy, allowing two-way + interaction by third-party web sites. Unless the response consists only of unprotected public + content, this policy is likely to present a security risk.
+If the site specifies the header Access-Control-Allow-Credentials: true, third-party sites may be + able to carry out privileged actions and retrieve sensitive information. Even if it does not, + attackers may be able to bypass any IP-based access controls by proxying through users' + browsers.
+Rather than using a wildcard or programmatically verifying supplied origins, use a whitelist of + trusted domains.
+An HTML5 cross-origin resource sharing (CORS) policy controls whether and how content running on + other domains can perform two-way interaction with the domain that publishes the policy. The + policy is fine-grained and can apply access controls per-request based on the URL and other + features of the request.
++ Trusting arbitrary origins effectively disables the same-origin policy, allowing two-way + interaction by third-party web sites. Unless the response consists only of unprotected public + content, this policy is likely to present a security risk.
+If the site specifies the header Access-Control-Allow-Credentials: true, third-party sites may be + able to carry out privileged actions and retrieve sensitive information. Even if it does not, + attackers may be able to bypass any IP-based access controls by proxying through users' + browsers.
+Rather than using a wildcard or programmatically verifying supplied origins, use a whitelist of + trusted domains.
+An HTML5 cross-origin resource sharing (CORS) policy controls whether and how content running on + other domains can perform two-way interaction with the domain that publishes the policy. The + policy is fine-grained and can apply access controls per-request based on the URL and other + features of the request.
++ Trusting arbitrary origins effectively disables the same-origin policy, allowing two-way + interaction by third-party web sites. Unless the response consists only of unprotected public + content, this policy is likely to present a security risk.
+If the site specifies the header Access-Control-Allow-Credentials: true, third-party sites may be + able to carry out privileged actions and retrieve sensitive information. Even if it does not, + attackers may be able to bypass any IP-based access controls by proxying through users' + browsers.
+Rather than using a wildcard or programmatically verifying supplied origins, use a whitelist of + trusted domains.
+An HTML5 cross-origin resource sharing (CORS) policy controls whether and how content running on + other domains can perform two-way interaction with the domain that publishes the policy. The + policy is fine-grained and can apply access controls per-request based on the URL and other + features of the request.
++ Trusting arbitrary origins effectively disables the same-origin policy, allowing two-way + interaction by third-party web sites. Unless the response consists only of unprotected public + content, this policy is likely to present a security risk.
+If the site specifies the header Access-Control-Allow-Credentials: true, third-party sites may be + able to carry out privileged actions and retrieve sensitive information. Even if it does not, + attackers may be able to bypass any IP-based access controls by proxying through users' + browsers.
+Rather than using a wildcard or programmatically verifying supplied origins, use a whitelist of + trusted domains.
+An HTML5 cross-origin resource sharing (CORS) policy controls whether and how content running on + other domains can perform two-way interaction with the domain that publishes the policy. The + policy is fine-grained and can apply access controls per-request based on the URL and other + features of the request.
++ Trusting arbitrary origins effectively disables the same-origin policy, allowing two-way + interaction by third-party web sites. Unless the response consists only of unprotected public + content, this policy is likely to present a security risk.
+If the site specifies the header Access-Control-Allow-Credentials: true, third-party sites may be + able to carry out privileged actions and retrieve sensitive information. Even if it does not, + attackers may be able to bypass any IP-based access controls by proxying through users' + browsers.
+Rather than using a wildcard or programmatically verifying supplied origins, use a whitelist of + trusted domains.
+An HTML5 cross-origin resource sharing (CORS) policy controls whether and how content running on + other domains can perform two-way interaction with the domain that publishes the policy. The + policy is fine-grained and can apply access controls per-request based on the URL and other + features of the request.
++ Trusting arbitrary origins effectively disables the same-origin policy, allowing two-way + interaction by third-party web sites. Unless the response consists only of unprotected public + content, this policy is likely to present a security risk.
+If the site specifies the header Access-Control-Allow-Credentials: true, third-party sites may be + able to carry out privileged actions and retrieve sensitive information. Even if it does not, + attackers may be able to bypass any IP-based access controls by proxying through users' + browsers.
+Rather than using a wildcard or programmatically verifying supplied origins, use a whitelist of + trusted domains.
+The file robots.txt is used to give instructions to web robots, such as search engine crawlers, + about locations within the web site that robots are allowed, or not allowed, to crawl and index. +
+The presence of the robots.txt does not in itself present any kind of security vulnerability. + However, it is often used to identify restricted or private areas of a site's contents. The + information in the file may therefore help an attacker to map out the site's contents, + especially if some of the locations identified are not linked from elsewhere in the site. If the + application relies on robots.txt to protect access to these areas, and does not enforce proper + access control over them, then this presents a serious vulnerability.
+The robots.txt file is not itself a security threat, and its correct use can represent good + practice for non-security reasons. You should not assume that all web robots will honor the + file's instructions. Rather, assume that attackers will pay close attention to any locations + identified in the file. Do not rely on robots.txt to provide any kind of protection over + unauthorized access.
+Unless directed otherwise, browsers may store a local cached copy of content received from web + servers. Some browsers, including Internet Explorer, cache content accessed via HTTPS. If + sensitive information in application responses is stored in the local cache, then this may be + retrieved by other users who have access to the same computer at a future time.
+Applications should return caching directives instructing browsers not to store local copies of + any sensitive data. Often, this can be achieved by configuring the web server to prevent caching + for relevant paths within the web root. Alternatively, most web development platforms allow you + to control the server's caching directives from within individual scripts. Ideally, the web + server should return the following HTTP headers in all responses containing sensitive content: +
+DOM-based vulnerabilities arise when a client-side script reads data from a controllable part of + the DOM (for example, the URL) and processes this data in an unsafe way.
+DOM data manipulation arises when a script writes controllable data to a field within the DOM + that is used within the visible UI or client-side application logic. An attacker may be able to + use the vulnerability to construct a URL that, if visited by another application user, will + modify the appearance or behavior of the client-side UI. An attacker may be able to leverage + this to perform virtual defacement of the application, or possibly to induce the user to perform + unintended actions.
+ +Burp Suite automatically identifies this issue using dynamic and static code analysis. Static + analysis can lead to false positives that are not actually exploitable. If Burp Scanner has not + provided any evidence resulting from dynamic analysis, you should review the relevant code and + execution paths to determine whether this vulnerability is indeed present, or whether + mitigations are in place that would prevent exploitation.
+The most effective way to avoid DOM-based DOM data manipulation vulnerabilities is not to + dynamically write to DOM data fields any data that originated from any untrusted source. If the + desired functionality of the application means that this behavior is unavoidable, then defenses + must be implemented within the client-side code to prevent malicious data from being stored. In + general, this is best achieved by using a whitelist of permitted values.
++ Data is read from location.pathname and passed to history.replaceState. +
+The following value was injected into the source:
+///fe/m3/m-login//elcs7kifmd%27%22%60'%22/elcs7kifmd/%3E%3Celcs7kifmd//%3Egkr4l404dv&+
The previous value reached the sink:
+https://instance.example.com/fe///fe/m3/m-login//elcs7kifmd%27%22%60'%22/elcs7kifmd/%3E%3Celcs7kifmd//%3Egkr4l404dv&?g49p4yw5cy=g49p4yw5cy%27%22`'"/g49p4yw5cy/><g49p4yw5cy/\>zgrotg0z2s&#hj8js9yzmu=hj8js9yzmu%27%22`'"/hj8js9yzmu/><hj8js9yzmu/\>ea3izlhk1m&+
The stack trace at source was:
+at Object._0x165f99 [as proxiedGetterCallback] (<anonymous>:1:557377) +at get pathname (<anonymous>:1:249642) +at createCurrentLocation (https://instance.example.com/fe/js/cv-script.js:218038:13) +at useHistoryStateNavigation (https://instance.example.com/fe/js/cv-script.js:218149:16) +at createWebHistory (https://instance.example.com/fe/js/cv-script.js:218239:31) +at ./src/router/index.ts (https://instance.example.com/fe/js/app.js:166430:79) +at __webpack_require__ (https://instance.example.com/fe/js/app.js:854:30) +at fn (https://instance.example.com/fe/js/app.js:151:20) +at ./src/apps/m3/services/apiClient/apiClient.ts (https://instance.example.com/fe/js/app.js:142756:65) +at __webpack_require__ (https://instance.example.com/fe/js/app.js:854:30) +at fn (https://instance.example.com/fe/js/app.js:151:20) +at ./src/apps/m3/services/m.login.service.ts (https://instance.example.com/fe/js/app.js:144223:102) +at __webpack_require__ (https://instance.example.com/fe/js/app.js:854:30) +at fn (https://instance.example.com/fe/js/app.js:151:20) +at ./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/ts-loader/index.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader-v16/dist/index.js?!./src/App.vue?vue&type=script&lang=ts (https://instance.example.com/fe/js/app.js:1121:105) +at __webpack_require__ (https://instance.example.com/fe/js/app.js:854:30) +at fn (https://instance.example.com/fe/js/app.js:151:20) +at ./src/App.vue?vue&type=script&lang=ts (https://instance.example.com/fe/js/app.js:106648:313) +at __webpack_require__ (https://instance.example.com/fe/js/app.js:854:30) +at fn (https://instance.example.com/fe/js/app.js:151:20) +at ./src/App.vue (https://instance.example.com/fe/js/app.js:106604:90) +at __webpack_require__ (https://instance.example.com/fe/js/app.js:854:30) +at fn (https://instance.example.com/fe/js/app.js:151:20) +at ./src/main.ts (https://instance.example.com/fe/js/app.js:166283:66) +at __webpack_require__ (https://instance.example.com/fe/js/app.js:854:30) +at fn (https://instance.example.com/fe/js/app.js:151:20) +at 1 (https://instance.example.com/fe/js/app.js:172609:18) +at __webpack_require__ (https://instance.example.com/fe/js/app.js:854:30) +at checkDeferredModules (https://instance.example.com/fe/js/app.js:46:23) +at https://instance.example.com/fe/js/app.js:994:18+
The stack trace at the sink was:
+at Object.dXSzc (<anonymous>:1:107608) +at Object.skeuk (<anonymous>:1:548616) +at History.replaceState (<anonymous>:1:548864) +at changeLocation (https://instance.example.com/fe/js/cv-script.js:218185:60) +at useHistoryStateNavigation (https://instance.example.com/fe/js/cv-script.js:218154:9) +at createWebHistory (https://instance.example.com/fe/js/cv-script.js:218239:31) +at ./src/router/index.ts (https://instance.example.com/fe/js/app.js:166430:79) +at __webpack_require__ (https://instance.example.com/fe/js/app.js:854:30) +at fn (https://instance.example.com/fe/js/app.js:151:20) +at ./src/apps/m3/services/apiClient/apiClient.ts (https://instance.example.com/fe/js/app.js:142756:65) +at __webpack_require__ (https://instance.example.com/fe/js/app.js:854:30) +at fn (https://instance.example.com/fe/js/app.js:151:20) +at ./src/apps/m3/services/m.login.service.ts (https://instance.example.com/fe/js/app.js:144223:102) +at __webpack_require__ (https://instance.example.com/fe/js/app.js:854:30) +at fn (https://instance.example.com/fe/js/app.js:151:20) +at ./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/ts-loader/index.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader-v16/dist/index.js?!./src/App.vue?vue&type=script&lang=ts (https://instance.example.com/fe/js/app.js:1121:105) +at __webpack_require__ (https://instance.example.com/fe/js/app.js:854:30) +at fn (https://instance.example.com/fe/js/app.js:151:20) +at ./src/App.vue?vue&type=script&lang=ts (https://instance.example.com/fe/js/app.js:106648:313) +at __webpack_require__ (https://instance.example.com/fe/js/app.js:854:30) +at fn (https://instance.example.com/fe/js/app.js:151:20) +at ./src/App.vue (https://instance.example.com/fe/js/app.js:106604:90) +at __webpack_require__ (https://instance.example.com/fe/js/app.js:854:30) +at fn (https://instance.example.com/fe/js/app.js:151:20) +at ./src/main.ts (https://instance.example.com/fe/js/app.js:166283:66) +at __webpack_require__ (https://instance.example.com/fe/js/app.js:854:30) +at fn (https://instance.example.com/fe/js/app.js:151:20) +at 1 (https://instance.example.com/fe/js/app.js:172609:18) +at __webpack_require__ (https://instance.example.com/fe/js/app.js:854:30) +at checkDeferredModules (https://instance.example.com/fe/js/app.js:46:23)+
DOM-based vulnerabilities arise when a client-side script reads data from a controllable part of + the DOM (for example, the URL) and processes this data in an unsafe way.
+DOM data manipulation arises when a script writes controllable data to a field within the DOM + that is used within the visible UI or client-side application logic. An attacker may be able to + use the vulnerability to construct a URL that, if visited by another application user, will + modify the appearance or behavior of the client-side UI. An attacker may be able to leverage + this to perform virtual defacement of the application, or possibly to induce the user to perform + unintended actions.
+ +Burp Suite automatically identifies this issue using dynamic and static code analysis. Static + analysis can lead to false positives that are not actually exploitable. If Burp Scanner has not + provided any evidence resulting from dynamic analysis, you should review the relevant code and + execution paths to determine whether this vulnerability is indeed present, or whether + mitigations are in place that would prevent exploitation.
+The most effective way to avoid DOM-based DOM data manipulation vulnerabilities is not to + dynamically write to DOM data fields any data that originated from any untrusted source. If the + desired functionality of the application means that this behavior is unavoidable, then defenses + must be implemented within the client-side code to prevent malicious data from being stored. In + general, this is best achieved by using a whitelist of permitted values.
++ Data is read from location.search and passed to history.replaceState. +
+The following value was injected into the source:
+?g49p4yw5cy=g49p4yw5cy%27%22`'"/g49p4yw5cy/><g49p4yw5cy/\>zgrotg0z2s&+
The previous value reached the sink:
+https://instance.example.com/fe///fe/m3/m-login//elcs7kifmd%27%22%60'%22/elcs7kifmd/%3E%3Celcs7kifmd//%3Egkr4l404dv&?g49p4yw5cy=g49p4yw5cy%27%22`'"/g49p4yw5cy/><g49p4yw5cy/\>zgrotg0z2s&#hj8js9yzmu=hj8js9yzmu%27%22`'"/hj8js9yzmu/><hj8js9yzmu/\>ea3izlhk1m&+
The stack trace at source was:
+at Object._0x165f99 [as proxiedGetterCallback] (<anonymous>:1:557377) +at get search (<anonymous>:1:248279) +at createCurrentLocation (https://instance.example.com/fe/js/cv-script.js:218038:23) +at useHistoryStateNavigation (https://instance.example.com/fe/js/cv-script.js:218149:16) +at createWebHistory (https://instance.example.com/fe/js/cv-script.js:218239:31) +at ./src/router/index.ts (https://instance.example.com/fe/js/app.js:166430:79) +at __webpack_require__ (https://instance.example.com/fe/js/app.js:854:30) +at fn (https://instance.example.com/fe/js/app.js:151:20) +at ./src/apps/m3/services/apiClient/apiClient.ts (https://instance.example.com/fe/js/app.js:142756:65) +at __webpack_require__ (https://instance.example.com/fe/js/app.js:854:30) +at fn (https://instance.example.com/fe/js/app.js:151:20) +at ./src/apps/m3/services/m.login.service.ts (https://instance.example.com/fe/js/app.js:144223:102) +at __webpack_require__ (https://instance.example.com/fe/js/app.js:854:30) +at fn (https://instance.example.com/fe/js/app.js:151:20) +at ./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/ts-loader/index.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader-v16/dist/index.js?!./src/App.vue?vue&type=script&lang=ts (https://instance.example.com/fe/js/app.js:1121:105) +at __webpack_require__ (https://instance.example.com/fe/js/app.js:854:30) +at fn (https://instance.example.com/fe/js/app.js:151:20) +at ./src/App.vue?vue&type=script&lang=ts (https://instance.example.com/fe/js/app.js:106648:313) +at __webpack_require__ (https://instance.example.com/fe/js/app.js:854:30) +at fn (https://instance.example.com/fe/js/app.js:151:20) +at ./src/App.vue (https://instance.example.com/fe/js/app.js:106604:90) +at __webpack_require__ (https://instance.example.com/fe/js/app.js:854:30) +at fn (https://instance.example.com/fe/js/app.js:151:20) +at ./src/main.ts (https://instance.example.com/fe/js/app.js:166283:66) +at __webpack_require__ (https://instance.example.com/fe/js/app.js:854:30) +at fn (https://instance.example.com/fe/js/app.js:151:20) +at 1 (https://instance.example.com/fe/js/app.js:172609:18) +at __webpack_require__ (https://instance.example.com/fe/js/app.js:854:30) +at checkDeferredModules (https://instance.example.com/fe/js/app.js:46:23) +at https://instance.example.com/fe/js/app.js:994:18+
The stack trace at the sink was:
+at Object.dXSzc (<anonymous>:1:107608) +at Object.skeuk (<anonymous>:1:548616) +at History.replaceState (<anonymous>:1:548864) +at changeLocation (https://instance.example.com/fe/js/cv-script.js:218185:60) +at useHistoryStateNavigation (https://instance.example.com/fe/js/cv-script.js:218154:9) +at createWebHistory (https://instance.example.com/fe/js/cv-script.js:218239:31) +at ./src/router/index.ts (https://instance.example.com/fe/js/app.js:166430:79) +at __webpack_require__ (https://instance.example.com/fe/js/app.js:854:30) +at fn (https://instance.example.com/fe/js/app.js:151:20) +at ./src/apps/m3/services/apiClient/apiClient.ts (https://instance.example.com/fe/js/app.js:142756:65) +at __webpack_require__ (https://instance.example.com/fe/js/app.js:854:30) +at fn (https://instance.example.com/fe/js/app.js:151:20) +at ./src/apps/m3/services/m.login.service.ts (https://instance.example.com/fe/js/app.js:144223:102) +at __webpack_require__ (https://instance.example.com/fe/js/app.js:854:30) +at fn (https://instance.example.com/fe/js/app.js:151:20) +at ./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/ts-loader/index.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader-v16/dist/index.js?!./src/App.vue?vue&type=script&lang=ts (https://instance.example.com/fe/js/app.js:1121:105) +at __webpack_require__ (https://instance.example.com/fe/js/app.js:854:30) +at fn (https://instance.example.com/fe/js/app.js:151:20) +at ./src/App.vue?vue&type=script&lang=ts (https://instance.example.com/fe/js/app.js:106648:313) +at __webpack_require__ (https://instance.example.com/fe/js/app.js:854:30) +at fn (https://instance.example.com/fe/js/app.js:151:20) +at ./src/App.vue (https://instance.example.com/fe/js/app.js:106604:90) +at __webpack_require__ (https://instance.example.com/fe/js/app.js:854:30) +at fn (https://instance.example.com/fe/js/app.js:151:20) +at ./src/main.ts (https://instance.example.com/fe/js/app.js:166283:66) +at __webpack_require__ (https://instance.example.com/fe/js/app.js:854:30) +at fn (https://instance.example.com/fe/js/app.js:151:20) +at 1 (https://instance.example.com/fe/js/app.js:172609:18) +at __webpack_require__ (https://instance.example.com/fe/js/app.js:854:30) +at checkDeferredModules (https://instance.example.com/fe/js/app.js:46:23)+
DOM-based vulnerabilities arise when a client-side script reads data from a controllable part of + the DOM (for example, the URL) and processes this data in an unsafe way.
+DOM data manipulation arises when a script writes controllable data to a field within the DOM + that is used within the visible UI or client-side application logic. An attacker may be able to + use the vulnerability to construct a URL that, if visited by another application user, will + modify the appearance or behavior of the client-side UI. An attacker may be able to leverage + this to perform virtual defacement of the application, or possibly to induce the user to perform + unintended actions.
+ +Burp Suite automatically identifies this issue using dynamic and static code analysis. Static + analysis can lead to false positives that are not actually exploitable. If Burp Scanner has not + provided any evidence resulting from dynamic analysis, you should review the relevant code and + execution paths to determine whether this vulnerability is indeed present, or whether + mitigations are in place that would prevent exploitation.
+The most effective way to avoid DOM-based DOM data manipulation vulnerabilities is not to + dynamically write to DOM data fields any data that originated from any untrusted source. If the + desired functionality of the application means that this behavior is unavoidable, then defenses + must be implemented within the client-side code to prevent malicious data from being stored. In + general, this is best achieved by using a whitelist of permitted values.
++ Data is read from location.hash and passed to history.replaceState. +
+The following value was injected into the source:
+#hj8js9yzmu=hj8js9yzmu%27%22`'"/hj8js9yzmu/><hj8js9yzmu/\>ea3izlhk1m&+
The previous value reached the sink:
+https://instance.example.com/fe///fe/m3/m-login//elcs7kifmd%27%22%60'%22/elcs7kifmd/%3E%3Celcs7kifmd//%3Egkr4l404dv&?g49p4yw5cy=g49p4yw5cy%27%22`'"/g49p4yw5cy/><g49p4yw5cy/\>zgrotg0z2s&#hj8js9yzmu=hj8js9yzmu%27%22`'"/hj8js9yzmu/><hj8js9yzmu/\>ea3izlhk1m&+
The stack trace at source was:
+at Object._0x165f99 [as proxiedGetterCallback] (<anonymous>:1:557377) +at get hash (<anonymous>:1:249429) +at createCurrentLocation (https://instance.example.com/fe/js/cv-script.js:218038:31) +at useHistoryStateNavigation (https://instance.example.com/fe/js/cv-script.js:218149:16) +at createWebHistory (https://instance.example.com/fe/js/cv-script.js:218239:31) +at ./src/router/index.ts (https://instance.example.com/fe/js/app.js:166430:79) +at __webpack_require__ (https://instance.example.com/fe/js/app.js:854:30) +at fn (https://instance.example.com/fe/js/app.js:151:20) +at ./src/apps/m3/services/apiClient/apiClient.ts (https://instance.example.com/fe/js/app.js:142756:65) +at __webpack_require__ (https://instance.example.com/fe/js/app.js:854:30) +at fn (https://instance.example.com/fe/js/app.js:151:20) +at ./src/apps/m3/services/m.login.service.ts (https://instance.example.com/fe/js/app.js:144223:102) +at __webpack_require__ (https://instance.example.com/fe/js/app.js:854:30) +at fn (https://instance.example.com/fe/js/app.js:151:20) +at ./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/ts-loader/index.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader-v16/dist/index.js?!./src/App.vue?vue&type=script&lang=ts (https://instance.example.com/fe/js/app.js:1121:105) +at __webpack_require__ (https://instance.example.com/fe/js/app.js:854:30) +at fn (https://instance.example.com/fe/js/app.js:151:20) +at ./src/App.vue?vue&type=script&lang=ts (https://instance.example.com/fe/js/app.js:106648:313) +at __webpack_require__ (https://instance.example.com/fe/js/app.js:854:30) +at fn (https://instance.example.com/fe/js/app.js:151:20) +at ./src/App.vue (https://instance.example.com/fe/js/app.js:106604:90) +at __webpack_require__ (https://instance.example.com/fe/js/app.js:854:30) +at fn (https://instance.example.com/fe/js/app.js:151:20) +at ./src/main.ts (https://instance.example.com/fe/js/app.js:166283:66) +at __webpack_require__ (https://instance.example.com/fe/js/app.js:854:30) +at fn (https://instance.example.com/fe/js/app.js:151:20) +at 1 (https://instance.example.com/fe/js/app.js:172609:18) +at __webpack_require__ (https://instance.example.com/fe/js/app.js:854:30) +at checkDeferredModules (https://instance.example.com/fe/js/app.js:46:23) +at https://instance.example.com/fe/js/app.js:994:18+
The stack trace at the sink was:
+at Object.dXSzc (<anonymous>:1:107608) +at Object.skeuk (<anonymous>:1:548616) +at History.replaceState (<anonymous>:1:548864) +at changeLocation (https://instance.example.com/fe/js/cv-script.js:218185:60) +at useHistoryStateNavigation (https://instance.example.com/fe/js/cv-script.js:218154:9) +at createWebHistory (https://instance.example.com/fe/js/cv-script.js:218239:31) +at ./src/router/index.ts (https://instance.example.com/fe/js/app.js:166430:79) +at __webpack_require__ (https://instance.example.com/fe/js/app.js:854:30) +at fn (https://instance.example.com/fe/js/app.js:151:20) +at ./src/apps/m3/services/apiClient/apiClient.ts (https://instance.example.com/fe/js/app.js:142756:65) +at __webpack_require__ (https://instance.example.com/fe/js/app.js:854:30) +at fn (https://instance.example.com/fe/js/app.js:151:20) +at ./src/apps/m3/services/m.login.service.ts (https://instance.example.com/fe/js/app.js:144223:102) +at __webpack_require__ (https://instance.example.com/fe/js/app.js:854:30) +at fn (https://instance.example.com/fe/js/app.js:151:20) +at ./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/ts-loader/index.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader-v16/dist/index.js?!./src/App.vue?vue&type=script&lang=ts (https://instance.example.com/fe/js/app.js:1121:105) +at __webpack_require__ (https://instance.example.com/fe/js/app.js:854:30) +at fn (https://instance.example.com/fe/js/app.js:151:20) +at ./src/App.vue?vue&type=script&lang=ts (https://instance.example.com/fe/js/app.js:106648:313) +at __webpack_require__ (https://instance.example.com/fe/js/app.js:854:30) +at fn (https://instance.example.com/fe/js/app.js:151:20) +at ./src/App.vue (https://instance.example.com/fe/js/app.js:106604:90) +at __webpack_require__ (https://instance.example.com/fe/js/app.js:854:30) +at fn (https://instance.example.com/fe/js/app.js:151:20) +at ./src/main.ts (https://instance.example.com/fe/js/app.js:166283:66) +at __webpack_require__ (https://instance.example.com/fe/js/app.js:854:30) +at fn (https://instance.example.com/fe/js/app.js:151:20) +at 1 (https://instance.example.com/fe/js/app.js:172609:18) +at __webpack_require__ (https://instance.example.com/fe/js/app.js:854:30) +at checkDeferredModules (https://instance.example.com/fe/js/app.js:46:23)+
DOM-based vulnerabilities arise when a client-side script reads data from a controllable part of + the DOM (for example, the URL) and processes this data in an unsafe way.
+DOM data manipulation arises when a script writes controllable data to a field within the DOM + that is used within the visible UI or client-side application logic. An attacker may be able to + use the vulnerability to construct a URL that, if visited by another application user, will + modify the appearance or behavior of the client-side UI. An attacker may be able to leverage + this to perform virtual defacement of the application, or possibly to induce the user to perform + unintended actions.
+ +Burp Suite automatically identifies this issue using dynamic and static code analysis. Static + analysis can lead to false positives that are not actually exploitable. If Burp Scanner has not + provided any evidence resulting from dynamic analysis, you should review the relevant code and + execution paths to determine whether this vulnerability is indeed present, or whether + mitigations are in place that would prevent exploitation.
+The most effective way to avoid DOM-based DOM data manipulation vulnerabilities is not to + dynamically write to DOM data fields any data that originated from any untrusted source. If the + desired functionality of the application means that this behavior is unavoidable, then defenses + must be implemented within the client-side code to prevent malicious data from being stored. In + general, this is best achieved by using a whitelist of permitted values.
++ Data is read from location.pathname and passed to history.replaceState. +
+The following value was injected into the source:
+///fe/m3/m-login//elcs7kifmd%27%22%60'%22/elcs7kifmd/%3E%3Celcs7kifmd//%3Egkr4l404dv&+
The previous value reached the sink:
+https://instance.example.com/fe///fe/m3/m-login//elcs7kifmd%27%22%60'%22/elcs7kifmd/%3E%3Celcs7kifmd//%3Egkr4l404dv&?g49p4yw5cy=g49p4yw5cy%27%22`'"/g49p4yw5cy/><g49p4yw5cy/\>zgrotg0z2s&#hj8js9yzmu=hj8js9yzmu%27%22`'"/hj8js9yzmu/><hj8js9yzmu/\>ea3izlhk1m&+
The stack trace at source was:
+at Object._0x165f99 [as proxiedGetterCallback] (<anonymous>:1:557377) +at get pathname (<anonymous>:1:249642) +at createCurrentLocation (https://instance.example.com/fe/js/cv-script.js:218038:13) +at useHistoryStateNavigation (https://instance.example.com/fe/js/cv-script.js:218149:16) +at createWebHistory (https://instance.example.com/fe/js/cv-script.js:218239:31) +at ./src/router/index.ts (https://instance.example.com/fe/js/app.js:166430:79) +at __webpack_require__ (https://instance.example.com/fe/js/app.js:854:30) +at fn (https://instance.example.com/fe/js/app.js:151:20) +at ./src/apps/m3/services/apiClient/apiClient.ts (https://instance.example.com/fe/js/app.js:142756:65) +at __webpack_require__ (https://instance.example.com/fe/js/app.js:854:30) +at fn (https://instance.example.com/fe/js/app.js:151:20) +at ./src/apps/m3/services/m.login.service.ts (https://instance.example.com/fe/js/app.js:144223:102) +at __webpack_require__ (https://instance.example.com/fe/js/app.js:854:30) +at fn (https://instance.example.com/fe/js/app.js:151:20) +at ./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/ts-loader/index.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader-v16/dist/index.js?!./src/App.vue?vue&type=script&lang=ts (https://instance.example.com/fe/js/app.js:1121:105) +at __webpack_require__ (https://instance.example.com/fe/js/app.js:854:30) +at fn (https://instance.example.com/fe/js/app.js:151:20) +at ./src/App.vue?vue&type=script&lang=ts (https://instance.example.com/fe/js/app.js:106648:313) +at __webpack_require__ (https://instance.example.com/fe/js/app.js:854:30) +at fn (https://instance.example.com/fe/js/app.js:151:20) +at ./src/App.vue (https://instance.example.com/fe/js/app.js:106604:90) +at __webpack_require__ (https://instance.example.com/fe/js/app.js:854:30) +at fn (https://instance.example.com/fe/js/app.js:151:20) +at ./src/main.ts (https://instance.example.com/fe/js/app.js:166283:66) +at __webpack_require__ (https://instance.example.com/fe/js/app.js:854:30) +at fn (https://instance.example.com/fe/js/app.js:151:20) +at 1 (https://instance.example.com/fe/js/app.js:172609:18) +at __webpack_require__ (https://instance.example.com/fe/js/app.js:854:30) +at checkDeferredModules (https://instance.example.com/fe/js/app.js:46:23) +at https://instance.example.com/fe/js/app.js:994:18+
The stack trace at the sink was:
+at Object.dXSzc (<anonymous>:1:107608) +at Object.skeuk (<anonymous>:1:548616) +at History.replaceState (<anonymous>:1:548864) +at changeLocation (https://instance.example.com/fe/js/cv-script.js:218185:60) +at Object.replace (https://instance.example.com/fe/js/cv-script.js:218201:9) +at finalizeNavigation (https://instance.example.com/fe/js/cv-script.js:220844:31) +at https://instance.example.com/fe/js/cv-script.js:220724:27+
This was triggered by a loadend event.
+DOM-based vulnerabilities arise when a client-side script reads data from a controllable part of + the DOM (for example, the URL) and processes this data in an unsafe way.
+DOM data manipulation arises when a script writes controllable data to a field within the DOM + that is used within the visible UI or client-side application logic. An attacker may be able to + use the vulnerability to construct a URL that, if visited by another application user, will + modify the appearance or behavior of the client-side UI. An attacker may be able to leverage + this to perform virtual defacement of the application, or possibly to induce the user to perform + unintended actions.
+ +Burp Suite automatically identifies this issue using dynamic and static code analysis. Static + analysis can lead to false positives that are not actually exploitable. If Burp Scanner has not + provided any evidence resulting from dynamic analysis, you should review the relevant code and + execution paths to determine whether this vulnerability is indeed present, or whether + mitigations are in place that would prevent exploitation.
+The most effective way to avoid DOM-based DOM data manipulation vulnerabilities is not to + dynamically write to DOM data fields any data that originated from any untrusted source. If the + desired functionality of the application means that this behavior is unavoidable, then defenses + must be implemented within the client-side code to prevent malicious data from being stored. In + general, this is best achieved by using a whitelist of permitted values.
++ Data is read from location.search and passed to history.replaceState. +
+The following value was injected into the source:
+?g49p4yw5cy=g49p4yw5cy%27%22`'"/g49p4yw5cy/><g49p4yw5cy/\>zgrotg0z2s&+
The previous value reached the sink:
+https://instance.example.com/fe///fe/m3/m-login//elcs7kifmd%27%22%60'%22/elcs7kifmd/%3E%3Celcs7kifmd//%3Egkr4l404dv&?g49p4yw5cy=g49p4yw5cy%27%22`'"/g49p4yw5cy/><g49p4yw5cy/\>zgrotg0z2s&#hj8js9yzmu=hj8js9yzmu%27%22`'"/hj8js9yzmu/><hj8js9yzmu/\>ea3izlhk1m&+
The stack trace at source was:
+at Object._0x165f99 [as proxiedGetterCallback] (<anonymous>:1:557377) +at get search (<anonymous>:1:248279) +at createCurrentLocation (https://instance.example.com/fe/js/cv-script.js:218038:23) +at useHistoryStateNavigation (https://instance.example.com/fe/js/cv-script.js:218149:16) +at createWebHistory (https://instance.example.com/fe/js/cv-script.js:218239:31) +at ./src/router/index.ts (https://instance.example.com/fe/js/app.js:166430:79) +at __webpack_require__ (https://instance.example.com/fe/js/app.js:854:30) +at fn (https://instance.example.com/fe/js/app.js:151:20) +at ./src/apps/m3/services/apiClient/apiClient.ts (https://instance.example.com/fe/js/app.js:142756:65) +at __webpack_require__ (https://instance.example.com/fe/js/app.js:854:30) +at fn (https://instance.example.com/fe/js/app.js:151:20) +at ./src/apps/m3/services/m.login.service.ts (https://instance.example.com/fe/js/app.js:144223:102) +at __webpack_require__ (https://instance.example.com/fe/js/app.js:854:30) +at fn (https://instance.example.com/fe/js/app.js:151:20) +at ./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/ts-loader/index.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader-v16/dist/index.js?!./src/App.vue?vue&type=script&lang=ts (https://instance.example.com/fe/js/app.js:1121:105) +at __webpack_require__ (https://instance.example.com/fe/js/app.js:854:30) +at fn (https://instance.example.com/fe/js/app.js:151:20) +at ./src/App.vue?vue&type=script&lang=ts (https://instance.example.com/fe/js/app.js:106648:313) +at __webpack_require__ (https://instance.example.com/fe/js/app.js:854:30) +at fn (https://instance.example.com/fe/js/app.js:151:20) +at ./src/App.vue (https://instance.example.com/fe/js/app.js:106604:90) +at __webpack_require__ (https://instance.example.com/fe/js/app.js:854:30) +at fn (https://instance.example.com/fe/js/app.js:151:20) +at ./src/main.ts (https://instance.example.com/fe/js/app.js:166283:66) +at __webpack_require__ (https://instance.example.com/fe/js/app.js:854:30) +at fn (https://instance.example.com/fe/js/app.js:151:20) +at 1 (https://instance.example.com/fe/js/app.js:172609:18) +at __webpack_require__ (https://instance.example.com/fe/js/app.js:854:30) +at checkDeferredModules (https://instance.example.com/fe/js/app.js:46:23) +at https://instance.example.com/fe/js/app.js:994:18+
The stack trace at the sink was:
+at Object.dXSzc (<anonymous>:1:107608) +at Object.skeuk (<anonymous>:1:548616) +at History.replaceState (<anonymous>:1:548864) +at changeLocation (https://instance.example.com/fe/js/cv-script.js:218185:60) +at Object.replace (https://instance.example.com/fe/js/cv-script.js:218201:9) +at finalizeNavigation (https://instance.example.com/fe/js/cv-script.js:220844:31) +at https://instance.example.com/fe/js/cv-script.js:220724:27+
This was triggered by a loadend event.
+DOM-based vulnerabilities arise when a client-side script reads data from a controllable part of + the DOM (for example, the URL) and processes this data in an unsafe way.
+DOM data manipulation arises when a script writes controllable data to a field within the DOM + that is used within the visible UI or client-side application logic. An attacker may be able to + use the vulnerability to construct a URL that, if visited by another application user, will + modify the appearance or behavior of the client-side UI. An attacker may be able to leverage + this to perform virtual defacement of the application, or possibly to induce the user to perform + unintended actions.
+ +Burp Suite automatically identifies this issue using dynamic and static code analysis. Static + analysis can lead to false positives that are not actually exploitable. If Burp Scanner has not + provided any evidence resulting from dynamic analysis, you should review the relevant code and + execution paths to determine whether this vulnerability is indeed present, or whether + mitigations are in place that would prevent exploitation.
+The most effective way to avoid DOM-based DOM data manipulation vulnerabilities is not to + dynamically write to DOM data fields any data that originated from any untrusted source. If the + desired functionality of the application means that this behavior is unavoidable, then defenses + must be implemented within the client-side code to prevent malicious data from being stored. In + general, this is best achieved by using a whitelist of permitted values.
++ Data is read from location.hash and passed to history.replaceState. +
+The following value was injected into the source:
+#hj8js9yzmu=hj8js9yzmu%27%22`'"/hj8js9yzmu/><hj8js9yzmu/\>ea3izlhk1m&+
The previous value reached the sink:
+https://instance.example.com/fe///fe/m3/m-login//elcs7kifmd%27%22%60'%22/elcs7kifmd/%3E%3Celcs7kifmd//%3Egkr4l404dv&?g49p4yw5cy=g49p4yw5cy%27%22`'"/g49p4yw5cy/><g49p4yw5cy/\>zgrotg0z2s&#hj8js9yzmu=hj8js9yzmu%27%22`'"/hj8js9yzmu/><hj8js9yzmu/\>ea3izlhk1m&+
The stack trace at source was:
+at Object._0x165f99 [as proxiedGetterCallback] (<anonymous>:1:557377) +at get hash (<anonymous>:1:249429) +at createCurrentLocation (https://instance.example.com/fe/js/cv-script.js:218038:31) +at useHistoryStateNavigation (https://instance.example.com/fe/js/cv-script.js:218149:16) +at createWebHistory (https://instance.example.com/fe/js/cv-script.js:218239:31) +at ./src/router/index.ts (https://instance.example.com/fe/js/app.js:166430:79) +at __webpack_require__ (https://instance.example.com/fe/js/app.js:854:30) +at fn (https://instance.example.com/fe/js/app.js:151:20) +at ./src/apps/m3/services/apiClient/apiClient.ts (https://instance.example.com/fe/js/app.js:142756:65) +at __webpack_require__ (https://instance.example.com/fe/js/app.js:854:30) +at fn (https://instance.example.com/fe/js/app.js:151:20) +at ./src/apps/m3/services/m.login.service.ts (https://instance.example.com/fe/js/app.js:144223:102) +at __webpack_require__ (https://instance.example.com/fe/js/app.js:854:30) +at fn (https://instance.example.com/fe/js/app.js:151:20) +at ./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/ts-loader/index.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader-v16/dist/index.js?!./src/App.vue?vue&type=script&lang=ts (https://instance.example.com/fe/js/app.js:1121:105) +at __webpack_require__ (https://instance.example.com/fe/js/app.js:854:30) +at fn (https://instance.example.com/fe/js/app.js:151:20) +at ./src/App.vue?vue&type=script&lang=ts (https://instance.example.com/fe/js/app.js:106648:313) +at __webpack_require__ (https://instance.example.com/fe/js/app.js:854:30) +at fn (https://instance.example.com/fe/js/app.js:151:20) +at ./src/App.vue (https://instance.example.com/fe/js/app.js:106604:90) +at __webpack_require__ (https://instance.example.com/fe/js/app.js:854:30) +at fn (https://instance.example.com/fe/js/app.js:151:20) +at ./src/main.ts (https://instance.example.com/fe/js/app.js:166283:66) +at __webpack_require__ (https://instance.example.com/fe/js/app.js:854:30) +at fn (https://instance.example.com/fe/js/app.js:151:20) +at 1 (https://instance.example.com/fe/js/app.js:172609:18) +at __webpack_require__ (https://instance.example.com/fe/js/app.js:854:30) +at checkDeferredModules (https://instance.example.com/fe/js/app.js:46:23) +at https://instance.example.com/fe/js/app.js:994:18+
The stack trace at the sink was:
+at Object.dXSzc (<anonymous>:1:107608) +at Object.skeuk (<anonymous>:1:548616) +at History.replaceState (<anonymous>:1:548864) +at changeLocation (https://instance.example.com/fe/js/cv-script.js:218185:60) +at Object.replace (https://instance.example.com/fe/js/cv-script.js:218201:9) +at finalizeNavigation (https://instance.example.com/fe/js/cv-script.js:220844:31) +at https://instance.example.com/fe/js/cv-script.js:220724:27+
This was triggered by a loadend event.
+Reflection of input arises when data is copied from a request and echoed into the application's + immediate response.
+Input being returned in application responses is not a vulnerability in its own right. However, + it is a prerequisite for many client-side vulnerabilities, including cross-site scripting, open + redirection, content spoofing, and response header injection. Additionally, some server-side + vulnerabilities such as SQL injection are often easier to identify and exploit when input is + returned in responses. In applications where input retrieval is rare and the environment is + resistant to automated testing (for example, due to a web application firewall), it might be + worth subjecting instances of it to focused manual testing.
+Reflection of input arises when data is copied from a request and echoed into the application's + immediate response.
+Input being returned in application responses is not a vulnerability in its own right. However, + it is a prerequisite for many client-side vulnerabilities, including cross-site scripting, open + redirection, content spoofing, and response header injection. Additionally, some server-side + vulnerabilities such as SQL injection are often easier to identify and exploit when input is + returned in responses. In applications where input retrieval is rare and the environment is + resistant to automated testing (for example, due to a web application firewall), it might be + worth subjecting instances of it to focused manual testing.
+