VYPR
Moderate severityNVD Advisory· Published Nov 8, 2023· Updated Sep 4, 2024

Ethyca Fides HTML Injection Vulnerability in HTML-Formatted DSR Packages

CVE-2023-47114

Description

Fides is an open-source privacy engineering platform for managing the fulfillment of data privacy requests in your runtime environment, and the enforcement of privacy regulations in your code. The Fides web application allows data subject users to request access to their personal data. If the request is approved by the data controller user operating the Fides web application, the data subject's personal data can then retrieved from connected systems and data stores before being bundled together as a data subject access request package for the data subject to download. Supported data formats for the package include json and csv, but the most commonly used format is a series of HTML files compressed in a ZIP file. Once downloaded and unzipped, the data subject user can browse the HTML files on their local machine. It was identified that there was no validation of input coming from e.g. the connected systems and data stores which is later reflected in the downloaded data. This can result in an HTML injection that can be abused e.g. for phishing attacks or malicious JavaScript code execution, but only in the context of the data subject's browser accessing a HTML page using the file:// protocol. Exploitation is limited to rogue Admin UI users, malicious connected system / data store users, and the data subject user if tricked via social engineering into submitting malicious data themselves. This vulnerability has been patched in version 2.23.3.

Affected packages

Versions sourced from the GitHub Security Advisory.

PackageAffected versionsPatched versions
ethyca-fidesPyPI
>= 2.15.1, < 2.23.32.23.3

Affected products

1

Patches

1
50360a0e24aa

Merge pull request from GHSA-3vpf-mcj7-5h38

https://github.com/ethyca/fidesThomasNov 7, 2023via ghsa
2 files changed · +8 2
  • CHANGELOG.md+3 0 modified
    @@ -53,6 +53,7 @@ The types of changes are:
     ## [2.23.0](https://github.com/ethyca/fides/compare/2.22.1...2.23.0)
     
     ### Added
    +
     - Added support for 3 additional config variables in Fides.js: fidesEmbed, fidesDisableSaveApi, and fidesTcString [#4262](https://github.com/ethyca/fides/pull/4262)
     - Added support for fidesEmbed, fidesDisableSaveApi, and fidesTcString to be passed into Fides.js via query param, cookie, or window object [#4297](https://github.com/ethyca/fides/pull/4297)
     - New privacy center environment variables `FIDES_PRIVACY_CENTER__IS_FORCED_TCF` which can make the privacy center always return the TCF bundle (`fides-tcf.js`) [#4312](https://github.com/ethyca/fides/pull/4312)
    @@ -69,6 +70,8 @@ The types of changes are:
     - Added served notice history IDs to the TCF privacy preference API calls [#4161](https://github.com/ethyca/fides/pull/4161)
     
     ### Fixed
    +
    +- Fix an HTML Injection vulnerability in DSR Packages
     - Cleans up CSS for fidesEmbed mode [#4306](https://github.com/ethyca/fides/pull/4306)
     - Stacks that do not have any purposes will no longer render an empty purpose block [#4278](https://github.com/ethyca/fides/pull/4278)
     - Forcing hidden sections to use display none [#4299](https://github.com/ethyca/fides/pull/4299)
    
  • src/fides/api/service/privacy_request/dsr_package/dsr_report_builder.py+5 2 modified
    @@ -45,7 +45,9 @@ def pretty_print(value: str, indent: int = 4) -> str:
                 return json.dumps(value, indent=indent, default=storage_json_encoder)
     
             jinja2.filters.FILTERS["pretty_print"] = pretty_print
    -        self.template_loader = Environment(loader=FileSystemLoader(DSR_DIRECTORY))
    +        self.template_loader = Environment(
    +            loader=FileSystemLoader(DSR_DIRECTORY), autoescape=True
    +        )
     
             # to pass in custom colors in the future
             self.template_data: Dict[str, Any] = {
    @@ -75,7 +77,8 @@ def _populate_template(
             }
             report_data.update(self.template_data)
             template = self.template_loader.get_template(template_path)
    -        return template.render(report_data)
    +        rendered_template = template.render(report_data)
    +        return rendered_template
     
         def _add_file(self, filename: str, contents: str) -> None:
             """Helper to add a file to the zip archive"""
    

Vulnerability mechanics

Generated by null/stub on May 9, 2026. Inputs: CWE entries + fix-commit diffs from this CVE's patches. Citations validated against bundle.

References

5

News mentions

0

No linked articles in our index yet.