Kaltura mwEmbed / html5lib Insecure Deserialization — CVE-2026-19913 & CVE-2026-19912
Executive Summary
CVE-2026-19913 (arbitrary file read) and CVE-2026-19912 (remote code execution) are two unpatched vulnerabilities in Kaltura's HTML5 player library — distributed as mwEmbed and also as html5lib — disclosed by CERT/CC as VU#308749 on 2026-08-25 (Original Release Date / Date Public / Date First Published, per the CERT/CC note itself) and covered by The Hacker News on 2026-08-26. Both flaws trace to the same root cause: the mwEmbedLoader.php endpoint accepts a user-controlled ServiceUrl parameter that Kaltura's KalturaClientBase PHP client fetches and passes directly to PHP's unserialize() — without validating scheme, source, or content.
CVE-2026-19913 abuses that flaw plus an error-handling bug: pointing ServiceUrl at a file:// path causes the client to fetch a local file and attempt to deserialize it; when deserialization fails, the raw file bytes are reflected back in the error message. Researcher Gerjan Wemekamp (AndDone) demonstrated escalating this to read /opt/kaltura/app/configurations/local.ini — which CERT/CC's advisory says can hold database credentials, admin/console passwords, and API keys. CVE-2026-19912 chains the same deserialization with insufficient sanitization of the uiconf_id parameter, which is appended unsanitized to the base cache-folder path when the application writes to disk: a uiconf_id containing ../ traversal sequences can redirect a malicious-serialized-object write into a web-accessible directory, and requesting that file directly executes it as the web-server user — full remote code execution, no authentication, no session token, network reachability only.
No patch exists. CERT/CC states it "was unable to reach Kaltura to coordinate these vulnerabilities." Both CVEs affect html5lib v2.45, v2.103, and earlier, plus other v2.x releases that expose the vulnerable mwEmbedLoader.php endpoint. Because the endpoint is also exposed on Kaltura's own shared, multi-tenant CDN infrastructure, CERT/CC notes the blast radius extends beyond individual self-hosted installs to every tenant served by those shared hosts. Neither CVE carried a CERT/CC-assigned CVSS score at publish time; the reporter self-scored CVE-2026-19912 at 10.0 and CVE-2026-19913 at 9.1 in his own technical writeup (reporter-assigned, not vendor- or CERT/CC-confirmed). Neither CVE appeared in the CISA KEV catalog as of 2026-08-25 per The Hacker News, and no confirmed in-the-wild exploitation has been reported — this pack treats it as a fresh, high-severity disclosure, not an active campaign.
Defender priority: until a patch ships, CERT/CC's own guidance is the fastest real mitigation: restrict or disable external access to mwEmbedLoader.php and enforce a strict allow-list on ServiceUrl that permits only known, legitimate backend API URLs and rejects non-HTTP(S) schemes. This pack ships behavioral, process/file/network-lineage CQL for the RCE half of the chain plus network/proxy-layer log queries for the file-read half — but the actual highest-confidence signal for CVE-2026-19913 (a request containing ServiceUrl=file://) and for the resulting exposure lives in web/proxy/WAF request logs, which are not default Falcon EDR sensor telemetry. If those logs are not ingested into a SIEM, your first real control is the network-layer restriction, not a detection query.
Source Review & Web Hunter Notes
Three sources were fetched directly (via curl) and snapshotted verbatim to Kaltura-mwEmbed-CVE-2026-19913-19912-Hunt-sources/. Every fact and behavioral indicator shipped in this pack traces to one of those three snapshots. A fourth optional corroboration source named in the task brief was not needed beyond the three fetched — all three returned HTTP 200 on the first attempt.
| Tier | Source | Key finding | Carry forward |
|---|---|---|---|
| 1 · CERT/CC | CERT/CC Vulnerability Note VU#308749 (fetched, saved as 01-cert-cc-vu308749.txt) | Authoritative technical description of both CVEs, affected versions, "unable to reach Kaltura" statement, mitigation guidance, reporter/writer credit, publish dates | Yes — primary basis for every technical fact in this pack |
| 2 · Press | The Hacker News — Unpatched Kaltura mwEmbed Flaws (fetched, saved as 02-thehackernews.txt) | Reporter (Gerjan Wemekamp / AndDone) technical detail: /opt/kaltura/app/configurations/local.ini exposure, deployment/uiconf/KalturaClientBase.php code-history analysis, reporter-assigned CVSS scores, six-step defender checklist, CISA KEV non-listing as of 2026-08-25, vendor-disclosure timeline (first report 2026-03-23 through CERT/CC notification 2026-07-08) | Yes — primary basis for the detection angle and hardening checklist |
| 2 · Mirror | Vista Net, Inc. — VU#308749 corroboration post (fetched, saved as 03-vistanet-corroboration.txt) | Verbatim republication of the CERT/CC advisory text (dated 2026-08-25) by a third-party MSP security blog | Partial — corroboration only, same underlying facts as CERT/CC |
Research notes and deliberate exclusions
- Date reconciliation: the task brief that seeded this pack described the CERT/CC disclosure date as 2026-08-26. The CERT/CC note itself states Original Release Date, Date Public, and Date First Published as 2026-08-25; The Hacker News' article carries a 2026-08-26 byline. This pack follows the source-verified 2026-08-25 CERT/CC publish date for the disclosure itself and treats 2026-08-26 as the date of THN's follow-on press coverage, rather than restating the brief's date uncritically.
- No atomic IOCs are shipped. This is a logic/deserialization vulnerability in first-party vendor code, not malware with attacker-controlled infrastructure, and no source reviewed reports in-the-wild exploitation. No file hashes, C2 domains, or IPv4 addresses are shipped — Section 4 and Section 10 reflect that honestly.
- No working exploit chain is reproduced. The vulnerability mechanism is described only at the depth needed for detection engineering. The researcher's own technical writeup (referenced by CERT/CC and named by The Hacker News as
anddone-git.github.io) was deliberately not fetched for this pack, since a step-by-step PoC write-up is out of scope for a defensive-only deliverable. - Reporter-assigned CVSS scores (10.0 / 9.1) are explicitly attributed as such, not presented as CERT/CC- or NVD-confirmed. Neither CVE had an NVD record as of 2026-08-25 per The Hacker News, which also reports NIST's April 2026 statement that it no longer enriches every CVE.
- Treat-as-data check: none of the three fetched pages contained text directed at the assistant (no "ignore previous instructions," no claimed authority, no embedded directives of any kind). All three were read and used purely as source data for this pack.
Hunt Brief & Attack Chain
Hunt hypotheses (ordered by fidelity)
| # | Hypothesis | MITRE | Telemetry | Conf |
|---|---|---|---|---|
| H1 | A request to mwEmbedLoader.php containing ServiceUrl=file:// is probing or exploiting CVE-2026-19913 | T1190, T1005 | Ingested Kaltura / reverse-proxy / WAF HTTP request logs | HIGH |
| H2 | A Kaltura web-server process (php-fpm/apache/httpd/nginx) spawns an unexpected interpreter or shell child after serving an mwEmbedLoader.php-style request | T1059.004 | ProcessRollup2 | MED |
| H3 | A new executable or script is written into a Kaltura cache path with a path-traversal or unusual uiconf_id-shaped filename — the documented CVE-2026-19912 write primitive | T1505.003 | NewExecutableWritten, ELFFileWritten | MED |
| H4 | A Kaltura web-server process makes an unusual outbound connection shortly after a cache-directory file write (webshell check-in pattern) | T1071 / T1041 | NetworkConnectIP4 | MED |
| H5 | A Kaltura web-server process resolves rare or first-seen domains | T1071.004 | DnsRequest | LOW |
| H6 | An anomalously large or 5xx response from mwEmbedLoader.php reflects local file content back to the requester (CVE-2026-19913 confirmation signal) | T1190, T1005 | Ingested Kaltura / reverse-proxy / WAF HTTP response logs | LOW |
Attack chain
| Step | Behavior | Telemetry | Hunt angle |
|---|---|---|---|
| 1 · Recon | Attacker identifies an internet-facing (or shared-CDN-hosted) Kaltura instance exposing mwEmbedLoader.php on an unpatched html5lib v2.x release (v2.45, v2.103, or earlier) | External attack-surface / version data | Playbook 1 (exposure check) |
| 2 · Initial access — file read (CVE-2026-19913) | Unauthenticated request sets ServiceUrl=file:// pointing at a local file (e.g. local.ini); deserialization fails and the raw bytes reflect back in the error response | Kaltura / reverse-proxy / WAF HTTP logs | Q1, Q6 |
| 3 · Credential harvest | Attacker extracts DB connection strings, admin/console passwords, partner secrets, and API keys from the reflected file content (per the researcher's demonstrated read of /opt/kaltura/app/configurations/local.ini) | Application/secret-access review | Containment runbook, Phase 4 |
| 4 · Initial access — RCE prep (CVE-2026-19912) | Attacker points ServiceUrl at attacker-hosted infrastructure serving a malicious serialized object containing executable PHP | Kaltura / reverse-proxy / WAF HTTP logs; possible outbound fetch from the web-server process | Q1, Q4 |
| 5 · Path-traversal write | A uiconf_id value containing ../ sequences redirects the deserialized-object write outside the intended cache directory into a web-accessible path | NewExecutableWritten / ELFFileWritten | Q3 |
| 6 · Execution | Attacker requests the dropped file directly; it executes as the web-server user — full RCE, no authentication | ProcessRollup2 (unexpected child of the web-server process) | Q2 |
| 7 · C2 / check-in | The resulting webshell process makes an outbound connection or resolves an attacker domain | NetworkConnectIP4, DnsRequest | Q4, Q5 |
| 8 · Impact | Modify or exfiltrate platform data; deploy persistence/lateral-movement tooling. Because the endpoint is also exposed on Kaltura's shared multi-tenant CDN, impact can extend to every tenant on shared hosts, not just the self-managed customer's own install | Environment-wide hunt sweep | Containment runbook, Phase 3 |
Consolidated IOC Table
CVE-2026-19913 and CVE-2026-19912 are vendor-code logic/deserialization flaws with no reported in-the-wild exploitation as of this pack's build date. No source reviewed publishes attacker infrastructure. The table below reflects that honestly — see Section 10 for the corresponding Behavioral Signatures quick-copy block.
| Type | Value | Conf | Action | Context |
|---|---|---|---|---|
| Vulnerable parameter | ServiceUrl (accepts a file:// path) | HIGH | hunt / allow-list | Primary exploitation vector for both CVEs — CERT/CC and THN confirmed |
| Vulnerable parameter | uiconf_id (accepts ../ traversal sequences) | HIGH | hunt / sanitize | Path-traversal write primitive for CVE-2026-19912 — CERT/CC and THN confirmed |
| Vulnerable endpoint | mwEmbedLoader.php | HIGH | restrict / allow-list | Shared entry point for both CVEs |
| Sensitive file path (example, confirmed reachable via CVE-2026-19913) | /opt/kaltura/app/configurations/local.ini | HIGH | rotate credentials / restrict | Per researcher's demonstrated read (THN); holds DB creds, admin/console passwords, API keys |
| Software version (vulnerable) | html5lib v2.45, v2.103, and earlier v2.x releases exposing mwEmbedLoader.php | HIGH | enrich | Version-audit target — see Playbook 1 |
| CVE identifiers | CVE-2026-19913 (file read), CVE-2026-19912 (RCE) — CERT/CC VU#308749 | HIGH | enrich | Reference / vulnerability-management tracking |
| File hash | (none published) | — | — | No malware payload is associated with either CVE; no ITW exploitation reported |
| Domain / C2 | (none published) | — | — | No attacker-controlled infrastructure has been published |
| IPv4 / IPv6 | (none published) | — | — | No attacker-controlled infrastructure has been published |
Affected Surface & Telemetry Matrix
| Surface | Required telemetry | Priority | Gap risk |
|---|---|---|---|
Kaltura / mwEmbed / html5lib deployments (self-managed or embedded) exposing mwEmbedLoader.php to the internet, running v2.x ≤ 2.45/2.103 or an unaudited later v2.x build | Kaltura / reverse-proxy / WAF HTTP request & response logs (ingested to a SIEM) | CRITICAL | HIGH — this is the actual exploitation surface and it is NOT default Falcon EDR telemetry |
| Kaltura's own shared, multi-tenant CDN-hosted infrastructure | Same as above, but ingestion is under the vendor's/CDN operator's control, not the tenant's | CRITICAL | HIGH — tenants on shared hosts have no visibility or control of their own; escalate to CDN operator |
| Kaltura web-server / application host (php-fpm, apache/httpd, nginx worker processes) | ProcessRollup2, SyntheticProcessRollup2, NewExecutableWritten, ELFFileWritten | HIGH | Medium — only detects the RCE half (CVE-2026-19912) once execution occurs; the file-read half (CVE-2026-19913) leaves no endpoint trace by itself |
| Kaltura web-server network egress | NetworkConnectIP4, DnsRequest | MEDIUM | Medium — high baseline noise from legitimate CDN/media-transcoding integrations |
Configuration/secrets store (local.ini and equivalent) | File-integrity monitoring / access auditing (non-Falcon) | CRITICAL | High — no source reviewed indicates FIM coverage is typical for this file by default |
ATT&CK Mapping
| Tactic | Technique | Observed behavior | Query / control |
|---|---|---|---|
| Initial Access | T1190 — Exploit Public-Facing Application | Unauthenticated request to mwEmbedLoader.php with a crafted ServiceUrl or uiconf_id | Q1 · restrict endpoint + allow-list (Section 12) |
| Collection | T1005 — Data from Local System | Local file (e.g. local.ini) fetched via ServiceUrl=file:// and reflected in an error message | Q1, Q6 |
| Credential Access | T1552.001 — Unsecured Credentials: Credentials In Files | DB connection strings, admin/console passwords, API keys recovered from a reflected configuration file | Hardening: credential rotation (Section 12, Near term); Containment runbook Phase 4 |
| Execution | T1059.004 — Unix Shell | Interpreter or shell spawned by a Kaltura web-server process following exploitation | Q2 |
| Persistence | T1505.003 — Web Shell | Malicious deserialized PHP payload written into a web-accessible path via uiconf_id traversal, then executed directly — the documented CVE-2026-19912 mechanism | Q3 |
| Command and Control | T1071 / T1041 — Application Layer Protocol & Exfiltration Over C2 Channel | Unusual outbound connection from the web-server host following a cache-directory write (inferred check-in pattern) | Q4 |
| Command and Control (inferred) | T1071.004 — DNS | Rare/first-seen domain resolution from the web-server host | Q5 |
| Impact (downstream) | T1565.001 / T1486-adjacent — Data manipulation / further compromise | Modification or exfiltration of platform data, deployment of persistence/lateral-movement tooling after RCE, potentially across every tenant on a shared multi-tenant host | Containment runbook (Section 14) |
Native Audit-Log Hunts
The highest-confidence evidence for the file-read half of this chain lives in web/proxy/WAF logs, not EDR telemetry. Run these in parallel with, and ahead of, the CQL hunts in Section 8.
- Kaltura / PHP-FPM / Apache / nginx access log — grep or SIEM-search for the literal string
ServiceUrl=file(fanged or percent-encoded,file%3A%2F%2F) in requests tomwEmbedLoader.php, especially from source IPs with no prior legitimate session. - Same access log — grep for
uiconf_idparameter values containing../,..%2f, or an absolute path (leading/). - Web-server error log — unusually large or malformed deserialization-failure error responses from
mwEmbedLoader.php; these are the mechanism by which CVE-2026-19913 reflects file content. - File-integrity monitoring on
local.iniand equivalent config files — unexpected reads (if FIM/audit logging is available) or, more practically, treat any suspected exposure as requiring full credential rotation regardless of confirmed read (Section 14). - Cache-directory listing review — periodically diff the Kaltura cache directory tree against a known-good baseline; any
.phpfile appearing outside expected cache-object naming, or any path containing traversal-shaped fragments, is consistent with the CVE-2026-19912 write primitive. - Software/version inventory — reconcile every Kaltura / mwEmbed / html5lib deployment against the affected-version list (v2.45, v2.103, and earlier v2.x). See Playbook 1.
- Cache-backend configuration review — confirm whether the deployment uses the default file-based cache backend (vulnerable to the CVE-2026-19912 write-then-execute chain) or a memcache-only backend (per CERT/CC, this may suppress the specific file-write RCE path, though the underlying deserialization and unsanitized path construction remain present regardless).
CrowdStrike LogScale CQL Hunt Queries
Looks for: the literal ServiceUrl=file:// parameter (fanged or percent-encoded) in requests to mwEmbedLoader.php — the primary exploitation indicator for CVE-2026-19913 and the initial-access step for CVE-2026-19912. Requires non-default telemetry: Kaltura / reverse-proxy / WAF HTTP request logs ingested into Falcon Next-Gen SIEM as a custom log source. The endpoint sensor does not capture inbound HTTP request query strings to a web application, so this query returns nothing on a tenant relying on EDR telemetry alone. FP: your own post-disclosure validation traffic or an authorized vulnerability scan will also match.
// HUNT: ServiceUrl=file:// parameter abuse against mwEmbedLoader.php // MITRE: T1190, T1005 // CONF: high | FP: low | COST: medium // REQUIRES: Kaltura / reverse-proxy / WAF HTTP request logs (with query string) ingested into Falcon NG-SIEM as a custom log source -- NOT default Falcon EDR sensor telemetry // FALSE POSITIVES: your own patch-validation/exposure-check test traffic (see Playbook 1); an authorized vulnerability scanner probing the same parameter // TUNING: exclude known scanner source IPs and your own exposure-check test requests once identified // FIELD NOTE: field names below (host, src_ip, http_user_agent, url, method, status, raw) are generic NG-SIEM / third-party log conventions -- validate the exact field names against YOUR tenant's log-source parser before relying on this query "ServiceUrl=file://" OR "ServiceUrl=file%3A%2F%2F" | url=/mwEmbedLoader\.php/i | table([@timestamp, host, src_ip, http_user_agent, url, method, status, raw])
Looks for: a shell or scripting interpreter spawned by a Kaltura web-server process (php-fpm/php-cgi/apache2/httpd/nginx). This is the execution step (step 6) of the attack chain, after a webshell has already been dropped via CVE-2026-19912. FP: Kaltura's own batch/cron jobs, log rotation, and ImageMagick/ffmpeg media-processing helpers legitimately shell out from these same parent processes.
// HUNT: Interpreter or shell spawned by a Kaltura web-server process // MITRE: T1190, T1059.004 // CONF: medium | FP: medium | COST: low // REQUIRES: ProcessRollup2, SyntheticProcessRollup2 on Kaltura web-server / application host(s) // FALSE POSITIVES: legitimate Kaltura batch/cron jobs, log rotation, and ImageMagick/ffmpeg media-processing helpers shelling out from the same parent processes // TUNING: baseline your own Kaltura batch/cron and media-transcoding child processes first and exclude them by CommandLine before promoting #event_simpleName=/^(ProcessRollup2|SyntheticProcessRollup2)$/ | ParentBaseFileName=/^(php-fpm[0-9.]*|php-cgi|apache2|httpd|nginx|caddy)(\.exe)?$/i | FileName=/^(bash|dash|zsh|sh|python[0-9.]*|perl|nc|ncat|socat|curl|wget)(\.exe)?$/i | table([@timestamp, ComputerName, UserName, ParentBaseFileName, FileName, CommandLine])
Looks for: a new executable or script written by a Kaltura web-server process into a path containing traversal sequences or an unusual uiconf_id-shaped cache path — the exact write primitive CERT/CC and The Hacker News describe for CVE-2026-19912. This is the most directly-documented endpoint signal in this pack for the RCE half of the chain. FP: legitimate Kaltura cache-warming, thumbnail-generation, and asset-compilation jobs write new files under the same cache tree during normal operation.
// HUNT: New executable/script written into a Kaltura cache path with a path-traversal or unusual uiconf_id-shaped filename // MITRE: T1505.003, T1190 // CONF: medium | FP: medium | COST: low // REQUIRES: NewExecutableWritten, ELFFileWritten on Kaltura web-server / application host(s) // FALSE POSITIVES: legitimate Kaltura cache-warming, thumbnail-generation, and asset-compilation jobs writing new files under the same cache tree // TUNING: exclude writes occurring inside a known Kaltura maintenance/deploy window (correlate against your change calendar) and known-good cache-object naming patterns #event_simpleName=/^(NewExecutableWritten|ELFFileWritten)$/ | ContextBaseFileName=/^(php-fpm[0-9.]*|php-cgi|apache2|httpd|nginx)(\.exe)?$/i | TargetFileName=/(\.\.\/|\/cache\/.*uiconf)/i | table([@timestamp, ComputerName, ContextBaseFileName, TargetFileName])
Looks for: outbound connections from Kaltura web-server processes to non-RFC1918 addresses, grouped for triage — a general webshell check-in pattern to pivot from a Q3 hit. FP: Kaltura's own CDN sync, notification webhooks, license/update checks, and media-transcoding fetches all legitimately leave the app server — expect a noisy baseline until tuned.
// HUNT: Unusual outbound connection from a Kaltura web-server process // MITRE: T1071, T1041 // CONF: medium | FP: high | COST: medium // REQUIRES: NetworkConnectIP4 on Kaltura web-server / application host(s) // FALSE POSITIVES: Kaltura's own CDN sync, notification webhooks, license/update checks, and outbound media-transcoding fetches // TUNING: exclude your known Kaltura SaaS/CDN integrations (webhook endpoints, license server, transcoding fetch targets) by RemoteAddressIP4/RemotePort before alerting #event_simpleName=/^NetworkConnectIP4$/ | ContextBaseFileName=/^(php-fpm[0-9.]*|php-cgi|apache2|httpd|nginx)(\.exe)?$/i | !cidr(RemoteAddressIP4, subnet=["10.0.0.0/8","172.16.0.0/12","192.168.0.0/16"]) | groupBy([ComputerName, ContextBaseFileName, RemoteAddressIP4, RemotePort], function=count()) | sort(_count, order=desc)
Looks for: low-frequency domain resolutions from Kaltura web-server processes — a weak beaconing signal, not a confirmatory one. FP: package-manager mirrors, CDN endpoints, and one-off admin troubleshooting all produce low-count domains.
// HUNT: Rare or first-seen DNS resolution from a Kaltura web-server process // MITRE: T1071.004 // CONF: low | FP: high | COST: medium // REQUIRES: DnsRequest on Kaltura web-server / application host(s) // FALSE POSITIVES: package-manager mirrors, CDN endpoints, one-off admin troubleshooting // TUNING: raise the _count threshold and add an allowlist for your CDN/package mirrors before treating hits as actionable #event_simpleName=/^DnsRequest$/ | ContextBaseFileName=/^(php-fpm[0-9.]*|php-cgi|apache2|httpd|nginx)(\.exe)?$/i | groupBy([ComputerName, DomainName], function=count()) | test(_count <= 3) | sort(_count, order=asc)
Looks for: 5xx error responses from mwEmbedLoader.php — the response class produced when the deserialization-failure error path (the CVE-2026-19913 mechanism) fires and reflects file content back. This is a weak, high-recall/low-precision signal on its own; pivot any hit against Q1 for the same source IP/window before treating it as confirmatory. Requires non-default telemetry: same as Q1. FP: ordinary application errors unrelated to this CVE.
// HUNT: Anomalous 5xx response from mwEmbedLoader.php (possible local-file-content reflection) // MITRE: T1190, T1005 // CONF: low | FP: medium | COST: medium // REQUIRES: Kaltura / reverse-proxy / WAF HTTP response logs (status code + response size) ingested into Falcon NG-SIEM as a custom log source -- NOT default Falcon EDR sensor telemetry // FALSE POSITIVES: ordinary application errors on the same endpoint unrelated to this CVE (misconfiguration, upstream timeouts, unrelated bad requests) // TUNING: baseline your own instance's normal mwEmbedLoader.php 5xx rate for 7+ days before alerting; correlate hits against Q1 on the same src_ip/window rather than alerting on this alone // FIELD NOTE: field names below (host, url, status, response_size, raw) are generic NG-SIEM / third-party log conventions -- validate the exact field names against YOUR tenant's log-source parser before relying on this query url=/mwEmbedLoader\.php/i | status=/^5\d\d$/ | table([@timestamp, host, url, status, response_size, raw])
CrowdStrike Custom IOA Recommendations
No query in this pack is a clean Block-mode Custom IOA candidate. Q1 and Q6 are log queries (Falcon Next-Gen SIEM Scheduled Search), not sensor-based behavior — Custom IOAs are endpoint-sensor rules and do not apply to ingested HTTP logs. Q2 and Q3 have workable confidence but medium FP from legitimate Kaltura internals; Q4 and Q5 carry high FP and are investigate-only.
| Query | Promotion path | Action | Notes |
|---|---|---|---|
| Q1 | Falcon Next-Gen SIEM Scheduled Search (not a Custom IOA) | Alert (detect) | Primary alerting mechanism for this pack — requires Kaltura/proxy/WAF request-log ingestion first |
| Q2 | Custom IOA — Monitor mode only | Monitor | Baseline for 1–2 weeks against your own Kaltura batch/media-processing child-process patterns before considering Alert mode |
| Q3 | Custom IOA — Monitor mode only | Monitor | Most directly-documented endpoint signal for the RCE half; correlate against your cache-warming/deploy calendar before promoting |
| Q4, Q5 | Investigate-only | Hunt | High FP — not promotion candidates at this time; use as pivots from a Q2/Q3 hit |
| Q6 | Falcon Next-Gen SIEM Scheduled Search (not a Custom IOA) | Hunt | Low confidence alone — correlate against Q1 before promoting to alert |
Alert email package — Q1 (primary detection)
Scheduled Search name: DETECT — Kaltura mwEmbedLoader.php ServiceUrl=file:// Abuse (CVE-2026-19913 / CVE-2026-19912)
Description: Fires when the literal parameter ServiceUrl=file:// (fanged or percent-encoded) appears in ingested Kaltura, reverse-proxy, or WAF HTTP request logs against mwEmbedLoader.php — the primary indicator of a probe or active exploitation attempt against the unauthenticated, unpatched CVE-2026-19913/CVE-2026-19912 deserialization chain.
Alert email subject: [CRITICAL] Detection: Kaltura CVE-2026-19913/19912 — ServiceUrl=file:// observed against mwEmbedLoader.php
Alert email body:
------------------------------------------------------------
A request containing "ServiceUrl=file://" was observed against
mwEmbedLoader.php on {{ host }} from source {{ src_ip }} at {{ @timestamp }}.
This string is the primary exploitation indicator for CVE-2026-19913
(unauthenticated arbitrary file read) and the shared entry point for
CVE-2026-19912 (unauthenticated RCE) in Kaltura's mwEmbed / html5lib
player library. NO PATCH IS AVAILABLE. CERT/CC (VU#308749) states it
was unable to reach Kaltura to coordinate these vulnerabilities.
IMMEDIATE ACTIONS:
1. Confirm whether external access to mwEmbedLoader.php is currently
restricted (Playbook 2). If not, restrict it NOW -- this is the
single most effective control available with no vendor patch.
2. Check web-server error logs around this timestamp for large or
malformed deserialization-failure responses (Q6) that would
indicate a file was actually reflected back to the requester.
3. Treat this instance's local.ini (and equivalent secrets files) as
POSSIBLY EXPOSED regardless of confirmed read -- begin credential
rotation (Playbook / Containment runbook Phase 4).
4. Pull the same host's process telemetry (Q2, Q3) for the following
24h for signs the attacker progressed to the CVE-2026-19912 RCE
chain (cache-directory write, then execution).
5. Do NOT assume a single request is "just a scan" -- this endpoint
requires no authentication and no user interaction to exploit.
ESCALATION: Platform/Infra on-call -> Security IR lead if step 4 finds
any corresponding process or file-write hit.
------------------------------------------------------------
Triage checklist
- Confirm the alerting request actually targeted
mwEmbedLoader.phpand thatServiceUrlgenuinely carries afile://(or percent-encoded equivalent) value, not an unrelated field that happens to contain the string. - Identify the source IP — is it a known vulnerability scanner or your own exposure-check tooling (Playbook 1)? If so, close as benign and add to the Q1 TUNING exclusion.
- Check whether external access to
mwEmbedLoader.phpis currently restricted (Playbook 2/3). If not, this is a live exposure regardless of whether this specific request succeeded. - Pull Q6 for the same host/window — a 5xx response alongside the Q1 hit raises confidence that content was actually reflected.
- Pull Q2 and Q3 for the same
ComputerNameover the following 24 hours to check for progression to the CVE-2026-19912 RCE chain. - If any progression indicator is found, escalate to Security IR immediately — this is a confirmed exploitation attempt, not a probe.
- Regardless of confirmed impact, begin the local.ini (and equivalent secrets) rotation checklist (Section 10, audit block) — the file-read primitive leaves no reliable endpoint trace of what was actually read.
- Restrict
mwEmbedLoader.phpand enforce theServiceUrlallow-list immediately if not already done (Playbooks 2/3).
Pivot queries
Host-scoped: re-run Q2 and Q3 scoped to the same ComputerName as the alerting Kaltura instance, over the 24 hours following the Q1 hit, to check for progression to the documented RCE chain.
Environment-wide: run Q1 across all ingested Kaltura instances for the last 30 days (extend the console time picker) to check for earlier, previously undetected probing that predates this alert.
IOC blocklist entries: not applicable — this vulnerability class has no published atomic indicators to block (see Section 4).
Hunt package — Q3 (investigate-only, secondary)
Q3's medium FP means it should not alert unattended. Run it manually against any host that also produced a Q1 hit, or periodically as a hygiene sweep against your cache-directory tree. Pivot: correlate any hit against Q2 (same host/window) — a webshell-style file write alongside an unexpected shell child materially raises confidence over either signal alone.
Machine-Readable IOC Appendix
# CVE-2026-19913 and CVE-2026-19912 are logic/deserialization flaws in # first-party Kaltura code, not malware with attacker-controlled # infrastructure. No file hashes, C2 domains, or IPv4 addresses have been # published by any source reviewed for this pack, and no in-the-wild # exploitation has been reported -- shipping fabricated atomic IOCs here # would fail this pack's own provenance gate. # # Track the vulnerability instead by: # CVE IDs: CVE-2026-19913 (file read), CVE-2026-19912 (RCE) # CERT/CC ID: VU#308749 # Reporter scores: 10.0 (RCE) / 9.1 (file read) -- reporter-assigned, # not CERT/CC- or NVD-confirmed # Affected: html5lib v2.45, v2.103, and earlier v2.x releases # exposing mwEmbedLoader.php # # If your own incident response later recovers attacker infrastructure # (source IPs, follow-on payload hashes, etc.) from a CONFIRMED # compromise, add rows here in standard # type,value,action,severity,expiration,description,tags form and re-run # check_ioc_provenance.py against a newly saved source snapshot.
# CVE-2026-19913 / CVE-2026-19912 behavioral signatures (no atomic IOC form) # Exploitation indicators (request-layer) Parameter string in request: ServiceUrl=file:// (or file%3A%2F%2F) Parameter values containing traversal: uiconf_id=..%2f.. / uiconf_id=../.. Target endpoint: mwEmbedLoader.php Requires: NO authentication, NO session token, network reachability only # Response-layer signal Anomalous 5xx / oversized error response from mwEmbedLoader.php (possible local-file-content reflection) # Endpoint/process chain (RCE half, CVE-2026-19912) Kaltura web-server process (php-fpm/php-cgi/apache2/httpd/nginx) spawning bash/dash/zsh/sh/python/perl/nc/ncat/socat/curl/wget New executable or script written under a Kaltura cache path containing ../ traversal sequences or an unusual uiconf_id-shaped filename Outbound connection or DNS resolution from the web-server process shortly after such a write (webshell check-in pattern) # Sensitive file example (from researcher's demonstrated read, per THN) /opt/kaltura/app/configurations/local.ini
CVE (file read): CVE-2026-19913 -- reporter-scored 9.1 (not CERT/CC-confirmed)
CVE (RCE): CVE-2026-19912 -- reporter-scored 10.0 (not CERT/CC-confirmed)
CERT/CC ID: VU#308749 -- Original Release / Date Public / Date First
Published: 2026-08-25
Vendor: Kaltura -- product: mwEmbed player library, also
distributed as html5lib
Affected: html5lib v2.45, v2.103, and earlier v2.x releases
exposing mwEmbedLoader.php
Patch status: NONE AVAILABLE -- CERT/CC states it was unable to
reach Kaltura to coordinate
Reporter: Gerjan Wemekamp (AndDone)
Vendor status: Unknown -- no statement received (per CERT/CC vendor table)
KEV status: Not listed in CISA KEV as of 2026-08-25 (per The
Hacker News); not independently re-verified for this
pack -- validate directly before citing KEV status
Vulnerable file: deployment/uiconf/KalturaClientBase.php (unserialize()
call site, per The Hacker News' code-history analysis)
# Exposure and hardening audit -- run against every Kaltura / mwEmbed /
# html5lib deployment
[ ] Confirm html5lib version and whether mwEmbedLoader.php is reachable
externally (Playbook 1)
[ ] If reachable and unpatched: restrict/disable external access to
mwEmbedLoader.php NOW (Playbook 2)
[ ] Confirm a ServiceUrl allow-list is enforced, rejecting non-HTTP(S)
schemes (file://, php://, etc.) (Playbook 3)
[ ] Confirm uiconf_id values containing traversal sequences or absolute
paths are rejected at the edge (Playbook 4)
[ ] Confirm the cache directory denies PHP execution (Playbook 4)
[ ] Confirm outbound network access from the application server is
restricted to known-necessary destinations
[ ] Rotate everything in local.ini (and equivalent) where the endpoint
has been externally exposed: DB credentials, admin/console
passwords, partner secrets, API keys
[ ] Confirm whether the cache backend is file-based (vulnerable to the
CVE-2026-19912 write-then-execute path) or memcache-only
Import note: this pack ships no rows for Falcon IOC Management by design (see the CSV block above). The importable content here is procedural (exposure/hardening audit) and behavioral, not atomic threat infrastructure.
Detection Validation Gates
Gate 1 — Telemetry ready
- Q1 and Q6 require log ingestion that most tenants do not have by default. Before treating a zero-hit Q1 result as "clean," confirm Kaltura/reverse-proxy/WAF request-and-response logs are actually flowing into Falcon NG-SIEM (or wherever Q1/Q6 run) — a zero-hit result against an empty log source is not a clean bill of health, it's a blind spot.
- Confirm
ProcessRollup2/SyntheticProcessRollup2andNewExecutableWritten/ELFFileWrittenare populated for your Kaltura web-server host(s) specifically (typically Linux hosts, not just Windows fleet defaults). - Confirm
NetworkConnectIP4/DnsRequestcoverage on the same host set before relying on Q4/Q5.
Gate 2 — Benign baseline
- Run Q2, Q3, Q4, and Q5 over 7 days with no exclusions and record hit counts before promoting any to Monitor mode. Expect Q4 and Q5 to be noisy — that noise is the baseline you tune against, not a false alarm to dismiss.
- Q1 and Q6 should return zero in a clean environment absent scanning activity; a non-zero baseline needs individual triage (Section 9 triage checklist), not blanket suppression.
Gate 3 — Positive tests
- In a non-production log source, submit a benign test log line containing the literal string
ServiceUrl=file://against a syntheticmwEmbedLoader.phpURL and confirm Q1 fires end-to-end (ingestion → search → alert). Do not send this against a live, reachable Kaltura instance — inject the test event directly into the log pipeline. - On a lab host, manually spawn a shell from a process named like one of the Q2 parent patterns (e.g. a test script invoked as
php-fpm) and confirm Q2 fires; clean up afterward.
Gate 4 — Promotion criteria
- Q1 promotes to an active Scheduled Search alert only after Gate 1 (telemetry confirmed present) and Gate 3 (positive test fired) both pass.
- Q2/Q3 promote from Monitor to Alert only after 7+ days at a stable, explained baseline (Gate 2) with your Kaltura-internal exclusions applied.
- Do not promote Q4, Q5, or Q6 to alerting in this release — they remain investigate-only pending environment-specific tuning and correlation with Q1/Q2/Q3.
Hardening — Tiered
- Restrict or disable external access to
mwEmbedLoader.phpat the WAF, reverse proxy, or CDN wherever legacy mwEmbed players are not being actively served to the public internet (MITRE M1037 — Filter Network Traffic / M1042 — Disable or Remove Feature or Program; CERT/CC's own primary mitigation). This is the single highest-leverage control with no vendor patch available. Deploy with Playbook 2. - Enforce a strict allow-list on
ServiceUrl, permitting only the deployment's own known backend API host(s) and rejecting any non-HTTP(S) scheme (file://,php://,gopher://, etc.) (MITRE M1037; CERT/CC's second primary mitigation). Deploy with Playbook 3. - Rotate every credential in
local.iniand equivalent configuration files on any instance that has had external access tomwEmbedLoader.php(MITRE M1027-adjacent — no formal CIS benchmark for this Kaltura-specific control — ⚠ best-practice, no formal benchmark). Treat as possibly exposed regardless of confirmed read; the file-read primitive leaves no reliable endpoint trace of what was actually accessed.
- Reject
uiconf_idvalues containing traversal sequences, absolute paths, or directory separators at the WAF/reverse proxy as a compensating control (MITRE M1038 — Execution Prevention / M1037). See Playbook 4. Retire once a vendor patch lands and is deployed. - Deny PHP execution inside cache directories at the web-server config level, breaking the CVE-2026-19912 write-then-execute chain even if a malicious file is written (MITRE M1038 — Execution Prevention). See Playbook 4.
- Ingest Kaltura/reverse-proxy/WAF request-and-response logs into your SIEM (MITRE M1047 — Audit; no formal CIS benchmark for this Kaltura-specific control — ⚠ best-practice, no formal benchmark). This is a hard prerequisite for Q1/Q6 in Section 8 and for the native hunts in Section 7 — without it, the file-read half of this vulnerability class is effectively invisible to your detection stack.
- Restrict outbound network access from the Kaltura application server to only known-necessary destinations (MITRE M1030 — Network Segmentation). Reduces the practical utility of a dropped webshell even if execution succeeds.
- Migrate to a memcache-only cache backend where operationally feasible — per CERT/CC, this may suppress the specific CVE-2026-19912 file-write RCE path (though the underlying unsafe deserialization and unsanitized path construction remain present). ⚠ best-practice, no formal benchmark
- Establish a formal patch-cadence / vendor-escalation SLA for Kaltura security advisories, including an internal decision point for when to fully disable the affected component if a vendor remains unreachable (as CERT/CC reports here). ⚠ best-practice, no formal benchmark
- Push the shared-CDN exposure question to your Kaltura account/CDN contact — because the vulnerable endpoint is also exposed on Kaltura's own shared, multi-tenant CDN infrastructure per CERT/CC, tenant-side mitigations alone cannot close that exposure; escalate for a vendor-side commitment (MITRE M1030, vendor-dependent).
Deployable Playbooks
1 — Exposure & vulnerable-file audit (shell, read-only, no exploit payload)
# Reachability check ONLY -- no ServiceUrl / uiconf_id payload is sent.
# Confirms whether the endpoint answers at all; does not probe the flaw.
curl -s -o /dev/null -w "%{http_code}\n" \
"https://REPLACE_WITH_KALTURA_HOST/REPLACE_WITH_MWEMBED_PATH/mwEmbedLoader.php"
# On the Kaltura host itself -- confirm the vulnerable client library file
# is present and note its version context (read-only; no code is modified).
grep -n "unserialize(" REPLACE_WITH_KALTURA_ROOT/deployment/uiconf/KalturaClientBase.php
# Confirm the html5lib / mwEmbed component version against the affected list:
# Affected: v2.45, v2.103, and earlier v2.x releases exposing mwEmbedLoader.php
grep -ri "version" REPLACE_WITH_KALTURA_ROOT/REPLACE_WITH_HTML5LIB_PATH/*.json 2>/dev/null
Prerequisites: network line-of-sight to the endpoint for the reachability check; SSH/read access to the Kaltura host for the file checks. Reboot required: no (read-only checks). Rollback: none required — this playbook sends no exploit payload and modifies nothing.
2 — Restrict external access to mwEmbedLoader.php (nginx, reverse proxy)
# /etc/nginx/conf.d/kaltura-mwembedloader-restrict.conf
# Place inside (or alongside) the existing Kaltura/reverse-proxy server block,
# then reload. Adjust the allowed ranges to your actual internal/CI/CD needs.
location ~* /mwEmbedLoader\.php$ {
allow 10.0.0.0/8;
allow 172.16.0.0/12;
deny all;
}
sudo nginx -t && sudo nginx -s reload
Prerequisites: nginx (or equivalent reverse proxy) terminating in front of the Kaltura deployment; admin access to edit its config. Reboot required: no. Rollback: remove the location ~* /mwEmbedLoader\.php$ block from the config file, then run sudo nginx -t && sudo nginx -s reload again. Note: if the player is actively served to the public internet, disabling this path may break embedded video playback for external viewers until a patch or a scoped allow-list (Playbook 3) is in place.
3 — ServiceUrl allow-list, reject non-HTTP(S) schemes (ModSecurity example)
# /etc/modsecurity.d/kaltura-cve-2026-19913-servicurl-allowlist.conf
# Rejects any ServiceUrl value that is not http:// or https:// pointed at
# the deployment's own known API host. Adjust REPLACE_WITH_KALTURA_API_HOST
# to your environment's actual backend API hostname.
SecRule ARGS:ServiceUrl "!@rx ^https?://REPLACE_WITH_KALTURA_API_HOST/" \
"id:1000019913,phase:2,deny,log,msg:'Blocked disallowed ServiceUrl value (CVE-2026-19913/19912 compensating control)'"
sudo apachectl configtest && sudo systemctl reload apache2 # or, for an nginx+ModSecurity install: sudo nginx -t && sudo nginx -s reload
Prerequisites: ModSecurity (or an equivalent WAF engine) in the request path in front of Kaltura, with request-parameter inspection enabled. Reboot required: no (WAF config reload only). Rollback: remove or disable rule id 1000019913 and reload the WAF engine. This is a temporary compensating control — retire it once a vendor patch is available and deployed.
4 — Reject uiconf_id traversal and deny PHP execution in cache directories
# /etc/modsecurity.d/kaltura-cve-2026-19912-uiconfid-traversal.conf
SecRule ARGS:uiconf_id "@rx (\.\.[\\/]|^[\\/]|%2e%2e)" \
"id:1000019912,phase:2,deny,log,msg:'Blocked uiconf_id path traversal attempt (CVE-2026-19912 compensating control)'"
# nginx: deny PHP execution inside the Kaltura cache directory tree so
# even a successfully-planted file cannot be executed. Adjust the path
# to your actual cache root.
location ~* ^/REPLACE_WITH_KALTURA_CACHE_PATH/.*\.php$ {
deny all;
return 403;
}
sudo apachectl configtest && sudo systemctl reload apache2 sudo nginx -t && sudo nginx -s reload
Prerequisites: ModSecurity (or equivalent WAF) for the uiconf_id rule; nginx (or equivalent) location-block support for the cache-directory PHP-execution denial; admin access to both. Reboot required: no (config reload only). Rollback: remove rule id 1000019912 and the cache-directory location block, then reload both services. Test the cache-directory denial in a staging environment first — confirm no legitimate cache path legitimately requires PHP execution before deploying to production.
Containment Runbook
| Phase | Actions | Owner | Evidence to capture |
|---|---|---|---|
| 1 · Isolate 0–1 h | Restrict or temporarily disable external access to mwEmbedLoader.php at the edge (Playbook 2) on the affected instance while investigating. Do not take the instance fully offline unless active RCE is confirmed in progress. | Infra/Platform on-call | Firewall/WAF change ticket, timestamp, Q1 alert detail |
| 2 · Confirm 0–2 h | Verify html5lib/mwEmbed version (Playbook 1). Pull Q6 and web-server error logs for the suspected window; confirm whether a large/malformed deserialization-failure response actually reflected file content. | Security IR | Version-check output, exported error-log entries, affected instance list |
| 3 · Scope 1–4 h | Enumerate every Kaltura/mwEmbed/html5lib deployment in the environment, including shared-CDN-hosted instances; re-run Playbook 1 and the Section 10 audit checklist against each. Run Q1 environment-wide over the last 30 days. | Threat hunting | Instance inventory, version audit results, Q1 hit list |
| 4 · Eradicate 2–24 h | Rotate every credential in local.ini and equivalent secrets files on any exposed instance: database connection strings, admin/console passwords, partner secrets, API keys. Remove any file matching the Q3 webshell-drop pattern found during scoping. Restrict mwEmbedLoader.php and deploy the Playbook 3/4 compensating controls on every affected instance. | Platform eng. + Security IR | Credential-rotation log, removed-file inventory, config-change record |
| 5 · Recover 1–3 d | Re-verify application/database integrity on any instance where RCE was confirmed (Q2/Q3 hits with corresponding execution). Confirm no additional persistence mechanisms were established (scheduled tasks, cron entries, additional web-accessible scripts). | Platform eng. | Integrity-check results, persistence-sweep results |
| 6 · Notify 1–5 d | If the affected instance is on Kaltura's shared multi-tenant CDN infrastructure, notify the Kaltura/CDN account contact — per CERT/CC, exposure there can extend beyond your own tenant. If customer or partner data was reachable, follow your organization's breach-notification process. | IR lead + vendor management | Notification record, vendor correspondence |
| 7 · Harden 1–4 w | Execute the Section 12 Immediate and Near-term tiers across the full Kaltura fleet, not just the affected instance. Track vendor patch availability and apply it as soon as CERT/CC or Kaltura publishes one. | Security eng. | Change records, log-ingestion confirmation, patch-tracking ticket |
Detection Coverage Map
| Technique | Behavior | CQL | IOA | Coverage |
|---|---|---|---|---|
| T1190 | Unauthenticated request to mwEmbedLoader.php with crafted ServiceUrl/uiconf_id | Q1 | — (SIEM alert, not IOA) | PARTIAL — correct query, but requires log ingestion most tenants lack by default |
| T1005 | Local file content reflected via failed deserialization error message | Q1, Q6 | — | GAP — no Falcon EDR telemetry for the read itself; Q6 is a weak downstream response-layer signal only |
| T1552.001 | Credentials recovered from a reflected config file (e.g. local.ini) | — | — | GAP — not detectable by telemetry; addressed only by proactive rotation (Section 12, Section 14) |
| T1059.004 | Interpreter/shell spawned by a Kaltura web-server process | Q2 | Monitor-only | PARTIAL — medium FP, fires only after execution has already begun |
| T1505.003 | Webshell written into a cache path via uiconf_id traversal | Q3 | Monitor-only | PARTIAL — the most directly-documented endpoint signal in this pack, still medium FP |
| T1071 / T1041 | Unusual outbound connection from web-server process | Q4 | — | PARTIAL — high FP, needs environment-specific tuning |
| T1071.004 | Rare DNS resolution from web-server process | Q5 | — | PARTIAL — weak signal, high FP |
| Impact (downstream) | Data modification/exfiltration, persistence, lateral movement after RCE, potential multi-tenant blast radius on shared CDN hosts | — | — | GAP — addressed only by hardening controls and containment (Sections 12, 14), not detection |
This pack's most important honesty point is here: the file-read half of this vulnerability class (CVE-2026-19913, T1005/T1552.001) has essentially zero Falcon EDR coverage, because it is a network-request-and-response-layer flaw, not an endpoint compromise, until an attacker progresses to the RCE half. Detection depends entirely on ingesting Kaltura/proxy/WAF logs into a SIEM (Q1, Q6). The endpoint-telemetry queries (Q2–Q5) cover the documented CVE-2026-19912 RCE chain once execution has already begun — they are not early-warning for the file-read primitive by themselves. Clear Gate 1 in Section 11 — especially the log-ingestion prerequisite — before treating a zero-hit Q1 result as a clean bill of health.
Hunt Summary Ticket
TITLE: Hunt -- CVE-2026-19913 / CVE-2026-19912 Kaltura mwEmbed / html5lib
unauthenticated file read + RCE (ServiceUrl / uiconf_id abuse)
SEVERITY: Critical (unpatched, unauthenticated, no auth/session required).
No confirmed in-the-wild exploitation reported as of pack build
date. No vendor patch available -- CERT/CC could not reach
Kaltura to coordinate.
SCOPE: Every Kaltura / mwEmbed / html5lib deployment exposing
mwEmbedLoader.php, including instances on Kaltura's shared
multi-tenant CDN infrastructure. Affected: html5lib v2.45,
v2.103, and earlier v2.x releases.
HYPOTHESIS: An unauthenticated attacker sent a crafted request to
mwEmbedLoader.php setting ServiceUrl=file:// to read local
files (CVE-2026-19913, e.g. local.ini credentials), and/or set
ServiceUrl to attacker-hosted malicious serialized PHP plus a
uiconf_id containing traversal sequences to write and execute
a webshell in a web-accessible cache path (CVE-2026-19912) --
all without any credentials or user interaction.
QUERIES: Q1 ServiceUrl=file:// abuse against mwEmbedLoader.php
<-- PRIMARY SIGNAL, requires non-default log ingestion
Q2 Interpreter/shell spawned by a Kaltura web-server process
Q3 New executable/script written into Kaltura cache path
<-- most directly-documented RCE endpoint signal
Q4 Unusual outbound connection from a Kaltura web-server process
Q5 Rare/first-seen DNS resolution from a Kaltura web-server process
Q6 Anomalous 5xx response from mwEmbedLoader.php
DO FIRST: 1. Run Playbook 1 (exposure check) against every Kaltura
deployment. Restrict mwEmbedLoader.php externally
(Playbook 2) wherever it is reachable and not required.
2. Deploy the ServiceUrl allow-list (Playbook 3) and the
uiconf_id traversal block / cache PHP-execution denial
(Playbook 4) as compensating controls -- no patch exists.
3. Confirm whether Kaltura/proxy/WAF request-and-response
logs are being retained or ingested (Section 11, Gate 1)
-- if not, Q1/Q6 are blind and Section 7's native hunts
are your only detection path for the file-read half.
FINDINGS: [ ] Instances inventoried and version-confirmed .............. ____
[ ] Instances with mwEmbedLoader.php externally reachable .... ____
[ ] Q1 hits (log-based) ................................... ____
[ ] Q2/Q3 hits (endpoint, RCE progression) ................ ____
[ ] local.ini / secrets rotated on exposed instances ....... ____
GAPS: The file-read half of this vulnerability class (CVE-2026-19913)
has essentially NO Falcon EDR coverage -- it is visible only
in Kaltura's own request/response logs (Q1, Q6), and Q6 is a
weak signal on its own. No atomic IOCs exist to ship; no
confirmed ITW exploitation exists to reference. The
researcher's own PoC writeup was deliberately not fetched or
reproduced for this pack.
ACTIONS: [ ] Restrict mwEmbedLoader.php externally (playbook 2)
[ ] Deploy ServiceUrl allow-list (playbook 3)
[ ] Deploy uiconf_id traversal block + cache PHP-exec denial (playbook 4)
[ ] Rotate local.ini / equivalent secrets on exposed instances
[ ] Ingest Kaltura/proxy/WAF logs into the SIEM (Section 12, Near term)
[ ] Track vendor patch availability
OWNER: ____________________
VERSION: v0.1 (2026-08-27)
Changelog
References
| Tier | Source | Used for | Published | Accessed |
|---|---|---|---|---|
| 1 | CERT/CC — Vulnerability Note VU#308749 | Authoritative technical description, affected versions, mitigation guidance, "unable to reach Kaltura" statement | 2026-08-25 | 2026-08-27 |
| 2 | The Hacker News — Unpatched Kaltura mwEmbed Flaws Could Let Remote Attackers Read Files and Run Code | Researcher technical detail, local.ini path, reporter-assigned CVSS scores, defender checklist, KEV/NVD status, disclosure timeline | 2026-08-26 | 2026-08-27 |
| 2 | Vista Net, Inc. — VU#308749 corroboration post | Third-party corroboration of the CERT/CC advisory text | 2026-08-25 | 2026-08-27 |
| Ref | MITRE ATT&CK | Technique and mitigation mapping | — | 2026-08-27 |
Provenance: the fetched text of all three sources is saved alongside this pack in Kaltura-mwEmbed-CVE-2026-19913-19912-Hunt-sources/. This pack ships no atomic file/network IOCs, so the provenance gate (check_ioc_provenance.py) has nothing to trace and passes vacuously — every factual claim in this pack is nonetheless attributable to one of the three numbered sources above.
Unresolved gaps: neither CVE had a CERT/CC- or NVD-assigned CVSS score as of the sources fetched for this pack (reporter self-scored only). CISA KEV listing status was reported by The Hacker News as "not listed as of 2026-08-25" but was not independently re-fetched from cisa.gov for this pack — validate directly at cisa.gov/known-exploited-vulnerabilities-catalog before citing KEV status in a customer-facing document. The researcher's own technical writeup (referenced by CERT/CC, named by The Hacker News as hosted at anddone-git.github.io) was deliberately not fetched, since this pack is defensive-only and out of scope for reproducing exploit detail.