GHSA-c7jf-qcx9-xxf8: Improper session invalidation keeps removed or demoted members' open pages and device consoles working at their old role

Published Nov 10, 2026
·
Updated

Summary

Improper Session Invalidation vulnerability in the dashboard pages, device console and local shell channels in nerves-hub nerveshubweb allows an organization member who is removed or given a lower role to keep acting at their old role through anything they had open at the time. The dashboard reads the member's role once when a page mounts, in the assignorgtoscope hook of NervesHubWeb.Auth, and the console, local shell and device event stream channels check membership once at join. Removing a member or changing their role tells none of them, so open pages keep carrying out actions and open consoles keep running commands on the device until the page reloads or the socket disconnects.

The dashboard also opens consoles over NervesHubWeb.UserSocket with a token that holds only the user's id, is accepted for 24 hours, and is not revoked by signing out, which disconnects only the session's LiveViews. Whoever holds a token taken from a page can open consoles as that user, within the user's current membership, until it expires.

This issue affects nerveshub: from 1.0.0 before 2.5.3.

Proof of concept

1. In an organization, A is an admin and B has the manage role. B opens a device's page and its Console tab. 2. A removes B from the organization on the organization's Users page, or lowers B's role to view. 3. Without reloading, B's open page still carries out actions and B's console still accepts input, until B reloads the page or the socket disconnects. 4. For the socket token: while signed in, copy the data-user-token attribute of the #console element, sign out, and within 24 hours connect a Phoenix socket client to /socket/websocket with that token. Joining user:console:identifier-<device identifier> succeeds.

Impact

A member who is removed from an organization or given a lower role keeps their old access through whatever they had open at the time, including device consoles and local shells that run commands on the device, until the page reloads or the socket disconnects. Anyone holding the dashboard's socket token taken from a page can open consoles as that user, within that user's current permissions, for up to 24 hours after they sign out.

Workarounds

After removing a member or lowering their role, restart the web nodes. That closes every open page and console, and each one is checked again when it reconnects. A socket token cannot be revoked before it expires short of changing SECRETKEYBASE, which signs everyone out.

Affected Software

1 affected component
hex/nerves_hub>=1.0.0<2.5.3

Remediation

Recommended actions to resolve this vulnerability, in priority order.

  1. Upgrade

    Upgrade nerves_hub to a version that resolves this vulnerability.

    Fixed in 2.5.3
  2. Operational

    After removing a member or lowering their role, restart the web nodes to close open pages and consoles and force membership checks on reconnect.

  3. Operational

    Change SECRET_KEY_BASE to revoke socket tokens; this signs everyone out.

Event History

Nov 10, 2026
CVE Published
via OSV·10:43 AM
Data Sourced
via OSV·10:43 AM
DescriptionSeverityWeakness

Frequently Asked Questions

1

Which versions are affected?

The issue affects nerves_hub versions from 1.0.0 before 2.5.3.

2

What access does an attacker need to retain elevated capabilities?

The attacker must already be an organization member with an open dashboard page, device console, local shell, or device event-stream connection established while they still had the higher role. Removal or role reduction is not rechecked on those existing connections.

3

When does access through an already open page or console stop?

Stale dashboard privileges persist until the page reloads, and channel access persists until the socket disconnects. Open consoles can continue running commands on the device during that time.

4

Does signing out revoke console authentication tokens?

No. Signing out disconnects only the session's LiveViews; it does not revoke the UserSocket token used for consoles, which is accepted for 24 hours.

5

What is the impact if a UserSocket token is obtained from a page?

A holder of that token can open consoles as the associated user until the token expires. The console access is limited by that user's current organization membership.

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203