mediumVulnerability

GHSA-7cqp-7cfv-6c3q

### Summary The Meet plugin stores the raw HTTP `User-Agent` header of every meeting participant and later renders it without output encoding in the meeting-management ("Participants") panel that the meeting host and site administrators open. An anonymous, unauthenticated attacker can join any public meeting while sending a `User-Agent` header containing an HTML payload. The payload is persisted in `meet_join_log.user_agent` and, when the host or an administrator opens the participant list, is injected verbatim into their DOM, executing attacker-controlled JavaScript in a privileged, authenticated session. This is a cross-privilege stored XSS: an anonymous visitor obtains script execution in the administrator's browser. ### Affected versions `WWBN/AVideo` at current `master` commit `e8d6119f3cb1b849149906efeb0a41fc024f59f8` (and prior releases shipping the same code path). Not patched at the time of this report. ### Privilege required - **Writer (attacker):** unauthenticated / anonymous. Joining a public meeting requires no account and no password. - **Victim (trigger):** the meeting host or any site administrator who opens the meeting's participant-management panel. ### Vulnerable code (file:line) The stored value is never sanitized on write, then echoed without encoding on read. Write path — `plugin/Meet/Objects/Meet_join_log.php:147`: ```php public function setUser_agent($user_agent) { $this->user_agent = $user_agent; } ``` Write path — `plugin/Meet/Objects/Meet_join_log.php:177`: ```php public static function log($meet_schedule_id) { $log = new Meet_join_log(0); $log->setIp(getRealIpAddr()); $log->setMeet_schedule_id($meet_schedule_id); $log->setUser_agent((isMobile() ? "Mobile: " : "") . get_browser_name()); $log->setUsers_id(User::getId()); return $log->save(); } ``` `get_browser_name()` (`objects/functionsBrowser.php:239` and `:242`) returns the original-case `User-Age

Properties

ghsa_id
GHSA-7cqp-7cfv-6c3q
severity
medium
summary
AVideo Meet plugin: anonymous-to-admin stored XSS via unescaped participant User-Agent in getMeetInfo.json.php Participants panel
cve_id
GHSA-7cqp-7cfv-6c3q
is_ghsa_only
true
ghsa_published
2026-06-23T19:11:27Z
source_url
https://github.com/advisories/GHSA-7cqp-7cfv-6c3q
ghsa_updated
2026-06-23T20:41:56Z

Related Entities (4)

VULNERABLE_TO (1)

[Software]composer/wwbn/avideo

AFFECTS (1)

[Software]composer/wwbn/avideo

HAS_WEAKNESS (1)

[Weakness]Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting')

REPORTED_BY (1)

[Source]GitHub Advisory Database

Explore deeper with Ninja Signal's threat intelligence graph

GHSA-7cqp-7cfv-6c3q — Ninja Signal Threat Intelligence | Ninja Signal