{"api_version":"1","generated_at":"2026-10-02T03:07:11+00:00","cve":"CVE-2026-100190","urls":{"html":"https://cve.report/CVE-2026-100190","api":"https://cve.report/api/cve/CVE-2026-100190.json","docs":"https://cve.report/api","cve_org":"https://www.cve.org/CVERecord?id=CVE-2026-100190","nvd":"https://nvd.nist.gov/vuln/detail/CVE-2026-100190"},"summary":{"title":"Stored Cross-Site Scripting (XSS) via Crawler Capture Import in AIL Framework showDomain Page","description":"The AIL Framework crawler splash domain page (showDomain.html) is vulnerable to stored cross-site script injection (XSS). User-supplied data originating from imported crawler captures—specifically item IDs, URLs, and screenshot file paths—was interpolated directly into inline JavaScript contexts within the HTML template. This included an onclick attribute that embedded raw screenshot and URL values into a JavaScript function call, and an inline script block that assigned a screenshot value to a JavaScript variable without escaping. An attacker with a user-role API client could craft a malicious crawler capture import containing JavaScript payloads in these fields. When any user (including privileged users) subsequently viewed the affected domain page, the injected script would execute in the victim's browser context, potentially allowing session hijacking, data exfiltration, or unauthorized actions on behalf of the victim. The vulnerability is stored in the application's data layer and triggered upon page rendering, requiring no further interaction beyond loading the domain view.","state":"PUBLISHED","assigner":"CIRCL","published_at":"2026-09-25 14:17:17","updated_at":"2026-09-25 17:17:05"},"problem_types":["CWE-79","CWE-79 CWE-79 Improper Neutralization of Input in Web Page ('Cross-site Scripting')"],"metrics":[{"version":"4.0","source":"5a6e4751-2f3f-4070-9419-94fb35b644e8","type":"Secondary","score":"6.3","severity":"MEDIUM","vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:P/VC:N/VI:N/VA:N/SC:H/SI:H/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X","data":{"version":"4.0","vectorString":"CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:P/VC:N/VI:N/VA:N/SC:H/SI:H/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X","baseScore":6.3,"baseSeverity":"MEDIUM","attackVector":"NETWORK","attackComplexity":"LOW","attackRequirements":"NONE","privilegesRequired":"LOW","userInteraction":"PASSIVE","vulnConfidentialityImpact":"NONE","vulnIntegrityImpact":"NONE","vulnAvailabilityImpact":"NONE","subConfidentialityImpact":"HIGH","subIntegrityImpact":"HIGH","subAvailabilityImpact":"NONE","exploitMaturity":"NOT_DEFINED","confidentialityRequirement":"NOT_DEFINED","integrityRequirement":"NOT_DEFINED","availabilityRequirement":"NOT_DEFINED","modifiedAttackVector":"NOT_DEFINED","modifiedAttackComplexity":"NOT_DEFINED","modifiedAttackRequirements":"NOT_DEFINED","modifiedPrivilegesRequired":"NOT_DEFINED","modifiedUserInteraction":"NOT_DEFINED","modifiedVulnConfidentialityImpact":"NOT_DEFINED","modifiedVulnIntegrityImpact":"NOT_DEFINED","modifiedVulnAvailabilityImpact":"NOT_DEFINED","modifiedSubConfidentialityImpact":"NOT_DEFINED","modifiedSubIntegrityImpact":"NOT_DEFINED","modifiedSubAvailabilityImpact":"NOT_DEFINED","Safety":"NOT_DEFINED","Automatable":"NOT_DEFINED","Recovery":"NOT_DEFINED","valueDensity":"NOT_DEFINED","vulnerabilityResponseEffort":"NOT_DEFINED","providerUrgency":"NOT_DEFINED"}},{"version":"4.0","source":"CNA","type":"CVSS","score":"6.3","severity":"MEDIUM","vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:P/VC:N/VI:N/VA:N/SC:H/SI:H/SA:N","data":{"Automatable":"NOT_DEFINED","Recovery":"NOT_DEFINED","Safety":"NOT_DEFINED","attackComplexity":"LOW","attackRequirements":"NONE","attackVector":"NETWORK","baseScore":6.3,"baseSeverity":"MEDIUM","privilegesRequired":"LOW","providerUrgency":"NOT_DEFINED","subAvailabilityImpact":"NONE","subConfidentialityImpact":"HIGH","subIntegrityImpact":"HIGH","userInteraction":"PASSIVE","valueDensity":"NOT_DEFINED","vectorString":"CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:P/VC:N/VI:N/VA:N/SC:H/SI:H/SA:N","version":"4.0","vulnAvailabilityImpact":"NONE","vulnConfidentialityImpact":"NONE","vulnIntegrityImpact":"NONE","vulnerabilityResponseEffort":"NOT_DEFINED"}}],"references":[{"url":"https://github.com/ail-project/ail-framework/commit/31376ee3d04519c898bb9b3671453a41c4117340","name":"https://github.com/ail-project/ail-framework/commit/31376ee3d04519c898bb9b3671453a41c4117340","refsource":"5a6e4751-2f3f-4070-9419-94fb35b644e8","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://www.cve.org/CVERecord?id=CVE-2026-100190","name":"CVE Program record","refsource":"CVE.ORG","tags":["canonical"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2026-100190","name":"NVD vulnerability detail","refsource":"NVD","tags":["canonical","analysis"]}],"affected":[{"source":"CNA","vendor":"ail project","product":"ail framework","version":"affected unspecified 7.1 semver","platforms":[]}],"timeline":[],"solutions":[{"source":"CNA","title":"","value":"The fix removes all capture-derived values (item IDs, URLs, screenshot paths) from inline JavaScript contexts (onclick attributes and inline script variable assignments). These values are now stored in HTML data attributes (data-screenshot, data-url, data-item-id), which are properly HTML-escaped by the Jinja2 template engine. Screenshot click handlers are bound programmatically via addEventListener on elements with a .reload-image class, and the reload_image function reads values from the DOM element's dataset rather than receiving raw string parameters. Additionally, item IDs are URL-encoded with encodeURIComponent before being appended to link hrefs, preventing injection through the ID field.","time":"","lang":"en"}],"workarounds":[],"exploits":[],"credits":[{"source":"CNA","value":"Aurelien Thirion","lang":"en"},{"source":"CNA","value":"Jeroen Pinoy","lang":"en"}],"nvd_cpes":[],"vendor_comments":[],"enrichments":{"kev":null,"epss":{"cve_year":"2026","cve_id":"100190","cve":"CVE-2026-100190","epss":"0.003160000","percentile":"0.220920000","score_date":"2026-09-27","updated_at":"2026-09-28 00:02:23"},"legacy_qids":[]},"source_records":{"cve_program":{"containers":{"adp":[{"metrics":[{"other":{"content":{"id":"CVE-2026-100190","options":[{"Exploitation":"none"},{"Automatable":"no"},{"Technical Impact":"partial"}],"role":"CISA Coordinator","timestamp":"2026-09-25T16:13:08.012327Z","version":"2.0.3"},"type":"ssvc"}}],"providerMetadata":{"dateUpdated":"2026-09-25T16:13:26.973Z","orgId":"134c704f-9b21-4f2e-91b3-4a467353bcc0","shortName":"CISA-ADP"},"title":"CISA ADP Vulnrichment"}],"cna":{"affected":[{"defaultStatus":"unaffected","modules":["crawler/crawler_splash"],"product":"ail framework","programFiles":["var/www/templates/crawler/crawler_splash/showDomain.html"],"repo":"https://github.com/ail-project/ail-framework","vendor":"ail project","versions":[{"lessThan":"7.1","status":"affected","version":"unspecified","versionType":"semver"}]}],"credits":[{"lang":"en","type":"remediation developer","value":"Aurelien Thirion"},{"lang":"en","type":"finder","value":"Jeroen Pinoy"}],"descriptions":[{"lang":"en","supportingMedia":[{"base64":false,"type":"text/html","value":"<p>The AIL Framework crawler splash domain page (showDomain.html) is vulnerable to stored cross-site script injection (XSS). User-supplied data originating from imported crawler captures—specifically item IDs, URLs, and screenshot file paths—was interpolated directly into inline JavaScript contexts within the HTML template. This included an onclick attribute that embedded raw screenshot and URL values into a JavaScript function call, and an inline script block that assigned a screenshot value to a JavaScript variable without escaping. An attacker with a user-role API client could craft a malicious crawler capture import containing JavaScript payloads in these fields. When any user (including privileged users) subsequently viewed the affected domain page, the injected script would execute in the victim's browser context, potentially allowing session hijacking, data exfiltration, or unauthorized actions on behalf of the victim. The vulnerability is stored in the application's data layer and triggered upon page rendering, requiring no further interaction beyond loading the domain view.</p>"}],"value":"The AIL Framework crawler splash domain page (showDomain.html) is vulnerable to stored cross-site script injection (XSS). User-supplied data originating from imported crawler captures—specifically item IDs, URLs, and screenshot file paths—was interpolated directly into inline JavaScript contexts within the HTML template. This included an onclick attribute that embedded raw screenshot and URL values into a JavaScript function call, and an inline script block that assigned a screenshot value to a JavaScript variable without escaping. An attacker with a user-role API client could craft a malicious crawler capture import containing JavaScript payloads in these fields. When any user (including privileged users) subsequently viewed the affected domain page, the injected script would execute in the victim's browser context, potentially allowing session hijacking, data exfiltration, or unauthorized actions on behalf of the victim. The vulnerability is stored in the application's data layer and triggered upon page rendering, requiring no further interaction beyond loading the domain view."}],"impacts":[{"capecId":"CAPEC-1","descriptions":[{"lang":"en","value":"CAPEC-1 Cross Site Scripting (XSS)"}]}],"metrics":[{"cvssV4_0":{"Automatable":"NOT_DEFINED","Recovery":"NOT_DEFINED","Safety":"NOT_DEFINED","attackComplexity":"LOW","attackRequirements":"NONE","attackVector":"NETWORK","baseScore":6.3,"baseSeverity":"MEDIUM","privilegesRequired":"LOW","providerUrgency":"NOT_DEFINED","subAvailabilityImpact":"NONE","subConfidentialityImpact":"HIGH","subIntegrityImpact":"HIGH","userInteraction":"PASSIVE","valueDensity":"NOT_DEFINED","vectorString":"CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:P/VC:N/VI:N/VA:N/SC:H/SI:H/SA:N","version":"4.0","vulnAvailabilityImpact":"NONE","vulnConfidentialityImpact":"NONE","vulnIntegrityImpact":"NONE","vulnerabilityResponseEffort":"NOT_DEFINED"},"format":"CVSS","scenarios":[{"lang":"en","value":"GENERAL"}]}],"problemTypes":[{"descriptions":[{"cweId":"CWE-79","description":"CWE-79 Improper Neutralization of Input in Web Page ('Cross-site Scripting')","lang":"en","type":"CWE"}]}],"providerMetadata":{"dateUpdated":"2026-09-25T13:52:19.648Z","orgId":"5a6e4751-2f3f-4070-9419-94fb35b644e8","shortName":"CIRCL"},"references":[{"name":"Security patch","tags":["patch"],"url":"https://github.com/ail-project/ail-framework/commit/31376ee3d04519c898bb9b3671453a41c4117340"}],"solutions":[{"lang":"en","supportingMedia":[{"base64":false,"type":"text/html","value":"<p>The fix removes all capture-derived values (item IDs, URLs, screenshot paths) from inline JavaScript contexts (onclick attributes and inline script variable assignments). These values are now stored in HTML data attributes (data-screenshot, data-url, data-item-id), which are properly HTML-escaped by the Jinja2 template engine. Screenshot click handlers are bound programmatically via addEventListener on elements with a .reload-image class, and the reload_image function reads values from the DOM element's dataset rather than receiving raw string parameters. Additionally, item IDs are URL-encoded with encodeURIComponent before being appended to link hrefs, preventing injection through the ID field.</p>"}],"value":"The fix removes all capture-derived values (item IDs, URLs, screenshot paths) from inline JavaScript contexts (onclick attributes and inline script variable assignments). These values are now stored in HTML data attributes (data-screenshot, data-url, data-item-id), which are properly HTML-escaped by the Jinja2 template engine. Screenshot click handlers are bound programmatically via addEventListener on elements with a .reload-image class, and the reload_image function reads values from the DOM element's dataset rather than receiving raw string parameters. Additionally, item IDs are URL-encoded with encodeURIComponent before being appended to link hrefs, preventing injection through the ID field."}],"source":{"discovery":"UNKNOWN"},"title":"Stored Cross-Site Scripting (XSS) via Crawler Capture Import in AIL Framework showDomain Page","x_gcve":[{"extensions":{"bcp-05-x-01":{"ai_annotations":[{"ai_level":"generated","description":"Draft vulnerability metadata was generated from a git-format patch using an Ollama-hosted language model.","gna_source":1,"models":[{"gna_source":1,"identifier":"qwen3.8:27b","name":"qwen3.8:27b","source":"ollama"}],"review_status":"full","scope":"record","tags":["ai-computer-assisted:llm-generated","ai-computer-assisted:classification"]}]},"bcp-05-x-02":{"x_patch2vuln":{"assumptions":["The UI:P (Passive) rating assumes the inline script vector (screenshot variable assignment) executes on page load without requiring a user click. The onclick vector would require UI:A, but the inline script vector is sufficient for exploitation.","PR:L assumes the attacker needs a user-role API client to import a crafted crawler capture, as stated in the commit message. The exact privilege level and authentication mechanism are not further specified in the patch.","The version boundary 'less_than 7.1' is inferred from the tag_version_boundary metadata showing 21 commits after the fix before the v7.1 tag, suggesting the fix is included in v7.1. Exact affected version ranges are not confirmed.","CAPEC-1 is selected as the closest available attack pattern for stored XSS; no more specific CAPEC for stored XSS via data import exists in the catalog.","The patch does not include test cases or additional context about whether other template files have similar inline JavaScript interpolation patterns; this advisory covers only the single file in the patch."],"capecRationale":[{"capecId":"CAPEC-1","rationale":"The patch directly remediates a stored XSS vector where attacker-controlled data from a crawler capture import is reflected into inline JavaScript without neutralization. CAPEC-1 is the canonical attack pattern for XSS. The specific sub-variant is stored (persistent) XSS via a data import mechanism, but CAPEC-1 is the closest and most appropriate mapping available in the CAPEC catalog."}],"commit":"31376ee3d04519c898bb9b3671453a41c4117340","confidence":"medium","credits":[{"lang":"en","type":"remediation developer","value":"terrtia"}],"cvssRationale":"AV:N: Exploitable over the network via the web application. AC:L: No special race conditions or complex setup; a crafted capture import suffices. AT:N: No manipulation of the attack target required. PR:L: Requires a user-role API client to import a malicious crawler capture (authenticated, low privilege). UI:P: The stored XSS in the inline script block executes passively when the victim loads the domain page; no click or active interaction is needed for the inline script vector. VC:N/VI:N/VA:N: The vulnerable component (server-side application) is not directly compromised in confidentiality, integrity, or availability. SC:H: Scope changes to the victim's browser session, enabling theft of session tokens, cookies, and sensitive data. SI:H: Scope integrity is impacted as the attacker can perform arbitrary actions in the victim's authenticated session. SA:N: No meaningful impact on the availability of the attacker's scope.","fixSummary":"The fix removes all capture-derived values (item IDs, URLs, screenshot paths) from inline JavaScript contexts (onclick attributes and inline script variable assignments). These values are now stored in HTML data attributes (data-screenshot, data-url, data-item-id), which are properly HTML-escaped by the Jinja2 template engine. Screenshot click handlers are bound programmatically via addEventListener on elements with a .reload-image class, and the reload_image function reads values from the DOM element's dataset rather than receiving raw string parameters. Additionally, item IDs are URL-encoded with encodeURIComponent before being appended to link hrefs, preventing injection through the ID field.","generatedAt":"2026-09-25T13:45:46.199650Z","generator":"patch2vuln.py","model":"qwen3.8:27b","modelComparison":{"rankings":[{"agreementScore":9,"assumptionCount":5,"confidence":"medium","model":"qwen3.8:27b","score":5}],"selectedModel":"qwen3.8:27b","selectionMethod":"deterministic-consensus-v1","selectionNotice":"The selected result is closest to model consensus; this heuristic does not establish factual correctness and human review remains required."},"patchSha256":"c110d16dd8eee489472853615089aeb6b6e034457dcbaec9b038bf85ad96b920","patchSummary":"In showDomain.html: (1) Replaced inline onclick=\"reload_image('...')\" with a data-attribute-based approach using data-screenshot, data-url, and data-item-id attributes on the table cell element, plus a .reload-image CSS class. (2) Removed the inline script block that assigned screenshot, URL, and ID values directly into JavaScript variables via Jinja2 interpolation; replaced with dataset reads from the domain_screenshot img element. (3) Changed reload_image() to accept a DOM element and read values from element.dataset instead of raw string arguments. (4) Added a programmatic event binding loop using document.querySelectorAll('.reload-image').forEach() with addEventListener('click'). (5) Applied encodeURIComponent() to item IDs when constructing screenshot link hrefs. (6) Changed the href URL construction to use url_for with keyword arguments instead of string interpolation.","patchTruncated":false,"patches":[{"commit":"31376ee3d04519c898bb9b3671453a41c4117340","patchSha256":"c110d16dd8eee489472853615089aeb6b6e034457dcbaec9b038bf85ad96b920","source":"https://github.com/ail-project/ail-framework/commit/31376ee3d04519c898bb9b3671453a41c4117340.patch","sourceUrl":"https://github.com/ail-project/ail-framework/commit/31376ee3d04519c898bb9b3671453a41c4117340.patch","subject":"chg: [security] prevent stored XSS through imported capture"}],"source":"https://github.com/ail-project/ail-framework/commit/31376ee3d04519c898bb9b3671453a41c4117340.patch","subject":"chg: [security] prevent stored XSS through imported capture","tagVersionBoundary":{"commits_after_fix":21,"repository":"https://github.com/ail-project/ail-framework","tag":"v7.1","version":"7.1","version_type":"custom"},"weaknessRationale":[{"cweId":"CWE-79","rationale":"The patch explicitly addresses stored XSS by removing user-controlled values (screenshot paths, URLs, item IDs from crawler capture imports) from inline JavaScript contexts and replacing them with properly escaped data attributes and programmatic event binding. The commit message confirms the intent: 'prevent stored XSS through imported capture metadata in showDomain.'"}]}}},"recordType":"advisory","vulnId":"GCVE-1-2026-20292"}],"x_generator":{"engine":"Vulnogram 0.2.0"}}},"cveMetadata":{"assignerOrgId":"5a6e4751-2f3f-4070-9419-94fb35b644e8","assignerShortName":"CIRCL","cveId":"CVE-2026-100190","datePublished":"2026-09-25T13:52:19.648Z","dateReserved":"2026-09-25T13:52:13.769Z","dateUpdated":"2026-09-25T16:13:26.973Z","state":"PUBLISHED"},"dataType":"CVE_RECORD","dataVersion":"5.2"},"nvd":{"publishedDate":"2026-09-25 14:17:17","lastModifiedDate":"2026-09-25 17:17:05","problem_types":["CWE-79","CWE-79 CWE-79 Improper Neutralization of Input in Web Page ('Cross-site Scripting')"],"metrics":{"cvssMetricV40":[{"source":"5a6e4751-2f3f-4070-9419-94fb35b644e8","type":"Secondary","cvssData":{"version":"4.0","vectorString":"CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:P/VC:N/VI:N/VA:N/SC:H/SI:H/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X","baseScore":6.3,"baseSeverity":"MEDIUM","attackVector":"NETWORK","attackComplexity":"LOW","attackRequirements":"NONE","privilegesRequired":"LOW","userInteraction":"PASSIVE","vulnConfidentialityImpact":"NONE","vulnIntegrityImpact":"NONE","vulnAvailabilityImpact":"NONE","subConfidentialityImpact":"HIGH","subIntegrityImpact":"HIGH","subAvailabilityImpact":"NONE","exploitMaturity":"NOT_DEFINED","confidentialityRequirement":"NOT_DEFINED","integrityRequirement":"NOT_DEFINED","availabilityRequirement":"NOT_DEFINED","modifiedAttackVector":"NOT_DEFINED","modifiedAttackComplexity":"NOT_DEFINED","modifiedAttackRequirements":"NOT_DEFINED","modifiedPrivilegesRequired":"NOT_DEFINED","modifiedUserInteraction":"NOT_DEFINED","modifiedVulnConfidentialityImpact":"NOT_DEFINED","modifiedVulnIntegrityImpact":"NOT_DEFINED","modifiedVulnAvailabilityImpact":"NOT_DEFINED","modifiedSubConfidentialityImpact":"NOT_DEFINED","modifiedSubIntegrityImpact":"NOT_DEFINED","modifiedSubAvailabilityImpact":"NOT_DEFINED","Safety":"NOT_DEFINED","Automatable":"NOT_DEFINED","Recovery":"NOT_DEFINED","valueDensity":"NOT_DEFINED","vulnerabilityResponseEffort":"NOT_DEFINED","providerUrgency":"NOT_DEFINED"}}],"ssvcV203":[{"source":"134c704f-9b21-4f2e-91b3-4a467353bcc0","ssvcData":{"timestamp":"2026-09-25T16:13:08.012327Z","id":"CVE-2026-100190","options":[{"exploitation":"none"},{"automatable":"no"},{"technicalImpact":"partial"}],"role":"CISA Coordinator","version":"2.0.3"}}]},"configurations":[]},"legacy_mitre":{"record":{"CveYear":"2026","CveId":"100190","Ordinal":"1","Title":"Stored Cross-Site Scripting (XSS) via Crawler Capture Import in ","CVE":"CVE-2026-100190","Year":"2026"},"notes":[{"CveYear":"2026","CveId":"100190","Ordinal":"1","NoteData":"The AIL Framework crawler splash domain page (showDomain.html) is vulnerable to stored cross-site script injection (XSS). User-supplied data originating from imported crawler captures—specifically item IDs, URLs, and screenshot file paths—was interpolated directly into inline JavaScript contexts within the HTML template. This included an onclick attribute that embedded raw screenshot and URL values into a JavaScript function call, and an inline script block that assigned a screenshot value to a JavaScript variable without escaping. An attacker with a user-role API client could craft a malicious crawler capture import containing JavaScript payloads in these fields. When any user (including privileged users) subsequently viewed the affected domain page, the injected script would execute in the victim's browser context, potentially allowing session hijacking, data exfiltration, or unauthorized actions on behalf of the victim. The vulnerability is stored in the application's data layer and triggered upon page rendering, requiring no further interaction beyond loading the domain view.","Type":"Description","Title":"Stored Cross-Site Scripting (XSS) via Crawler Capture Import in "}]}}}