CVE-2026-120999 (GCVE-0-2026-120999)

Vulnerability from cvelistv5 – Published: 2026-11-10 10:43 – Updated: 2026-11-10 10:43
VLAI
Title
Improper authentication lets Google sign-in and confirmation links sign users in to accounts registered with their email address by someone else
Summary
Improper Authentication vulnerability in Google sign-in and email confirmation in nerves-hub nerves_hub_web allows an attacker who registers another person's email address to share that person's account once they sign in. NervesHub.Accounts.update_or_create_user_from_ueberauth/1 signs a Google user in to any account carrying the same email that is not yet linked to a Google account, links it and marks the email confirmed, without the account's owner ever having proved they own the address. NervesHubWeb.SessionController.confirm/2 likewise signs in whoever follows a confirmation link. An attacker registers the address from the sign-up form, changes their own account's email to it, or registers it as an organization admin from an invite link, and keeps the password; when the address's owner signs in with Google or follows the confirmation link, they land in that account. The Google path also creates accounts with registrations closed and never checks Google's email_verified claim, and the API's password sign-in in NervesHubWeb.API.UserController issues tokens to accounts whose email was never confirmed. The attacker gains only what the victim is granted afterwards, and nothing on accounts whose owners never use either path. This issue affects nerves_hub: from 2.3.0 before 2.5.3.
CWE
  • CWE-287 - Improper Authentication
  • CWE-345 - Insufficient Verification of Data Authenticity
Assigner
EEF CNA
Impacted products
Vendor Product Version
nerves-hub nerves_hub_web Affected: 2.3.0 , < 2.5.3 (other)
    cpe:2.3:a:nerves-hub:nerves_hub_web:*:*:*:*:*:*:*:*
Create a notification for this product.
nerves-hub nerves_hub_web Affected: 2.3.0 , < 2.5.3 (semver)
    cpe:2.3:a:nerves-hub:nerves_hub_web:*:*:*:*:*:*:*:*
Create a notification for this product.
nerves-hub nerves_hub_web Affected: 74982672ab914bd6f37c3bc0e24a06e3474fa030 , < 54dbf93c3bd323df08223a853c9afcf0b4dbf8e4 (git)
    cpe:2.3:a:nerves-hub:nerves_hub_web:*:*:*:*:*:*:*:*
Create a notification for this product.
Show details on NVD website

