---
id: CVE-2026-12761
title: >-
  The miniOrange Social Login and Register (Discord, Google, Twitter, LinkedIn)
  plugin for WordPress is vulnerable to authentication bypass leading to account
  takeover in versions up to and including 7.7.0
summary: >-
  The miniOrange Social Login and Register (Discord, Google, Twitter, LinkedIn)
  plugin for WordPress is vulnerable to authentication bypass leading to account
  takeover in versions up to and including 7.7.0. This is due to the Profile
  Compl…
severity: critical
cvss: 9.8
cvssVector: 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H'
cwe:
  - CWE-287
published: '2026-07-10'
updated: '2026-07-10'
source: NVD
sourceUrl: 'https://nvd.nist.gov/vuln/detail/CVE-2026-12761'
references:
  - url: >-
      https://plugins.trac.wordpress.org/browser/miniorange-login-openid/tags/7.7.0/class-mo-openid-login-widget.php#L1502
    label: security@wordfence.com
  - url: >-
      https://plugins.trac.wordpress.org/browser/miniorange-login-openid/tags/7.7.0/mo-openid-social-login-functions.php#L34
    label: security@wordfence.com
  - url: >-
      https://plugins.trac.wordpress.org/browser/miniorange-login-openid/tags/7.7.0/view/profile_completion/mo_openid_prof_comp_funct.php#L191
    label: security@wordfence.com
  - url: >-
      https://plugins.trac.wordpress.org/browser/miniorange-login-openid/tags/7.7.0/view/profile_completion/mo_openid_prof_comp_funct.php#L41
    label: security@wordfence.com
  - url: 'https://plugins.trac.wordpress.org/changeset/3592642/'
    label: security@wordfence.com
  - url: >-
      https://www.wordfence.com/threat-intel/vulnerabilities/id/a56b59ce-29c2-4172-b703-a06d7bb28da0?source=cve
    label: security@wordfence.com
tags:
  - nvd
epss: 0.00893
epssPercentile: 0.57767
ingestedAt: '2026-07-11T20:15:26.798Z'
---

## Overview

The miniOrange Social Login and Register (Discord, Google, Twitter, LinkedIn) plugin for WordPress is vulnerable to authentication bypass leading to account takeover in versions up to and including 7.7.0. This is due to the Profile Completion flow accepting an arbitrary email address via the 'email_field' POST parameter without verifying that the email belongs to the identity returned by the OAuth provider, combined with send_otp_token() returning the SHA-512(customer_key || otp) transaction hash to the client where the OTP space is only 99,000 values (wp_rand(1000, 99999)) and the customer_key is a static option (empty on unregistered installs). This makes it possible for unauthenticated attackers to trigger an OTP email to an arbitrary admin's address, crack the OTP offline from the leaked hash in under a second, and submit the cracked OTP to mo_openid_social_login_validate_otp(), which logs the attacker in as the user whose email was supplied — granting full administrator access.

## Remediation

Refer to the linked advisories for vendor-supplied fixes and affected version ranges.
