Find a vulnerability
Search criteria
5 vulnerabilities found for misp-modules by MISP
CVE-2026-112991 (GCVE-0-2026-112991)
Vulnerability from cvelistv5 – Published: 2026-10-19 22:19 – Updated: 2026-10-20 06:02| URL | Tags |
|---|---|
| https://github.com/misp/misp-modules/commit/98a1c… | patch |
| Vendor | Product | Version | |
|---|---|---|---|
| MISP | misp-modules |
Affected:
0 , ≤ 3.0.12
(semver)
cpe:2.3:a:misp:misp_modules_\(html_to_markdown_expansion_module\):*:*:*:*:*:*:*:* |
qwen3.8:27b
1 event
advisory
bcp-05-x-01bcp-05-x-02bcp-05-x-03
Draft vulnerability metadata was generated from a git-format patch using an Ollama-hosted language model. Human validation is required before publication.
| Model | Source | Identifier |
|---|---|---|
| qwen3.8:27b | ollama | qwen3.8:27b |
- Generator
-
patch2vuln.pyon 2026-10-19 22:15 - Model
qwen3.8:27b- Input
-
https://github.com/misp/misp-modules/commit/98a1c2c2f297665dd8d4609e9cd644007a57516b.patch
a1b0755b91dd… - Confidence
- medium
| Commit | Subject | Patch SHA-256 |
|---|---|---|
98a1c2c2f297
|
fix: [html_to_markdown] block unspecified, shared, ULA and | a1b0755b91dd… |
Fix summary
The fix extends the BLOCKED_RANGES list in is_safe_url() to include the previously missing IP address ranges: 0.0.0.0/8, 100.64.0.0/10, ::/128, fc00::/7, and fe80::/10. The existing IPv4-mapped IPv6 normalisation logic ensures that mapped forms (e.g., ::ffff:0.0.0.0) are also blocked. Regression tests are added covering both literal IP addresses in URLs and hostnames that resolve to the newly blocked ranges.
Patch summary
In misp_modules/modules/expansion/html_to_markdown.py, five new ipaddress.ip_network() entries are added to the BLOCKED_RANGES list: 0.0.0.0/8, 100.64.0.0/10, ::/128, fc00::/7, and fe80::/10. In tests/test_html_to_markdown.py, two new test methods are added: test_blocks_unspecified_shared_ula_and_link_local_literals verifies that is_safe_url() returns False for literal URLs using each blocked range (including IPv4-mapped IPv6 forms), and test_blocks_hostnames_resolving_to_ula_addresses verifies that a hostname resolving to an fc00::/7 address is rejected.
CVSS rationale
AV:N: The vulnerable URL is supplied via a MISP attribute over the network. AC:L: Crafting a URL with a blocked-range IP is straightforward; no race or special timing is needed. AT:N: No manipulation of the target service is required. PR:L: Creating or modifying a MISP attribute that triggers the expansion module requires authenticated access (assumed; MISP typically requires authentication for attribute operations). UI:N: No victim interaction beyond the initial attribute creation is needed. VC:N, VI:N, VA:N: The MISP server itself is not compromised; it is used as a proxy. SC:H: The SSRF allows reading responses from internal services (e.g., cloud metadata endpoints, internal admin panels), representing a high confidentiality impact on the target system. SI:N, SA:N: The module performs a GET-style fetch for HTML-to-Markdown conversion; no evidence of write or security-impact on the target.
Weakness rationale
- CWE-918 The html_to_markdown module fetches a user-supplied URL server-side. The incomplete IP range allow/block list permitted requests to internal, link-local, and otherwise restricted network destinations, constituting a classic SSRF.
- CWE-20 The is_safe_url() function's BLOCKED_RANGES list was incomplete, failing to validate against all non-routable and internally significant IP address ranges. This is the root-cause input validation deficiency enabling the SSRF.
Attack pattern rationale
- CAPEC-12 The patch directly addresses an SSRF condition: the application fetches a URL on behalf of the user, and the validation logic failed to block requests to internal and restricted IP ranges. An attacker crafts a URL with a blocked-range IP (e.g., http://0.0.0.0/admin or http://[fe80::1]/) to cause the MISP server to issue a request to an internal service. This is the canonical CAPEC-12 pattern. No uncertainty in this mapping.
Assumptions to verify
- PR:L assumes that creating or modifying a MISP attribute to trigger the html_to_markdown expansion module requires authenticated access. MISP typically enforces authentication for attribute operations, but the patch does not explicitly state the authentication model.
- SC:H assumes the MISP server can reach internal services (e.g., cloud metadata at 169.254.169.254, internal admin panels, or CGNAT infrastructure) and that the responses are returned to the attacker via the Markdown conversion output. The actual impact depends on the server's network topology.
- The exact affected version range is not specified in the patch. The nearest tag is v3.0.13 with 139 commits after the fix, but the precise release containing the fix is not identified.
- CAPEC-12 is selected as the closest match; no alternative CAPEC more precisely describes an SSRF via incomplete IP-range validation in a URL-fetching module.
- The patch does not indicate whether the module follows redirects to additional unblocked ranges; MAX_REDIRECTS is set to 10, and the redirect target validation is not shown in this patch. If redirect targets are not re-validated, the SSRF surface may be broader than what this patch addresses.
Model comparison
Selected qwen3.8:27b
by deterministic-consensus-v1
The selected result is closest to model consensus; this heuristic does not establish factual correctness and human review remains required.
| Model | Score | Agreement | Confidence | Assumptions |
|---|---|---|---|---|
qwen3.8:27b |
7 | 11 | medium | 5 |
- 2026-09-25 22:15 UTC Fix developed Corrective change authored (98a1c2c2f297665dd8d4609e9cd644007a57516b): fix: [html_to_markdown] block unspecified, shared, ULA and https://github.com/misp/misp-modules/commit/98a1c2c2f297665dd8d4609e9cd644007a57516b.patch
{
"containers": {
"cna": {
"affected": [
{
"cpes": [
"cpe:2.3:a:misp:misp_modules_\\(html_to_markdown_expansion_module\\):*:*:*:*:*:*:*:*"
],
"defaultStatus": "unaffected",
"modules": [
"misp_modules/modules/expansion/html_to_markdown.py"
],
"product": "misp-modules",
"programFiles": [
"misp_modules/modules/expansion/html_to_markdown.py"
],
"repo": "https://github.com/misp/misp-modules",
"vendor": "MISP",
"versions": [
{
"lessThanOrEqual": "3.0.12",
"status": "affected",
"version": "0",
"versionType": "semver"
}
]
}
],
"credits": [
{
"lang": "en",
"type": "remediation developer",
"value": "elhoim"
},
{
"lang": "en",
"type": "remediation developer",
"value": "Claude Opus 5 (1M context)"
}
],
"descriptions": [
{
"lang": "en",
"supportingMedia": [
{
"base64": false,
"type": "text/html",
"value": "\u003cp\u003eThe html_to_markdown expansion module in MISP Modules contains a server-side request forgery (SSRF) vulnerability in its is_safe_url() URL validation function. The BLOCKED_RANGES list used to reject unsafe destination addresses was incomplete, omitting several critical IP address ranges. Specifically, the following ranges were not blocked: 0.0.0.0/8 (unspecified, which routes to loopback on Linux), 100.64.0.0/10 (carrier-grade NAT per RFC 6598), ::/128 (IPv6 unspecified), fc00::/7 (IPv6 Unique Local Addresses), and fe80::/10 (IPv6 link-local). The existing list only covered IPv4 loopback (127.0.0.0/8), RFC 1918 private ranges, IPv4 link-local (169.254.0.0/16), and IPv6 loopback (::1/128).\u003c/p\u003e\u003cp\u003eAn authenticated user with the ability to create or modify MISP attributes that trigger the html_to_markdown expansion module could supply URLs pointing to these unblocked internal address ranges. Because the module fetches the URL server-side to convert HTML content to Markdown, the request is made from the MISP server\u0027s network context. This allows an attacker to probe and read responses from internal services, carrier-grade NAT infrastructure, or link-local endpoints that would otherwise be unreachable from external networks. IPv4-mapped IPv6 forms (e.g., [::ffff:0.0.0.0]) also bypassed the existing checks.\u003c/p\u003e\u003cp\u003eThe security impact is primarily confidentiality: an attacker can read data served by internal services reachable from the MISP server. The MISP instance itself is not compromised, but it is abused as a proxy to access otherwise restricted network resources.\u003c/p\u003e"
}
],
"value": "The html_to_markdown expansion module in MISP Modules contains a server-side request forgery (SSRF) vulnerability in its is_safe_url() URL validation function. The BLOCKED_RANGES list used to reject unsafe destination addresses was incomplete, omitting several critical IP address ranges. Specifically, the following ranges were not blocked: 0.0.0.0/8 (unspecified, which routes to loopback on Linux), 100.64.0.0/10 (carrier-grade NAT per RFC 6598), ::/128 (IPv6 unspecified), fc00::/7 (IPv6 Unique Local Addresses), and fe80::/10 (IPv6 link-local). The existing list only covered IPv4 loopback (127.0.0.0/8), RFC 1918 private ranges, IPv4 link-local (169.254.0.0/16), and IPv6 loopback (::1/128).\n\nAn authenticated user with the ability to create or modify MISP attributes that trigger the html_to_markdown expansion module could supply URLs pointing to these unblocked internal address ranges. Because the module fetches the URL server-side to convert HTML content to Markdown, the request is made from the MISP server\u0027s network context. This allows an attacker to probe and read responses from internal services, carrier-grade NAT infrastructure, or link-local endpoints that would otherwise be unreachable from external networks. IPv4-mapped IPv6 forms (e.g., [::ffff:0.0.0.0]) also bypassed the existing checks.\n\nThe security impact is primarily confidentiality: an attacker can read data served by internal services reachable from the MISP server. The MISP instance itself is not compromised, but it is abused as a proxy to access otherwise restricted network resources."
}
],
"impacts": [
{
"capecId": "CAPEC-12",
"descriptions": [
{
"lang": "en",
"value": "CAPEC-12 Server Side Request Forgery"
}
]
}
],
"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": "NONE",
"userInteraction": "NONE",
"valueDensity": "NOT_DEFINED",
"vectorString": "CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:N/VI:N/VA:N/SC:H/SI:N/SA:N",
"version": "4.0",
"vulnAvailabilityImpact": "NONE",
"vulnConfidentialityImpact": "NONE",
"vulnIntegrityImpact": "NONE",
"vulnerabilityResponseEffort": "NOT_DEFINED"
},
"format": "CVSS",
"scenarios": [
{
"lang": "en",
"value": "GENERAL"
}
]
},
{
"format": "SSVC",
"other": {
"content": {
"options": [
{
"Exploitation": "none"
},
{
"Automatable": "yes"
},
{
"Technical Impact": "partial"
}
],
"role": "Supplier",
"timestamp": "2026-10-19T22:15:01Z",
"version": "2.0.3"
},
"type": "SSVC"
},
"scenarios": [
{
"lang": "en",
"value": "GENERAL"
}
]
}
],
"problemTypes": [
{
"descriptions": [
{
"cweId": "CWE-918",
"description": "CWE-918 Server-Side Request Forgery (SSRF)",
"lang": "en",
"type": "CWE"
}
]
},
{
"descriptions": [
{
"cweId": "CWE-20",
"description": "CWE-20 Improper Input Validation",
"lang": "en",
"type": "CWE"
}
]
}
],
"providerMetadata": {
"dateUpdated": "2026-10-20T06:02:08.508Z",
"orgId": "5a6e4751-2f3f-4070-9419-94fb35b644e8",
"shortName": "CIRCL"
},
"references": [
{
"name": "Security patch",
"tags": [
"patch"
],
"url": "https://github.com/misp/misp-modules/commit/98a1c2c2f297665dd8d4609e9cd644007a57516b"
}
],
"solutions": [
{
"lang": "en",
"supportingMedia": [
{
"base64": false,
"type": "text/html",
"value": "\u003cp\u003eThe fix extends the BLOCKED_RANGES list in is_safe_url() to include the previously missing IP address ranges: 0.0.0.0/8, 100.64.0.0/10, ::/128, fc00::/7, and fe80::/10. The existing IPv4-mapped IPv6 normalisation logic ensures that mapped forms (e.g., ::ffff:0.0.0.0) are also blocked. Regression tests are added covering both literal IP addresses in URLs and hostnames that resolve to the newly blocked ranges.\u003c/p\u003e"
}
],
"value": "The fix extends the BLOCKED_RANGES list in is_safe_url() to include the previously missing IP address ranges: 0.0.0.0/8, 100.64.0.0/10, ::/128, fc00::/7, and fe80::/10. The existing IPv4-mapped IPv6 normalisation logic ensures that mapped forms (e.g., ::ffff:0.0.0.0) are also blocked. Regression tests are added covering both literal IP addresses in URLs and hostnames that resolve to the newly blocked ranges."
}
],
"source": {
"discovery": "UNKNOWN"
},
"title": "MISP html_to_markdown Module SSRF via Incomplete IP Range Blocking in is_safe_url()",
"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. Human validation is required before publication.",
"gna_source": 1,
"models": [
{
"gna_source": 1,
"identifier": "qwen3.8:27b",
"name": "qwen3.8:27b",
"source": "ollama"
}
],
"review_status": "partial",
"scope": "record",
"tags": [
"ai-computer-assisted:llm-generated",
"ai-computer-assisted:classification"
]
}
]
},
"bcp-05-x-02": {
"x_patch2vuln": {
"assumptions": [
"PR:L assumes that creating or modifying a MISP attribute to trigger the html_to_markdown expansion module requires authenticated access. MISP typically enforces authentication for attribute operations, but the patch does not explicitly state the authentication model.",
"SC:H assumes the MISP server can reach internal services (e.g., cloud metadata at 169.254.169.254, internal admin panels, or CGNAT infrastructure) and that the responses are returned to the attacker via the Markdown conversion output. The actual impact depends on the server\u0027s network topology.",
"The exact affected version range is not specified in the patch. The nearest tag is v3.0.13 with 139 commits after the fix, but the precise release containing the fix is not identified.",
"CAPEC-12 is selected as the closest match; no alternative CAPEC more precisely describes an SSRF via incomplete IP-range validation in a URL-fetching module.",
"The patch does not indicate whether the module follows redirects to additional unblocked ranges; MAX_REDIRECTS is set to 10, and the redirect target validation is not shown in this patch. If redirect targets are not re-validated, the SSRF surface may be broader than what this patch addresses."
],
"capecRationale": [
{
"capecId": "CAPEC-12",
"rationale": "The patch directly addresses an SSRF condition: the application fetches a URL on behalf of the user, and the validation logic failed to block requests to internal and restricted IP ranges. An attacker crafts a URL with a blocked-range IP (e.g., http://0.0.0.0/admin or http://[fe80::1]/) to cause the MISP server to issue a request to an internal service. This is the canonical CAPEC-12 pattern. No uncertainty in this mapping."
}
],
"commit": "98a1c2c2f297665dd8d4609e9cd644007a57516b",
"confidence": "medium",
"credits": [
{
"lang": "en",
"type": "remediation developer",
"value": "elhoim"
},
{
"lang": "en",
"type": "remediation developer",
"value": "Claude Opus 5 (1M context)"
}
],
"cvssRationale": "AV:N: The vulnerable URL is supplied via a MISP attribute over the network. AC:L: Crafting a URL with a blocked-range IP is straightforward; no race or special timing is needed. AT:N: No manipulation of the target service is required. PR:L: Creating or modifying a MISP attribute that triggers the expansion module requires authenticated access (assumed; MISP typically requires authentication for attribute operations). UI:N: No victim interaction beyond the initial attribute creation is needed. VC:N, VI:N, VA:N: The MISP server itself is not compromised; it is used as a proxy. SC:H: The SSRF allows reading responses from internal services (e.g., cloud metadata endpoints, internal admin panels), representing a high confidentiality impact on the target system. SI:N, SA:N: The module performs a GET-style fetch for HTML-to-Markdown conversion; no evidence of write or security-impact on the target.",
"fixSummary": "The fix extends the BLOCKED_RANGES list in is_safe_url() to include the previously missing IP address ranges: 0.0.0.0/8, 100.64.0.0/10, ::/128, fc00::/7, and fe80::/10. The existing IPv4-mapped IPv6 normalisation logic ensures that mapped forms (e.g., ::ffff:0.0.0.0) are also blocked. Regression tests are added covering both literal IP addresses in URLs and hostnames that resolve to the newly blocked ranges.",
"generatedAt": "2026-10-19T22:15:01.979194Z",
"generator": "patch2vuln.py",
"model": "qwen3.8:27b",
"modelComparison": {
"rankings": [
{
"agreementScore": 11,
"assumptionCount": 5,
"confidence": "medium",
"model": "qwen3.8:27b",
"score": 7
}
],
"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": "a1b0755b91ddfee8869bba03e3d5eb00ffedd8e753d6d03e40c059d056567b28",
"patchSummary": "In misp_modules/modules/expansion/html_to_markdown.py, five new ipaddress.ip_network() entries are added to the BLOCKED_RANGES list: 0.0.0.0/8, 100.64.0.0/10, ::/128, fc00::/7, and fe80::/10. In tests/test_html_to_markdown.py, two new test methods are added: test_blocks_unspecified_shared_ula_and_link_local_literals verifies that is_safe_url() returns False for literal URLs using each blocked range (including IPv4-mapped IPv6 forms), and test_blocks_hostnames_resolving_to_ula_addresses verifies that a hostname resolving to an fc00::/7 address is rejected.",
"patchTruncated": false,
"patches": [
{
"commit": "98a1c2c2f297665dd8d4609e9cd644007a57516b",
"date": "Fri, 25 Sep 2026 22:15:46 +0000",
"patchSha256": "a1b0755b91ddfee8869bba03e3d5eb00ffedd8e753d6d03e40c059d056567b28",
"source": "https://github.com/misp/misp-modules/commit/98a1c2c2f297665dd8d4609e9cd644007a57516b.patch",
"sourceUrl": "https://github.com/misp/misp-modules/commit/98a1c2c2f297665dd8d4609e9cd644007a57516b.patch",
"subject": "fix: [html_to_markdown] block unspecified, shared, ULA and"
}
],
"source": "https://github.com/misp/misp-modules/commit/98a1c2c2f297665dd8d4609e9cd644007a57516b.patch",
"ssvc": {
"options": [
{
"Exploitation": "none"
},
{
"Automatable": "yes"
},
{
"Technical Impact": "partial"
}
],
"role": "Supplier",
"timestamp": "2026-10-19T22:15:01Z",
"version": "2.0.3"
},
"subject": "fix: [html_to_markdown] block unspecified, shared, ULA and",
"tagVersionBoundary": {
"commits_after_fix": 139,
"repository": "https://github.com/misp/misp-modules",
"tag": "v3.0.13",
"version": "3.0.13",
"version_type": "semver"
},
"weaknessRationale": [
{
"cweId": "CWE-918",
"rationale": "The html_to_markdown module fetches a user-supplied URL server-side. The incomplete IP range allow/block list permitted requests to internal, link-local, and otherwise restricted network destinations, constituting a classic SSRF."
},
{
"cweId": "CWE-20",
"rationale": "The is_safe_url() function\u0027s BLOCKED_RANGES list was incomplete, failing to validate against all non-routable and internally significant IP address ranges. This is the root-cause input validation deficiency enabling the SSRF."
}
]
}
},
"bcp-05-x-03": {
"x_timeline": {
"events": [
{
"description": "Corrective change authored (98a1c2c2f297665dd8d4609e9cd644007a57516b): fix: [html_to_markdown] block unspecified, shared, ULA and",
"id": "evt-fix-developed-1",
"references": [
"https://github.com/misp/misp-modules/commit/98a1c2c2f297665dd8d4609e9cd644007a57516b.patch"
],
"timestamp": "2026-09-25T22:15:46Z",
"type": "fix-developed"
}
]
}
}
},
"recordType": "advisory",
"vulnId": "GCVE-1-2026-20287"
}
],
"x_generator": {
"engine": "Vulnogram 0.2.0"
}
}
},
"cveMetadata": {
"assignerOrgId": "5a6e4751-2f3f-4070-9419-94fb35b644e8",
"assignerShortName": "CIRCL",
"cveId": "CVE-2026-112991",
"datePublished": "2026-10-19T22:19:50.011Z",
"dateReserved": "2026-10-19T22:19:44.187Z",
"dateUpdated": "2026-10-20T06:02:08.508Z",
"state": "PUBLISHED"
},
"dataType": "CVE_RECORD",
"dataVersion": "5.2"
}
CVE-2026-97863 (GCVE-0-2026-97863)
Vulnerability from cvelistv5 – Published: 2026-09-25 08:03 – Updated: 2026-09-25 13:19- CWE-78 - Improper Neutralization of Special Elements used in a Command ("Command Injection")
| URL | Tags |
|---|---|
| https://github.com/misp/misp-modules/commit/625b5… | patch |
| Vendor | Product | Version | |
|---|---|---|---|
| misp | misp-modules |
Affected:
0 , ≤ 3.0.10
(semver)
|
qwen3.8:27b
advisory
bcp-05-x-01bcp-05-x-02
Draft vulnerability metadata was generated from a git-format patch using an Ollama-hosted language model. Human validation is required before publication.
| Model | Source | Identifier |
|---|---|---|
| qwen3.8:27b | ollama | qwen3.8:27b |
- Generator
-
patch2vuln.pyon 2026-09-25 07:48 - Model
qwen3.8:27b- Input
-
https://github.com/elhoim/misp-modules/commit/625b54908efbd6acc8343aa3370d401dd370e748.patch
9c34349775d0… - Confidence
- high
| Commit | Subject | Patch SHA-256 |
|---|---|---|
625b54908efb
|
fix: [cisco_firesight_manager_ACL_rule_export] shell-escape | 9c34349775d0… |
Fix summary
All user-controlled and configuration values interpolated into the generated shell script are now passed through Python's shlex.quote() function, which produces a safely quoted string that cannot be broken out of by embedded shell metacharacters. For the JSON access-rule block that embeds multiple attribute values within a single shell assignment, the JSON content is first assembled as plain text and then the entire assembled string is shlex-quoted once, preventing stray quote characters from corrupting the outer quoting. The 'config' variable is now initialized to an empty dictionary before the conditional assignment, eliminating the NameError.
Patch summary
Added 'import shlex' at the top of the module. Replaced direct .format() interpolation of config values (fmc_ip_addr, fmc_login, fmc_pass, domain_id, acpolicy_id) with shlex.quote()-wrapped values. Refactored the BLOCK_JSON_TMPL to separate the JSON content template (BLOCK_JSON_CONTENT_TMPL) from the shell assignment template; the JSON content is formatted first with raw attribute values, then the resulting string is passed through shlex.quote() before being substituted into the shell assignment. Initialized 'config = {}' before the 'if "config" in request:' block to prevent NameError.
CVSS rationale
AV:N: The attacker submits crafted MISP attribute values over the network to a MISP instance. AC:L: Injecting a single-quote character into an attribute value is trivial and requires no race conditions or special timing. AT:N: No special data manipulation or prior access to the target system is needed beyond submitting an event. PR:L: The attacker needs only basic MISP user privileges to create or modify events/attributes. UI:A: The victim analyst must actively execute the generated .sh file for the injected commands to run. VC:N, VI:N, VA:N: The MISP instance itself is not directly compromised; the impact is on the downstream system where the script executes. SC:H: The injected commands can exfiltrate fireSIGHT Manager credentials and analyst system data. SI:H: Arbitrary command execution allows modification of ACL rules, system files, or other integrity-critical resources. SA:H: Injected commands can disrupt or destroy the analyst workstation or fireSIGHT Manager availability.
Weakness rationale
- CWE-78 The module constructs a shell script by interpolating untrusted values (MISP attribute values, configuration fields) into single-quoted shell strings without escaping. A single-quote character in any interpolated value breaks the quoting and allows arbitrary shell command injection. This is a textbook command injection via insufficient output encoding in a generated shell script.
Attack pattern rationale
- CAPEC-88 The attack pattern involves an attacker supplying input containing shell metacharacters (specifically a single quote) that is incorporated into a shell command or script without proper sanitization, resulting in execution of attacker-controlled commands. The patch confirms the vulnerable pattern: values are interpolated into single-quoted shell assignments, and the fix is to apply shlex.quote() to neutralize shell metacharacters. This is the closest and most specific CAPEC mapping for the observed vulnerability.
Assumptions to verify
- The CVSS UI metric is set to A (Active) because the victim analyst must deliberately execute the generated .sh file; CVSS v4.0 does not use the v3.x 'R' value.
- PR is set to L assuming the attacker holds a basic MISP user role sufficient to create or modify events and attributes; the patch does not specify exact role requirements.
- SC, SI, SA are rated H based on the potential for arbitrary command execution on the analyst workstation and the fireSIGHT Manager; actual impact depends on the analyst's local privileges and the fireSIGHT Manager's exposure.
- The CAPEC-88 mapping is the closest available pattern; the vulnerability is specifically an output-encoding failure in generated shell script rather than direct command-line injection, but CAPEC-88 is the narrowest defensible match.
- No specific affected or fixed version numbers are available from the patch metadata; the commit date (2026-08-31) is the only temporal anchor.
- The secondary NameError bug (config variable) is a minor denial-of-service issue included in the same patch but is not the primary security concern.
Model comparison
Selected qwen3.8:27b
by deterministic-consensus-v1
The selected result is closest to model consensus; this heuristic does not establish factual correctness and human review remains required.
| Model | Score | Agreement | Confidence | Assumptions |
|---|---|---|---|---|
qwen3.8:27b |
5 | 9 | high | 6 |
{
"containers": {
"adp": [
{
"metrics": [
{
"other": {
"content": {
"id": "CVE-2026-97863",
"options": [
{
"Exploitation": "none"
},
{
"Automatable": "no"
},
{
"Technical Impact": "partial"
}
],
"role": "CISA Coordinator",
"timestamp": "2026-09-25T13:18:10.409406Z",
"version": "2.0.3"
},
"type": "ssvc"
}
}
],
"providerMetadata": {
"dateUpdated": "2026-09-25T13:19:52.508Z",
"orgId": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
"shortName": "CISA-ADP"
},
"title": "CISA ADP Vulnrichment"
}
],
"cna": {
"affected": [
{
"collectionURL": "https://github.com/MISP/misp-modules",
"defaultStatus": "unaffected",
"modules": [
"cisco_firesight_manager_ACL_rule_export"
],
"product": "misp-modules",
"programFiles": [
"misp_modules/modules/export_mod/cisco_firesight_manager_ACL_rule_export.py"
],
"repo": "https://github.com/misp/misp-modules",
"vendor": "misp",
"versions": [
{
"lessThanOrEqual": "3.0.10",
"status": "affected",
"version": "0",
"versionType": "semver"
}
]
}
],
"credits": [
{
"lang": "en",
"type": "remediation developer",
"value": "elhoim"
},
{
"lang": "en",
"type": "remediation developer",
"value": "Claude Opus 5"
}
],
"descriptions": [
{
"lang": "en",
"supportingMedia": [
{
"base64": false,
"type": "text/html",
"value": "\u003cp\u003eThe cisco_firesight_manager_ACL_rule_export module in misp-modules generates a shell script (.sh) that authenticates to and calls the Cisco fireSIGHT Manager API. The module interpolates configuration values (IP address, login, password, domain ID, policy ID) and MISP attribute values (destination IPs, URLs, event info comments) directly into single-quoted shell string assignments without any escaping or sanitization. Because the values are placed inside single-quoted shell strings, any value containing a single-quote character (e.g., a crafted ip-dst or url attribute value submitted to MISP) breaks out of the quoting context, allowing an attacker to inject arbitrary shell commands into the exported script. A security analyst who subsequently executes the generated .sh file unmodified would run the injected commands with their own privileges, potentially exposing fireSIGHT Manager credentials, modifying ACL rules, or compromising the analyst workstation. Additionally, the module contained a secondary defect where the variable \u0027config\u0027 was only assigned inside a conditional block but referenced unconditionally afterward, causing a NameError (denial of service) when the request payload lacked a \u0027config\u0027 key. The vulnerability requires the attacker to have the ability to submit MISP events or attributes containing a single-quote character and the victim to execute the exported script. No authentication bypass is required beyond standard MISP event-submission privileges.\u003c/p\u003e"
}
],
"value": "The cisco_firesight_manager_ACL_rule_export module in misp-modules generates a shell script (.sh) that authenticates to and calls the Cisco fireSIGHT Manager API. The module interpolates configuration values (IP address, login, password, domain ID, policy ID) and MISP attribute values (destination IPs, URLs, event info comments) directly into single-quoted shell string assignments without any escaping or sanitization. Because the values are placed inside single-quoted shell strings, any value containing a single-quote character (e.g., a crafted ip-dst or url attribute value submitted to MISP) breaks out of the quoting context, allowing an attacker to inject arbitrary shell commands into the exported script. A security analyst who subsequently executes the generated .sh file unmodified would run the injected commands with their own privileges, potentially exposing fireSIGHT Manager credentials, modifying ACL rules, or compromising the analyst workstation. Additionally, the module contained a secondary defect where the variable \u0027config\u0027 was only assigned inside a conditional block but referenced unconditionally afterward, causing a NameError (denial of service) when the request payload lacked a \u0027config\u0027 key. The vulnerability requires the attacker to have the ability to submit MISP events or attributes containing a single-quote character and the victim to execute the exported script. No authentication bypass is required beyond standard MISP event-submission privileges."
}
],
"impacts": [
{
"capecId": "CAPEC-88",
"descriptions": [
{
"lang": "en",
"value": "CAPEC-88 Shell Command Injection"
}
]
}
],
"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": "HIGH",
"subConfidentialityImpact": "HIGH",
"subIntegrityImpact": "HIGH",
"userInteraction": "ACTIVE",
"valueDensity": "NOT_DEFINED",
"vectorString": "CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:A/VC:N/VI:N/VA:N/SC:H/SI:H/SA:H",
"version": "4.0",
"vulnAvailabilityImpact": "NONE",
"vulnConfidentialityImpact": "NONE",
"vulnIntegrityImpact": "NONE",
"vulnerabilityResponseEffort": "NOT_DEFINED"
},
"format": "CVSS",
"scenarios": [
{
"lang": "en",
"value": "GENERAL"
}
]
}
],
"problemTypes": [
{
"descriptions": [
{
"cweId": "CWE-78",
"description": "CWE-78 Improper Neutralization of Special Elements used in a Command (\"Command Injection\")",
"lang": "en",
"type": "CWE"
}
]
}
],
"providerMetadata": {
"dateUpdated": "2026-09-25T09:50:00.869Z",
"orgId": "5a6e4751-2f3f-4070-9419-94fb35b644e8",
"shortName": "CIRCL"
},
"references": [
{
"name": "Security patch",
"tags": [
"patch"
],
"url": "https://github.com/misp/misp-modules/commit/625b54908efbd6acc8343aa3370d401dd370e748"
}
],
"solutions": [
{
"lang": "en",
"supportingMedia": [
{
"base64": false,
"type": "text/html",
"value": "\u003cp\u003eAll user-controlled and configuration values interpolated into the generated shell script are now passed through Python\u0027s shlex.quote() function, which produces a safely quoted string that cannot be broken out of by embedded shell metacharacters. For the JSON access-rule block that embeds multiple attribute values within a single shell assignment, the JSON content is first assembled as plain text and then the entire assembled string is shlex-quoted once, preventing stray quote characters from corrupting the outer quoting. The \u0027config\u0027 variable is now initialized to an empty dictionary before the conditional assignment, eliminating the NameError.\u003c/p\u003e"
}
],
"value": "All user-controlled and configuration values interpolated into the generated shell script are now passed through Python\u0027s shlex.quote() function, which produces a safely quoted string that cannot be broken out of by embedded shell metacharacters. For the JSON access-rule block that embeds multiple attribute values within a single shell assignment, the JSON content is first assembled as plain text and then the entire assembled string is shlex-quoted once, preventing stray quote characters from corrupting the outer quoting. The \u0027config\u0027 variable is now initialized to an empty dictionary before the conditional assignment, eliminating the NameError."
}
],
"source": {
"discovery": "UNKNOWN"
},
"title": "misp-modules: Shell Command Injection in MISP cisco_firesight_manager_ACL_rule_export Module via Unescaped Attribute Values",
"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. Human validation is required before publication.",
"gna_source": 1,
"models": [
{
"gna_source": 1,
"identifier": "qwen3.8:27b",
"name": "qwen3.8:27b",
"source": "ollama"
}
],
"review_status": "none",
"scope": "record",
"tags": [
"ai-computer-assisted:llm-generated",
"ai-computer-assisted:classification"
]
}
]
},
"bcp-05-x-02": {
"x_patch2vuln": {
"assumptions": [
"The CVSS UI metric is set to A (Active) because the victim analyst must deliberately execute the generated .sh file; CVSS v4.0 does not use the v3.x \u0027R\u0027 value.",
"PR is set to L assuming the attacker holds a basic MISP user role sufficient to create or modify events and attributes; the patch does not specify exact role requirements.",
"SC, SI, SA are rated H based on the potential for arbitrary command execution on the analyst workstation and the fireSIGHT Manager; actual impact depends on the analyst\u0027s local privileges and the fireSIGHT Manager\u0027s exposure.",
"The CAPEC-88 mapping is the closest available pattern; the vulnerability is specifically an output-encoding failure in generated shell script rather than direct command-line injection, but CAPEC-88 is the narrowest defensible match.",
"No specific affected or fixed version numbers are available from the patch metadata; the commit date (2026-08-31) is the only temporal anchor.",
"The secondary NameError bug (config variable) is a minor denial-of-service issue included in the same patch but is not the primary security concern."
],
"capecRationale": [
{
"capecId": "CAPEC-88",
"rationale": "The attack pattern involves an attacker supplying input containing shell metacharacters (specifically a single quote) that is incorporated into a shell command or script without proper sanitization, resulting in execution of attacker-controlled commands. The patch confirms the vulnerable pattern: values are interpolated into single-quoted shell assignments, and the fix is to apply shlex.quote() to neutralize shell metacharacters. This is the closest and most specific CAPEC mapping for the observed vulnerability."
}
],
"commit": "625b54908efbd6acc8343aa3370d401dd370e748",
"confidence": "high",
"credits": [
{
"lang": "en",
"type": "remediation developer",
"value": "elhoim"
},
{
"lang": "en",
"type": "remediation developer",
"value": "Claude Opus 5"
}
],
"cvssRationale": "AV:N: The attacker submits crafted MISP attribute values over the network to a MISP instance. AC:L: Injecting a single-quote character into an attribute value is trivial and requires no race conditions or special timing. AT:N: No special data manipulation or prior access to the target system is needed beyond submitting an event. PR:L: The attacker needs only basic MISP user privileges to create or modify events/attributes. UI:A: The victim analyst must actively execute the generated .sh file for the injected commands to run. VC:N, VI:N, VA:N: The MISP instance itself is not directly compromised; the impact is on the downstream system where the script executes. SC:H: The injected commands can exfiltrate fireSIGHT Manager credentials and analyst system data. SI:H: Arbitrary command execution allows modification of ACL rules, system files, or other integrity-critical resources. SA:H: Injected commands can disrupt or destroy the analyst workstation or fireSIGHT Manager availability.",
"draft": false,
"fixSummary": "All user-controlled and configuration values interpolated into the generated shell script are now passed through Python\u0027s shlex.quote() function, which produces a safely quoted string that cannot be broken out of by embedded shell metacharacters. For the JSON access-rule block that embeds multiple attribute values within a single shell assignment, the JSON content is first assembled as plain text and then the entire assembled string is shlex-quoted once, preventing stray quote characters from corrupting the outer quoting. The \u0027config\u0027 variable is now initialized to an empty dictionary before the conditional assignment, eliminating the NameError.",
"generatedAt": "2026-09-25T07:48:15.163752Z",
"generator": "patch2vuln.py",
"model": "qwen3.8:27b",
"modelComparison": {
"rankings": [
{
"agreementScore": 9,
"assumptionCount": 6,
"confidence": "high",
"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": "9c34349775d058188a7b9a4d44ff873fd285faf0ddda00b46aadbaa72f3b4e6e",
"patchSummary": "Added \u0027import shlex\u0027 at the top of the module. Replaced direct .format() interpolation of config values (fmc_ip_addr, fmc_login, fmc_pass, domain_id, acpolicy_id) with shlex.quote()-wrapped values. Refactored the BLOCK_JSON_TMPL to separate the JSON content template (BLOCK_JSON_CONTENT_TMPL) from the shell assignment template; the JSON content is formatted first with raw attribute values, then the resulting string is passed through shlex.quote() before being substituted into the shell assignment. Initialized \u0027config = {}\u0027 before the \u0027if \"config\" in request:\u0027 block to prevent NameError.",
"patchTruncated": false,
"patches": [
{
"commit": "625b54908efbd6acc8343aa3370d401dd370e748",
"patchSha256": "9c34349775d058188a7b9a4d44ff873fd285faf0ddda00b46aadbaa72f3b4e6e",
"source": "https://github.com/elhoim/misp-modules/commit/625b54908efbd6acc8343aa3370d401dd370e748.patch",
"sourceUrl": "https://github.com/elhoim/misp-modules/commit/625b54908efbd6acc8343aa3370d401dd370e748.patch",
"subject": "fix: [cisco_firesight_manager_ACL_rule_export] shell-escape"
}
],
"source": "https://github.com/elhoim/misp-modules/commit/625b54908efbd6acc8343aa3370d401dd370e748.patch",
"subject": "fix: [cisco_firesight_manager_ACL_rule_export] shell-escape",
"weaknessRationale": [
{
"cweId": "CWE-78",
"rationale": "The module constructs a shell script by interpolating untrusted values (MISP attribute values, configuration fields) into single-quoted shell strings without escaping. A single-quote character in any interpolated value breaks the quoting and allows arbitrary shell command injection. This is a textbook command injection via insufficient output encoding in a generated shell script."
}
]
}
}
},
"recordType": "advisory",
"vulnId": "gcve-1-2026-20190"
}
],
"x_generator": {
"engine": "Vulnogram 0.2.0"
}
}
},
"cveMetadata": {
"assignerOrgId": "5a6e4751-2f3f-4070-9419-94fb35b644e8",
"assignerShortName": "CIRCL",
"cveId": "CVE-2026-97863",
"datePublished": "2026-09-25T08:03:24.441Z",
"dateReserved": "2026-09-25T08:02:32.714Z",
"dateUpdated": "2026-09-25T13:19:52.508Z",
"state": "PUBLISHED"
},
"dataType": "CVE_RECORD",
"dataVersion": "5.2"
}
CVE-2026-62143 (GCVE-0-2026-62143)
Vulnerability from cvelistv5 – Published: 2026-07-13 07:52 – Updated: 2026-07-14 14:32- CWE-918 - Server-Side Request Forgery (SSRF)
| URL | Tags |
|---|---|
| https://github.com/MISP/misp-modules/commit/3bae4… | patch |
| Vendor | Product | Version | |
|---|---|---|---|
| misp | misp-modules |
Affected:
0 , ≤ v3.0.8
(semver)
|
{
"containers": {
"adp": [
{
"metrics": [
{
"other": {
"content": {
"id": "CVE-2026-62143",
"options": [
{
"Exploitation": "none"
},
{
"Automatable": "no"
},
{
"Technical Impact": "partial"
}
],
"role": "CISA Coordinator",
"timestamp": "2026-07-14T14:16:43.435933Z",
"version": "2.0.3"
},
"type": "ssvc"
}
}
],
"providerMetadata": {
"dateUpdated": "2026-07-14T14:32:41.437Z",
"orgId": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
"shortName": "CISA-ADP"
},
"title": "CISA ADP Vulnrichment"
}
],
"cna": {
"affected": [
{
"defaultStatus": "unaffected",
"product": "misp-modules",
"repo": "https://github.com/MISP/misp-modules/",
"vendor": "misp",
"versions": [
{
"lessThanOrEqual": "v3.0.8",
"status": "affected",
"version": "0",
"versionType": "semver"
}
]
}
],
"credits": [
{
"lang": "en",
"type": "remediation developer",
"value": "Alexandre Dulaunoy"
},
{
"lang": "en",
"type": "finder",
"value": "George Chen"
}
],
"descriptions": [
{
"lang": "en",
"supportingMedia": [
{
"base64": false,
"type": "text/html",
"value": "\u003cp\u003eA Server-Side Request Forgery (SSRF) protection bypass existed in the \u003ccode\u003ehtml_to_markdown\u003c/code\u003e expansion module of \u003cstrong\u003emisp-modules\u003c/strong\u003e.\u003c/p\u003e\u003cp\u003eThe module attempts to prevent requests to loopback, private, link-local, and other restricted IP address ranges. However, IP addresses were compared against the blocked ranges without first normalising IPv4-mapped IPv6 addresses.\u003c/p\u003e\u003cp\u003eAn authenticated attacker able to invoke the module could supply an IPv4-mapped IPv6 address, such as:\u003c/p\u003e\u003cpre\u003e\u003ccode\u003ehttp://[::ffff:127.0.0.1]/\nhttp://[::ffff:169.254.169.254]/\u003c/code\u003e\u003c/pre\u003e\u003cp\u003eAlternatively, the attacker could use a hostname that resolves to an IPv4-mapped IPv6 address. These addresses were treated as IPv6 addresses and therefore did not match the corresponding blocked IPv4 ranges.\u003c/p\u003e\u003cp\u003eSuccessful exploitation could cause the misp-modules server to connect to services available through its loopback interface, internal network, or link-local network. This could expose internal web services, administrative interfaces, or cloud instance metadata, with retrieved content potentially returned to the attacker as converted Markdown.\u003c/p\u003e\u003cp\u003eThe vulnerability has been addressed by normalising IPv4-mapped IPv6 addresses to their underlying IPv4 representation before applying the blocked-range checks. URLs without a valid hostname are now also rejected.\u003c/p\u003e\u003ch2\u003e\u003c/h2\u003e\u003cbr\u003e"
}
],
"value": "A Server-Side Request Forgery (SSRF) protection bypass existed in the html_to_markdown expansion module of misp-modules.\n\nThe module attempts to prevent requests to loopback, private, link-local, and other restricted IP address ranges. However, IP addresses were compared against the blocked ranges without first normalising IPv4-mapped IPv6 addresses.\n\nAn authenticated attacker able to invoke the module could supply an IPv4-mapped IPv6 address, such as:\n\nhttp://[::ffff:127.0.0.1]/\nhttp://[::ffff:169.254.169.254]/\n\nAlternatively, the attacker could use a hostname that resolves to an IPv4-mapped IPv6 address. These addresses were treated as IPv6 addresses and therefore did not match the corresponding blocked IPv4 ranges.\n\nSuccessful exploitation could cause the misp-modules server to connect to services available through its loopback interface, internal network, or link-local network. This could expose internal web services, administrative interfaces, or cloud instance metadata, with retrieved content potentially returned to the attacker as converted Markdown.\n\nThe vulnerability has been addressed by normalising IPv4-mapped IPv6 addresses to their underlying IPv4 representation before applying the blocked-range checks. URLs without a valid hostname are now also rejected."
}
],
"impacts": [
{
"capecId": "CAPEC-101",
"descriptions": [
{
"lang": "en",
"value": "CAPEC-101 Server Side Include (SSI) Injection"
}
]
}
],
"metrics": [
{
"cvssV4_0": {
"Automatable": "YES",
"Recovery": "NOT_DEFINED",
"Safety": "NOT_DEFINED",
"attackComplexity": "LOW",
"attackRequirements": "NONE",
"attackVector": "NETWORK",
"baseScore": 8.3,
"baseSeverity": "HIGH",
"privilegesRequired": "LOW",
"providerUrgency": "GREEN",
"subAvailabilityImpact": "NONE",
"subConfidentialityImpact": "HIGH",
"subIntegrityImpact": "NONE",
"userInteraction": "NONE",
"valueDensity": "NOT_DEFINED",
"vectorString": "CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:N/VA:N/SC:H/SI:N/SA:N/AU:Y/RE:M/U:Green",
"version": "4.0",
"vulnAvailabilityImpact": "NONE",
"vulnConfidentialityImpact": "HIGH",
"vulnIntegrityImpact": "NONE",
"vulnerabilityResponseEffort": "MODERATE"
},
"format": "CVSS",
"scenarios": [
{
"lang": "en",
"value": "GENERAL"
}
]
},
{
"other": {
"content": {
"Automatable": "Yes",
"Exploitation": "None",
"Technical Impact": "Partial",
"Value Density": "Diffused",
"version": "2.0"
},
"type": "SSVCv2.0"
}
}
],
"problemTypes": [
{
"descriptions": [
{
"cweId": "CWE-918",
"description": "CWE-918 Server-Side Request Forgery (SSRF)",
"lang": "en",
"type": "CWE"
}
]
}
],
"providerMetadata": {
"dateUpdated": "2026-07-13T07:52:08.643Z",
"orgId": "5a6e4751-2f3f-4070-9419-94fb35b644e8",
"shortName": "CIRCL"
},
"references": [
{
"tags": [
"patch"
],
"url": "https://github.com/MISP/misp-modules/commit/3bae4108a3ba1e507727d5264697fd7303ba0b89"
}
],
"source": {
"discovery": "EXTERNAL"
},
"title": "Server-Side Request Forgery protection bypass in misp-modules html_to_markdown via IPv4-mapped IPv6 addresses",
"x_generator": {
"engine": "Vulnogram 0.2.0"
}
}
},
"cveMetadata": {
"assignerOrgId": "5a6e4751-2f3f-4070-9419-94fb35b644e8",
"assignerShortName": "CIRCL",
"cveId": "CVE-2026-62143",
"datePublished": "2026-07-13T07:52:08.643Z",
"dateReserved": "2026-07-13T07:52:02.284Z",
"dateUpdated": "2026-07-14T14:32:41.437Z",
"state": "PUBLISHED"
},
"dataType": "CVE_RECORD",
"dataVersion": "5.2"
}
CVE-2026-44363 (GCVE-0-2026-44363)
Vulnerability from cvelistv5 – Published: 2026-05-13 19:16 – Updated: 2026-05-14 12:31| URL | Tags |
|---|---|
| https://github.com/MISP/misp-modules/security/adv… | x_refsource_CONFIRM |
| https://github.com/MISP/misp-modules/commit/01a52… | x_refsource_MISC |
| Vendor | Product | Version | |
|---|---|---|---|
| MISP | misp-modules |
Affected:
< 3.0.7
|
{
"containers": {
"adp": [
{
"metrics": [
{
"other": {
"content": {
"id": "CVE-2026-44363",
"options": [
{
"Exploitation": "none"
},
{
"Automatable": "no"
},
{
"Technical Impact": "partial"
}
],
"role": "CISA Coordinator",
"timestamp": "2026-05-14T12:31:13.564809Z",
"version": "2.0.3"
},
"type": "ssvc"
}
}
],
"providerMetadata": {
"dateUpdated": "2026-05-14T12:31:25.989Z",
"orgId": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
"shortName": "CISA-ADP"
},
"title": "CISA ADP Vulnrichment"
}
],
"cna": {
"affected": [
{
"product": "misp-modules",
"vendor": "MISP",
"versions": [
{
"status": "affected",
"version": "\u003c 3.0.7"
}
]
}
],
"descriptions": [
{
"lang": "en",
"value": "MISP modules are autonomous modules that can be used to extend MISP for new services. Prior to 3.0.7, an unsafe remote resource fetching vulnerability existed in MISP Modules expansion modules. The html_to_markdown module accepted arbitrary HTTP(S) URLs without sufficient validation, which could allow Server-Side Request Forgery against loopback, private, or link-local network resources. Additionally, the qrcode module disabled TLS certificate verification when retrieving remote images, exposing requests to potential man-in-the-middle interception or response tampering. The issue was fixed by validating URL schemes, blocking local and private address ranges, resolving hostnames before fetching, enforcing request timeouts, and re-enabling TLS certificate verification. This vulnerability is fixed in 3.0.7."
}
],
"metrics": [
{
"cvssV4_0": {
"attackComplexity": "LOW",
"attackRequirements": "PRESENT",
"attackVector": "ADJACENT",
"baseScore": 5.8,
"baseSeverity": "MEDIUM",
"privilegesRequired": "NONE",
"subAvailabilityImpact": "HIGH",
"subConfidentialityImpact": "HIGH",
"subIntegrityImpact": "HIGH",
"userInteraction": "NONE",
"vectorString": "CVSS:4.0/AV:A/AC:L/AT:P/PR:N/UI:N/VC:L/VI:N/VA:N/SC:H/SI:H/SA:H",
"version": "4.0",
"vulnAvailabilityImpact": "NONE",
"vulnConfidentialityImpact": "LOW",
"vulnIntegrityImpact": "NONE"
}
}
],
"problemTypes": [
{
"descriptions": [
{
"cweId": "CWE-295",
"description": "CWE-295: Improper Certificate Validation",
"lang": "en",
"type": "CWE"
}
]
},
{
"descriptions": [
{
"cweId": "CWE-918",
"description": "CWE-918: Server-Side Request Forgery (SSRF)",
"lang": "en",
"type": "CWE"
}
]
}
],
"providerMetadata": {
"dateUpdated": "2026-05-13T19:16:59.579Z",
"orgId": "a0819718-46f1-4df5-94e2-005712e83aaa",
"shortName": "GitHub_M"
},
"references": [
{
"name": "https://github.com/MISP/misp-modules/security/advisories/GHSA-fhq3-2gf3-8f3j",
"tags": [
"x_refsource_CONFIRM"
],
"url": "https://github.com/MISP/misp-modules/security/advisories/GHSA-fhq3-2gf3-8f3j"
},
{
"name": "https://github.com/MISP/misp-modules/commit/01a522f2772fc31eeed379ccf23750c8a3d401db",
"tags": [
"x_refsource_MISC"
],
"url": "https://github.com/MISP/misp-modules/commit/01a522f2772fc31eeed379ccf23750c8a3d401db"
}
],
"source": {
"advisory": "GHSA-fhq3-2gf3-8f3j",
"discovery": "UNKNOWN"
},
"title": "Unsafe remote resource fetching in expansion misp-modules"
}
},
"cveMetadata": {
"assignerOrgId": "a0819718-46f1-4df5-94e2-005712e83aaa",
"assignerShortName": "GitHub_M",
"cveId": "CVE-2026-44363",
"datePublished": "2026-05-13T19:16:59.579Z",
"dateReserved": "2026-05-05T20:15:20.631Z",
"dateUpdated": "2026-05-14T12:31:25.989Z",
"state": "PUBLISHED"
},
"dataType": "CVE_RECORD",
"dataVersion": "5.2"
}
CVE-2026-44364 (GCVE-0-2026-44364)
Vulnerability from cvelistv5 – Published: 2026-05-13 19:15 – Updated: 2026-05-14 19:52- CWE-352 - Cross-Site Request Forgery (CSRF)
| URL | Tags |
|---|---|
| https://github.com/MISP/misp-modules/security/adv… | x_refsource_CONFIRM |
| Vendor | Product | Version | |
|---|---|---|---|
| MISP | misp-modules |
Affected:
<= 3.0.7
|
{
"containers": {
"adp": [
{
"metrics": [
{
"other": {
"content": {
"id": "CVE-2026-44364",
"options": [
{
"Exploitation": "none"
},
{
"Automatable": "no"
},
{
"Technical Impact": "total"
}
],
"role": "CISA Coordinator",
"timestamp": "2026-05-14T16:19:31.497132Z",
"version": "2.0.3"
},
"type": "ssvc"
}
}
],
"providerMetadata": {
"dateUpdated": "2026-05-14T19:52:33.469Z",
"orgId": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
"shortName": "CISA-ADP"
},
"title": "CISA ADP Vulnrichment"
}
],
"cna": {
"affected": [
{
"product": "misp-modules",
"vendor": "MISP",
"versions": [
{
"status": "affected",
"version": "\u003c= 3.0.7"
}
]
}
],
"descriptions": [
{
"lang": "en",
"value": "MISP modules are autonomous modules that can be used to extend MISP for new services. In 3.0.7 and earlier, a Cross-Site Request Forgery vulnerability in the MISP Modules website allowed an attacker to cause an authenticated user to submit unintended requests to the home endpoint. The vulnerability was due to the home blueprint being exempted from CSRF protection. This could allow modification of session query data in the context of the authenticated user. The issue was fixed by enabling CSRF protection for the affected blueprint and hardening query parsing."
}
],
"metrics": [
{
"cvssV4_0": {
"attackComplexity": "LOW",
"attackRequirements": "NONE",
"attackVector": "NETWORK",
"baseScore": 9.3,
"baseSeverity": "CRITICAL",
"privilegesRequired": "HIGH",
"subAvailabilityImpact": "HIGH",
"subConfidentialityImpact": "HIGH",
"subIntegrityImpact": "HIGH",
"userInteraction": "PASSIVE",
"vectorString": "CVSS:4.0/AV:N/AC:L/AT:N/PR:H/UI:P/VC:H/VI:H/VA:N/SC:H/SI:H/SA:H",
"version": "4.0",
"vulnAvailabilityImpact": "NONE",
"vulnConfidentialityImpact": "HIGH",
"vulnIntegrityImpact": "HIGH"
}
}
],
"problemTypes": [
{
"descriptions": [
{
"cweId": "CWE-352",
"description": "CWE-352: Cross-Site Request Forgery (CSRF)",
"lang": "en",
"type": "CWE"
}
]
}
],
"providerMetadata": {
"dateUpdated": "2026-05-13T19:15:03.368Z",
"orgId": "a0819718-46f1-4df5-94e2-005712e83aaa",
"shortName": "GitHub_M"
},
"references": [
{
"name": "https://github.com/MISP/misp-modules/security/advisories/GHSA-j4rh-7jcr-qm69",
"tags": [
"x_refsource_CONFIRM"
],
"url": "https://github.com/MISP/misp-modules/security/advisories/GHSA-j4rh-7jcr-qm69"
}
],
"source": {
"advisory": "GHSA-j4rh-7jcr-qm69",
"discovery": "UNKNOWN"
},
"title": "misp-modules website - Missing CSRF protection in the website home blueprint"
}
},
"cveMetadata": {
"assignerOrgId": "a0819718-46f1-4df5-94e2-005712e83aaa",
"assignerShortName": "GitHub_M",
"cveId": "CVE-2026-44364",
"datePublished": "2026-05-13T19:15:03.368Z",
"dateReserved": "2026-05-05T20:15:20.631Z",
"dateUpdated": "2026-05-14T19:52:33.469Z",
"state": "PUBLISHED"
},
"dataType": "CVE_RECORD",
"dataVersion": "5.2"
}