{
  "containers": {
    "cna": {
      "affected": [
        {
          "collectionURL": "https://ghcr.io",
          "cpes": [
            "cpe:2.3:a:nerves-hub:nerves_hub_web:*:*:*:*:*:*:*:*"
          ],
          "defaultStatus": "unaffected",
          "modules": [
            "\u0027Elixir.NervesHub.Accounts\u0027",
            "\u0027Elixir.NervesHub.Accounts.User\u0027",
            "\u0027Elixir.NervesHubWeb.SessionController\u0027",
            "\u0027Elixir.NervesHubWeb.API.UserController\u0027",
            "\u0027Elixir.NervesHubWeb.Live.Account\u0027",
            "\u0027Elixir.NervesHubWeb.AccountController\u0027"
          ],
          "packageName": "nerves-hub/nerves-hub",
          "packageURL": "pkg:oci/nerves-hub?repository_url=ghcr.io%2Fnerves-hub",
          "product": "nerves_hub_web",
          "programFiles": [
            "lib/nerves_hub/accounts.ex",
            "lib/nerves_hub/accounts/user.ex",
            "lib/nerves_hub_web/controllers/session_controller.ex",
            "lib/nerves_hub_web/controllers/api/user_controller.ex",
            "lib/nerves_hub_web/live/account.ex",
            "lib/nerves_hub_web/controllers/account_controller.ex"
          ],
          "programRoutines": [
            {
              "name": "\u0027Elixir.NervesHub.Accounts\u0027:update_or_create_user_from_ueberauth/1"
            },
            {
              "name": "\u0027Elixir.NervesHub.Accounts\u0027:authenticate/2"
            },
            {
              "name": "\u0027Elixir.NervesHub.Accounts.User\u0027:oauth_changeset/3"
            },
            {
              "name": "\u0027Elixir.NervesHubWeb.SessionController\u0027:confirm/2"
            },
            {
              "name": "\u0027Elixir.NervesHubWeb.API.UserController\u0027:auth/2"
            },
            {
              "name": "\u0027Elixir.NervesHubWeb.API.UserController\u0027:login/2"
            }
          ],
          "vendor": "nerves-hub",
          "versions": [
            {
              "lessThan": "2.5.3",
              "status": "affected",
              "version": "2.3.0",
              "versionType": "other"
            }
          ]
        },
        {
          "cpes": [
            "cpe:2.3:a:nerves-hub:nerves_hub_web:*:*:*:*:*:*:*:*"
          ],
          "defaultStatus": "unaffected",
          "modules": [
            "\u0027Elixir.NervesHub.Accounts\u0027",
            "\u0027Elixir.NervesHub.Accounts.User\u0027",
            "\u0027Elixir.NervesHubWeb.SessionController\u0027",
            "\u0027Elixir.NervesHubWeb.API.UserController\u0027",
            "\u0027Elixir.NervesHubWeb.Live.Account\u0027",
            "\u0027Elixir.NervesHubWeb.AccountController\u0027"
          ],
          "packageName": "nerves_hub",
          "packageURL": "pkg:otp/nerves_hub?repository_url=https:%2F%2Fgithub.com%2Fnerves-hub%2Fnerves_hub_web\u0026vcs_url=git%20https:%2F%2Fgithub.com%2Fnerves-hub%2Fnerves_hub_web.git",
          "product": "nerves_hub_web",
          "programFiles": [
            "lib/nerves_hub/accounts.ex",
            "lib/nerves_hub/accounts/user.ex",
            "lib/nerves_hub_web/controllers/session_controller.ex",
            "lib/nerves_hub_web/controllers/api/user_controller.ex",
            "lib/nerves_hub_web/live/account.ex",
            "lib/nerves_hub_web/controllers/account_controller.ex"
          ],
          "programRoutines": [
            {
              "name": "\u0027Elixir.NervesHub.Accounts\u0027:update_or_create_user_from_ueberauth/1"
            },
            {
              "name": "\u0027Elixir.NervesHub.Accounts\u0027:authenticate/2"
            },
            {
              "name": "\u0027Elixir.NervesHub.Accounts.User\u0027:oauth_changeset/3"
            },
            {
              "name": "\u0027Elixir.NervesHubWeb.SessionController\u0027:confirm/2"
            },
            {
              "name": "\u0027Elixir.NervesHubWeb.API.UserController\u0027:auth/2"
            },
            {
              "name": "\u0027Elixir.NervesHubWeb.API.UserController\u0027:login/2"
            }
          ],
          "repo": "https://github.com/nerves-hub/nerves_hub_web",
          "vendor": "nerves-hub",
          "versions": [
            {
              "lessThan": "2.5.3",
              "status": "affected",
              "version": "2.3.0",
              "versionType": "semver"
            }
          ]
        },
        {
          "collectionURL": "https://github.com",
          "cpes": [
            "cpe:2.3:a:nerves-hub:nerves_hub_web:*:*:*:*:*:*:*:*"
          ],
          "defaultStatus": "unaffected",
          "modules": [
            "\u0027Elixir.NervesHub.Accounts\u0027",
            "\u0027Elixir.NervesHub.Accounts.User\u0027",
            "\u0027Elixir.NervesHubWeb.SessionController\u0027",
            "\u0027Elixir.NervesHubWeb.API.UserController\u0027",
            "\u0027Elixir.NervesHubWeb.Live.Account\u0027",
            "\u0027Elixir.NervesHubWeb.AccountController\u0027"
          ],
          "packageName": "nerves-hub/nerves_hub_web",
          "packageURL": "pkg:github/nerves-hub/nerves_hub_web",
          "product": "nerves_hub_web",
          "programFiles": [
            "lib/nerves_hub/accounts.ex",
            "lib/nerves_hub/accounts/user.ex",
            "lib/nerves_hub_web/controllers/session_controller.ex",
            "lib/nerves_hub_web/controllers/api/user_controller.ex",
            "lib/nerves_hub_web/live/account.ex",
            "lib/nerves_hub_web/controllers/account_controller.ex"
          ],
          "programRoutines": [
            {
              "name": "\u0027Elixir.NervesHub.Accounts\u0027:update_or_create_user_from_ueberauth/1"
            },
            {
              "name": "\u0027Elixir.NervesHub.Accounts\u0027:authenticate/2"
            },
            {
              "name": "\u0027Elixir.NervesHub.Accounts.User\u0027:oauth_changeset/3"
            },
            {
              "name": "\u0027Elixir.NervesHubWeb.SessionController\u0027:confirm/2"
            },
            {
              "name": "\u0027Elixir.NervesHubWeb.API.UserController\u0027:auth/2"
            },
            {
              "name": "\u0027Elixir.NervesHubWeb.API.UserController\u0027:login/2"
            }
          ],
          "repo": "https://github.com/nerves-hub/nerves_hub_web",
          "vendor": "nerves-hub",
          "versions": [
            {
              "lessThan": "54dbf93c3bd323df08223a853c9afcf0b4dbf8e4",
              "status": "affected",
              "version": "74982672ab914bd6f37c3bc0e24a06e3474fa030",
              "versionType": "git"
            }
          ]
        }
      ],
      "cpeApplicability": [
        {
          "nodes": [
            {
              "cpeMatch": [
                {
                  "criteria": "cpe:2.3:a:nerves-hub:nerves_hub_web:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "2.5.3",
                  "versionStartIncluding": "2.3.0",
                  "vulnerable": true
                }
              ],
              "negate": false,
              "operator": "OR"
            }
          ],
          "operator": "AND"
        }
      ],
      "credits": [
        {
          "lang": "en",
          "type": "remediation developer",
          "value": "Josh Kalderimis"
        },
        {
          "lang": "en",
          "type": "coordinator",
          "value": "Jonatan M\u00e4nnchen / EEF"
        }
      ],
      "dateAssigned": "2026-11-09T23:11:54.000Z",
      "descriptions": [
        {
          "lang": "en",
          "supportingMedia": [
            {
              "base64": false,
              "type": "text/html",
              "value": "\u003cp\u003eImproper Authentication vulnerability in Google sign-in and email confirmation in nerves-hub nerves_hub_web allows an attacker who registers another person\u0027s email address to share that person\u0027s account once they sign in. \u003ccode\u003eNervesHub.Accounts.update_or_create_user_from_ueberauth/1\u003c/code\u003e signs a Google user in to any account carrying the same email that is not yet linked to a Google account, links it and marks the email confirmed, without the account\u0027s owner ever having proved they own the address. \u003ccode\u003eNervesHubWeb.SessionController.confirm/2\u003c/code\u003e likewise signs in whoever follows a confirmation link. An attacker registers the address from the sign-up form, changes their own account\u0027s email to it, or registers it as an organization admin from an invite link, and keeps the password; when the address\u0027s owner signs in with Google or follows the confirmation link, they land in that account.\u003c/p\u003e\n\u003cp\u003eThe Google path also creates accounts with registrations closed and never checks Google\u0027s \u003ccode\u003eemail_verified\u003c/code\u003e claim, and the API\u0027s password sign-in in \u003ccode\u003eNervesHubWeb.API.UserController\u003c/code\u003e issues tokens to accounts whose email was never confirmed. The attacker gains only what the victim is granted afterwards, and nothing on accounts whose owners never use either path.\u003c/p\u003e\n\u003cp\u003eThis issue affects nerves_hub: from 2.3.0 before 2.5.3.\u003c/p\u003e"
            },
            {
              "base64": false,
              "type": "text/markdown",
              "value": "Improper Authentication vulnerability in Google sign-in and email confirmation in nerves-hub nerves_hub_web allows an attacker who registers another person\u0027s email address to share that person\u0027s account once they sign in. `NervesHub.Accounts.update_or_create_user_from_ueberauth/1` signs a Google user in to any account carrying the same email that is not yet linked to a Google account, links it and marks the email confirmed, without the account\u0027s owner ever having proved they own the address. `NervesHubWeb.SessionController.confirm/2` likewise signs in whoever follows a confirmation link. An attacker registers the address from the sign-up form, changes their own account\u0027s email to it, or registers it as an organization admin from an invite link, and keeps the password; when the address\u0027s owner signs in with Google or follows the confirmation link, they land in that account.\n\nThe Google path also creates accounts with registrations closed and never checks Google\u0027s `email_verified` claim, and the API\u0027s password sign-in in `NervesHubWeb.API.UserController` issues tokens to accounts whose email was never confirmed. The attacker gains only what the victim is granted afterwards, and nothing on accounts whose owners never use either path.\n\nThis issue affects nerves_hub: from 2.3.0 before 2.5.3."
            }
          ],
          "value": "Improper Authentication vulnerability in Google sign-in and email confirmation in nerves-hub nerves_hub_web allows an attacker who registers another person\u0027s email address to share that person\u0027s account once they sign in. NervesHub.Accounts.update_or_create_user_from_ueberauth/1 signs a Google user in to any account carrying the same email that is not yet linked to a Google account, links it and marks the email confirmed, without the account\u0027s owner ever having proved they own the address. NervesHubWeb.SessionController.confirm/2 likewise signs in whoever follows a confirmation link. An attacker registers the address from the sign-up form, changes their own account\u0027s email to it, or registers it as an organization admin from an invite link, and keeps the password; when the address\u0027s owner signs in with Google or follows the confirmation link, they land in that account.\n\nThe Google path also creates accounts with registrations closed and never checks Google\u0027s email_verified claim, and the API\u0027s password sign-in in NervesHubWeb.API.UserController issues tokens to accounts whose email was never confirmed. The attacker gains only what the victim is granted afterwards, and nothing on accounts whose owners never use either path.\n\nThis issue affects nerves_hub: from 2.3.0 before 2.5.3."
        }
      ],
      "impacts": [
        {
          "capecId": "CAPEC-114",
          "descriptions": [
            {
              "lang": "en",
              "supportingMedia": [
                {
                  "base64": false,
                  "type": "text/html",
                  "value": "\u003cp\u003eAn attacker who registers someone else\u0027s email address before that person first signs in with Google, or before they follow a confirmation link, ends up sharing that person\u0027s account: the attacker keeps signing in with the password they chose and sees and does whatever the victim can, in every organization the victim joins, at the victim\u0027s role. On an account linked to Google the victim cannot reset the password to lock the attacker out.\u003c/p\u003e"
                },
                {
                  "base64": false,
                  "type": "text/markdown",
                  "value": "An attacker who registers someone else\u0027s email address before that person first signs in with Google, or before they follow a confirmation link, ends up sharing that person\u0027s account: the attacker keeps signing in with the password they chose and sees and does whatever the victim can, in every organization the victim joins, at the victim\u0027s role. On an account linked to Google the victim cannot reset the password to lock the attacker out."
                }
              ],
              "value": "An attacker who registers someone else\u0027s email address before that person first signs in with Google, or before they follow a confirmation link, ends up sharing that person\u0027s account: the attacker keeps signing in with the password they chose and sees and does whatever the victim can, in every organization the victim joins, at the victim\u0027s role. On an account linked to Google the victim cannot reset the password to lock the attacker out."
            }
          ]
        }
      ],
      "metrics": [
        {
          "cvssV4_0": {
            "Automatable": "NOT_DEFINED",
            "Recovery": "NOT_DEFINED",
            "Safety": "NOT_DEFINED",
            "attackComplexity": "LOW",
            "attackRequirements": "PRESENT",
            "attackVector": "NETWORK",
            "baseScore": 7.4,
            "baseSeverity": "HIGH",
            "privilegesRequired": "NONE",
            "providerUrgency": "NOT_DEFINED",
            "subAvailabilityImpact": "NONE",
            "subConfidentialityImpact": "NONE",
            "subIntegrityImpact": "NONE",
            "userInteraction": "ACTIVE",
            "valueDensity": "NOT_DEFINED",
            "vectorString": "CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:A/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N",
            "version": "4.0",
            "vulnAvailabilityImpact": "NONE",
            "vulnConfidentialityImpact": "HIGH",
            "vulnIntegrityImpact": "HIGH",
            "vulnerabilityResponseEffort": "NOT_DEFINED"
          },
          "format": "CVSS",
          "scenarios": [
            {
              "lang": "en",
              "value": "GENERAL"
            }
          ]
        }
      ],
      "problemTypes": [
        {
          "descriptions": [
            {
              "cweId": "CWE-287",
              "description": "CWE-287 Improper Authentication",
              "lang": "en",
              "type": "CWE"
            }
          ]
        },
        {
          "descriptions": [
            {
              "cweId": "CWE-345",
              "description": "CWE-345 Insufficient Verification of Data Authenticity",
              "lang": "en",
              "type": "CWE"
            }
          ]
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-11-10T10:43:38.941Z",
        "orgId": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db",
        "shortName": "EEF"
      },
      "references": [
        {
          "name": "Google sign-in and email confirmation links sign users in to accounts other people registered with their email address",
          "tags": [
            "vendor-advisory",
            "related"
          ],
          "url": "https://github.com/nerves-hub/nerves_hub_web/security/advisories/GHSA-r92p-gg92-gmwm"
        },
        {
          "name": "EEF CNA record for CVE-2026-120999",
          "tags": [
            "related"
          ],
          "url": "https://cna.erlef.org/cves/CVE-2026-120999.html"
        },
        {
          "name": "OSV record EEF-CVE-2026-120999",
          "tags": [
            "related"
          ],
          "url": "https://osv.dev/vulnerability/EEF-CVE-2026-120999"
        },
        {
          "name": "Introducing commit 7498267 in nerves-hub/nerves_hub_web",
          "tags": [
            "related"
          ],
          "url": "https://github.com/nerves-hub/nerves_hub_web/commit/74982672ab914bd6f37c3bc0e24a06e3474fa030"
        },
        {
          "name": "Fix commit 54dbf93 in nerves-hub/nerves_hub_web",
          "tags": [
            "patch"
          ],
          "url": "https://github.com/nerves-hub/nerves_hub_web/commit/54dbf93c3bd323df08223a853c9afcf0b4dbf8e4"
        }
      ],
      "solutions": [
        {
          "lang": "en",
          "supportingMedia": [
            {
              "base64": false,
              "type": "text/html",
              "value": "\u003cp\u003eUpgrading does not undo links already made. Review the \u003ccode\u003eusers\u003c/code\u003e rows that carry both a \u003ccode\u003epassword_hash\u003c/code\u003e and a \u003ccode\u003egoogle_id\u003c/code\u003e; most are one person signing in both ways, but an account registered for someone else\u0027s address was usually created well before its first Google sign-in, so compare \u003ccode\u003einserted_at\u003c/code\u003e with \u003ccode\u003egoogle_last_synced_at\u003c/code\u003e. For one its owner did not set up, set its \u003ccode\u003egoogle_id\u003c/code\u003e to \u003ccode\u003eNULL\u003c/code\u003e, delete its \u003ccode\u003euser_tokens\u003c/code\u003e rows to end its sessions and revoke its API tokens, and have the address\u0027s owner reset the password. An account taken through a confirmation link looks the same as one its owner set up; its owner can end anyone else\u0027s access by resetting the password, which ends every session and revokes every API token. Before upgrading, check how your instance lets people sign up: \u003ccode\u003eSIGN_UP_METHODS\u003c/code\u003e replaces \u003ccode\u003eOPEN_FOR_REGISTRATIONS\u003c/code\u003e, and instances that relied on Google sign-in to create accounts while registrations were off need \u003ccode\u003eSIGN_UP_METHODS=google\u003c/code\u003e.\u003c/p\u003e"
            },
            {
              "base64": false,
              "type": "text/markdown",
              "value": "Upgrading does not undo links already made. Review the `users` rows that carry both a `password_hash` and a `google_id`; most are one person signing in both ways, but an account registered for someone else\u0027s address was usually created well before its first Google sign-in, so compare `inserted_at` with `google_last_synced_at`. For one its owner did not set up, set its `google_id` to `NULL`, delete its `user_tokens` rows to end its sessions and revoke its API tokens, and have the address\u0027s owner reset the password. An account taken through a confirmation link looks the same as one its owner set up; its owner can end anyone else\u0027s access by resetting the password, which ends every session and revokes every API token. Before upgrading, check how your instance lets people sign up: `SIGN_UP_METHODS` replaces `OPEN_FOR_REGISTRATIONS`, and instances that relied on Google sign-in to create accounts while registrations were off need `SIGN_UP_METHODS=google`."
            }
          ],
          "value": "Upgrading does not undo links already made. Review the users rows that carry both a password_hash and a google_id; most are one person signing in both ways, but an account registered for someone else\u0027s address was usually created well before its first Google sign-in, so compare inserted_at with google_last_synced_at. For one its owner did not set up, set its google_id to NULL, delete its user_tokens rows to end its sessions and revoke its API tokens, and have the address\u0027s owner reset the password. An account taken through a confirmation link looks the same as one its owner set up; its owner can end anyone else\u0027s access by resetting the password, which ends every session and revokes every API token. Before upgrading, check how your instance lets people sign up: SIGN_UP_METHODS replaces OPEN_FOR_REGISTRATIONS, and instances that relied on Google sign-in to create accounts while registrations were off need SIGN_UP_METHODS=google."
        }
      ],
      "source": {
        "discovery": "UNKNOWN"
      },
      "title": "Improper authentication lets Google sign-in and confirmation links sign users in to accounts registered with their email address by someone else",
      "workarounds": [
        {
          "lang": "en",
          "supportingMedia": [
            {
              "base64": false,
              "type": "text/html",
              "value": "\u003cp\u003eTurn off Google sign-in by unsetting \u003ccode\u003eGOOGLE_CLIENT_ID\u003c/code\u003e until the upgrade; users who only sign in with Google cannot sign in while it is off. This does not close the confirmation link path. Turning off registrations stops strangers using the sign-up form, but not an organization admin registering from an invite link.\u003c/p\u003e"
            },
            {
              "base64": false,
              "type": "text/markdown",
              "value": "Turn off Google sign-in by unsetting `GOOGLE_CLIENT_ID` until the upgrade; users who only sign in with Google cannot sign in while it is off. This does not close the confirmation link path. Turning off registrations stops strangers using the sign-up form, but not an organization admin registering from an invite link."
            }
          ],
          "value": "Turn off Google sign-in by unsetting GOOGLE_CLIENT_ID until the upgrade; users who only sign in with Google cannot sign in while it is off. This does not close the confirmation link path. Turning off registrations stops strangers using the sign-up form, but not an organization admin registering from an invite link."
        }
      ],
      "x_proofOfConcept": [
        {
          "lang": "en",
          "supportingMedia": [
            {
              "base64": false,
              "type": "text/html",
              "value": "\u003cp\u003eWith Google sign-in turned on and registrations open:\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003eRegister an account with \u003ccode\u003evictim@example.com\u003c/code\u003e and a password you choose. Do not confirm it.\u003c/li\u003e\n\u003cli\u003eThe owner of \u003ccode\u003evictim@example.com\u003c/code\u003e signs in to NervesHub with Google for the first time. They are signed in to your account, and its email is now marked confirmed.\u003c/li\u003e\n\u003cli\u003eAn organization invites \u003ccode\u003evictim@example.com\u003c/code\u003e and the victim accepts while signed in.\u003c/li\u003e\n\u003cli\u003eSign in with \u003ccode\u003evictim@example.com\u003c/code\u003e and your password. You are a member of the organization at the role it gave the victim.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003eWithout Google sign-in, as an admin of an organization:\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003eInvite \u003ccode\u003evictim@example.com\u003c/code\u003e, copy the invite link from the members page, and register from it with a password you choose.\u003c/li\u003e\n\u003cli\u003eTry to sign in with \u003ccode\u003evictim@example.com\u003c/code\u003e and your password. NervesHub refuses, since the email is not confirmed, and emails \u003ccode\u003evictim@example.com\u003c/code\u003e a confirmation link.\u003c/li\u003e\n\u003cli\u003eThe victim follows the link and is signed in to your account. Keep using your session or sign in with your password.\u003c/li\u003e\n\u003c/ol\u003e"
            },
            {
              "base64": false,
              "type": "text/markdown",
              "value": "With Google sign-in turned on and registrations open:\n\n1. Register an account with `victim@example.com` and a password you choose. Do not confirm it.\n2. The owner of `victim@example.com` signs in to NervesHub with Google for the first time. They are signed in to your account, and its email is now marked confirmed.\n3. An organization invites `victim@example.com` and the victim accepts while signed in.\n4. Sign in with `victim@example.com` and your password. You are a member of the organization at the role it gave the victim.\n\nWithout Google sign-in, as an admin of an organization:\n\n1. Invite `victim@example.com`, copy the invite link from the members page, and register from it with a password you choose.\n2. Try to sign in with `victim@example.com` and your password. NervesHub refuses, since the email is not confirmed, and emails `victim@example.com` a confirmation link.\n3. The victim follows the link and is signed in to your account. Keep using your session or sign in with your password."
            }
          ],
          "value": "With Google sign-in turned on and registrations open:\n\n* Register an account with victim@example.com and a password you choose. Do not confirm it.\n* The owner of victim@example.com signs in to NervesHub with Google for the first time. They are signed in to your account, and its email is now marked confirmed.\n* An organization invites victim@example.com and the victim accepts while signed in.\n* Sign in with victim@example.com and your password. You are a member of the organization at the role it gave the victim.\n\nWithout Google sign-in, as an admin of an organization:\n\n* Invite victim@example.com, copy the invite link from the members page, and register from it with a password you choose.\n* Try to sign in with victim@example.com and your password. NervesHub refuses, since the email is not confirmed, and emails victim@example.com a confirmation link.\n* The victim follows the link and is signed in to your account. Keep using your session or sign in with your password."
        }
      ]
    }
  },
  "cveMetadata": {
    "assignerOrgId": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db",
    "assignerShortName": "EEF",
    "cveId": "CVE-2026-120999",
    "datePublished": "2026-11-10T10:43:38.941Z",
    "dateReserved": "2026-11-09T22:47:57.298Z",
    "dateUpdated": "2026-11-10T10:43:38.941Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2"
}



Log in or create an account to share your comment.




Tags
Taxonomy of the tags.


Loading…

Loading…

Loading…

Drag nodes to arrange them. Double-click a related vulnerability to open it, or a source to visit its link. The Physics button on the left tunes the layout and the simulation; the legend at the bottom left hides or shows nodes by kind and by sighting type.

Forecast uses a logistic model when the trend is rising, or an exponential decay model when the trend is falling. Fitted via linearized least squares.

Sightings

Author Source Type Date Other

Nomenclature

  • Seen: The vulnerability was mentioned, discussed, or observed by the user.
  • Confirmed: The vulnerability has been validated from an analyst's perspective.
  • Published Proof of Concept: A public proof of concept is available for this vulnerability.
  • Exploited: The vulnerability was observed as exploited by the user who reported the sighting.
  • Patched: The vulnerability was observed as successfully patched by the user who reported the sighting.
  • Not exploited: The vulnerability was not observed as exploited by the user who reported the sighting.
  • Not confirmed: The user expressed doubt about the validity of the vulnerability.
  • Not patched: The vulnerability was not observed as successfully patched by the user who reported the sighting.
Vulnerability timeline

Sightings and recorded dates, grouped by day · UTC

JSON
Events included in the timeline

Loading timeline…


    Loading…

    Loading…

    Loading…

    Related by attack behaviour

    Vulnerabilities whose description is nearest to this one in the vector space of the CIRCL/vulnerability-attack-technique-biencoder model. This is a similarity search over the bi-encoder space (plain cosine), not a classification, and it has no measured accuracy.