Lightspeed Classroom Management Weak Authentication / Device Takeover — CVE-2026-30368
by truekas (PoC packaging); underlying research by incognitotgt · 2026-07-05
- Severity
- High
- CVE
- CVE-2026-30368
- Category
- web
- Affected product
- Lightspeed Classroom Management (Chrome extension for school device management)
- Affected versions
- Tested against extension build 5.1.2.1763770643 (now patched — vendor requires credentials, per repo)
- Disclosed
- 2026-07-05
- Patch status
- unpatched
Tags
References
Archive entry
intelseclab/poc-archiveMetadata
| Field | Value |
|---|---|
| Date Added | 2026-07-05 |
| Last Updated | 2026-04 |
| Author / Researcher | truekas (PoC packaging); underlying research by incognitotgt |
| CVE / Advisory | CVE-2026-30368 |
| Category | web |
| Severity | High |
| CVSS Score | Not specified in source |
| Status | PoC |
| Tags | chrome-extension, wasm, jwt, ably, service-worker, education-technology, device-control, browser |
| Related | N/A |
Affected Target
| Field | Value |
|---|---|
| Software / System | Lightspeed Classroom Management (Chrome extension for school device management) |
| Versions Affected | Tested against extension build 5.1.2.1763770643 (now patched — vendor requires credentials, per repo) |
| Language / Platform | JavaScript / WebAssembly (Chrome extension service worker), Node.js (PoC runtime) |
| Authentication Required | No (prior to patch); patched version requires credentials |
| Network Access Required | Yes |
Summary
Lightspeed Classroom Management is a Chrome extension used by schools to monitor and remotely control student Chromebooks. The extension’s service worker (running classroom.wasm) generates a JWT used to obtain a token for Lightspeed’s Ably real-time channel, which is the transport used to send remote commands to student devices. This PoC runs the extension’s service worker and WASM module outside the browser (in Node.js), intercepts and extracts the JWT it generates, exchanges it for an Ably channel token via the Lightspeed API, and then uses that channel to send arbitrary commands to a target student device — without ever needing legitimate district credentials at the time this was found. The vendor has since patched the flow to require credentials.
Workaround for the patched version
Because the vulnerability is now patched and requires credentials, the repository documents a workaround limited to performing actions against the researcher’s own account/device only.
Vulnerability Details
Root Cause
Weak/insufficient authentication binding between the extension’s locally-generated JWT (produced by classroom.wasm) and the actual authorization required to control a specific student device via the Ably real-time channel, allowing the token-issuance flow to be replayed/extracted outside its intended browser-extension context.
Attack Vector
- Extract
worker.js,classroom.wasm, andmanifest.jsonfrom a legitimately installed Lightspeed Classroom extension (from the Chrome profile’s extensions directory or via the extension update URL). - Deobfuscate/unminify
worker.js(e.g. via webcrack) and patch it to run under Node.js, adding hooks (valueCallBefore/valueCallAfter) to intercept calls the WASM runtime makes into the browser environment. - Stub out
chrome.runtime.getPlatformInfo,chrome.identity.getProfileUserInfo, and forceIsClassroomActive()to always returntrue, allowing the worker to run outside a real Chromebook/campus network. - Run
wasm-loader.js/poc.jsto execute the worker, extract the JWT it produces, then kill the worker and exchange the JWT with Lightspeed’s API for an Ably channel token (oauth-poc.js). - Use the Ably channel token to send remote-control commands to the target student device (documented separately in the referenced write-up).
Impact
Unauthorized remote control of student Chromebook devices managed by Lightspeed Classroom, including arbitrary commands supported by the classroom-management channel protocol.
Environment / Lab Setup
Target: A Lightspeed Classroom-managed Chromebook / district tenant (build 5.1.2.1763770643)
Attacker: Node.js, webcrack (deobfuscation), extracted worker.js + classroom.wasm + manifest.json
(not included in this PoC — must be obtained from a legitimate extension install)
Proof of Concept
PoC Script
See
poc.js,wasm-loader.js,wasm-only.js,oauth-poc.js,workers/run-worker.js, andautodiddy.htmlin this folder.
| |
wasm-only.js is the simplest entry point: it loads classroom.wasm directly and connects to the target’s Ably channel once given an email/customer ID. The full wasm-loader.js + patched worker.js path additionally extracts the JWT from the real extension service worker for use against arbitrary tenants.
Detection & Indicators of Compromise
Signs of compromise:
- Classroom control commands received by student devices with no corresponding teacher-console session
- Ably API token requests using extension-issued JWTs from non-standard client environments
- Unexpected
IsClassroomActivevalues or platform-info responses inconsistent with a real Chromebook
Remediation
| Action | Detail |
|---|---|
| Primary fix | Vendor has patched the flow to require credentials (per source repository); ensure the Lightspeed extension is updated to the patched build |
| Interim mitigation | Restrict distribution/extraction of the extension’s worker.js/classroom.wasm, and monitor Ably channel usage for anomalous client fingerprints |
References
Notes
Mirrored from https://github.com/truekas/ls-poc on 2026-07-05. The upstream repository notes the flow is already patched by the vendor and now requires credentials; it documents a workaround limited to performing actions on the researcher’s own account/device, and does not include the proprietary worker.js/classroom.wasm/manifest.json files needed to run the full chain (partial-dependency PoC).
| |