Skip to content
Heist/ feed
Back to feed
High

Joomla Extension - dj-extensions.com - Unauthenticated Stored XSS in DJ-HelpfulArticles < 1.3.0

Type: advisorySources: Official CVE List

Joomla Extension - dj-extensions.com - Unauthenticated Stored XSS in DJ-HelpfulArticles < 1.3.0 - The “was this article helpful” voting widget posts a client-supplied ip field to its AJAX handlers (getDeny, getConfirm, getDenyReason in mod_djhelpful_articles/helper.php), reachable without authentication through com_ajax. The value was stored exactly as submitted instead of being taken from the connection by the server. It was then printed without output escaping in the administrator backend’s “Helpful articles” overview (views/items/tmpl/default.php). $db->quote() was applied on insert, which protects the SQL statement but does nothing for HTML output. There was no CSRF token, no rate limit, and the vote de-duplication keyed on the same attacker-controlled field.

Products
DJ-HelpfulArticles extension for Joomla
Affected versions
Not specified
Fixed versions
Not specified
CVEs
CVE-2026-102800
Confirmed fixed CVEs
Not specified
Updated in this feed
31 Oct 2026, 13:45 UTC · Revision 1

Source evidence

Joomla Extension - dj-extensions.com - Unauthenticated Stored XSS in DJ-HelpfulArticles < 1.3.0

core-cve · Original source

Published 27 Oct 2026, 11:06 UTC

Joomla Extension - dj-extensions.com - Unauthenticated Stored XSS in DJ-HelpfulArticles < 1.3.0 - The “was this article helpful” voting widget posts a client-supplied ip field to its AJAX handlers (getDeny, getConfirm, getDenyReason in mod_djhelpful_articles/helper.php), reachable without authentication through com_ajax. The value was stored exactly as submitted instead of being taken from the connection by the server. It was then printed without output escaping in the administrator backend’s “Helpful articles” overview (views/items/tmpl/default.php). $db->quote() was applied on insert, which protects the SQL statement but does nothing for HTML output. There was no CSRF token, no rate limit, and the vote de-duplication keyed on the same attacker-controlled field.

cve:CVE-2026-102800

DJ-HelpfulArticles extension for Joomla

Fixed versions: Not specified

Complete source record
{
  "id": "753d7f191652ba74d2cf21dcca0ec4bf9d5a61ada9de9b5a938622383e2320bb",
  "url": "https://www.cve.org/CVERecord?id=CVE-2026-102800",
  "method": "structured",
  "payload": {
    "kind": "advisory",
    "title": "Joomla Extension - dj-extensions.com - Unauthenticated Stored XSS in DJ-HelpfulArticles < 1.3.0",
    "summary": "Joomla Extension - dj-extensions.com - Unauthenticated Stored XSS in DJ-HelpfulArticles < 1.3.0 - The “was this article helpful” voting widget posts a client-supplied ip field to its AJAX handlers (getDeny, getConfirm, getDenyReason in mod_djhelpful_articles/helper.php), reachable without authentication through com_ajax. The value was stored exactly as submitted instead of being taken from the connection by the server. It was then printed without output escaping in the administrator backend’s “Helpful articles” overview (views/items/tmpl/default.php). $db->quote() was applied on insert, which protects the SQL statement but does nothing for HTML output. There was no CSRF token, no rate limit, and the vote de-duplication keyed on the same attacker-controlled field.",
    "evidence": "cve:CVE-2026-102800",
    "products": [
      {
        "name": {
          "value": "DJ-HelpfulArticles extension for Joomla",
          "evidence": "/containers/cna/affected/0/product"
        },
        "prerequisites": [],
        "fixed_versions": [],
        "affected_versions": []
      }
    ],
    "severity": "high",
    "structured": {
      "id": "CVE-2026-102800",
      "aliases": [
        "CVE-2026-102800"
      ],
      "metrics": [
        {
          "format": "CVSS",
          "cvssV4_0": {
            "Safety": "NOT_DEFINED",
            "version": "4.0",
            "Recovery": "NOT_DEFINED",
            "baseScore": 8.7,
            "Automatable": "NOT_DEFINED",
            "attackVector": "NETWORK",
            "baseSeverity": "HIGH",
            "valueDensity": "NOT_DEFINED",
            "vectorString": "CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:P/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N",
            "exploitMaturity": "NOT_DEFINED",
            "providerUrgency": "NOT_DEFINED",
            "userInteraction": "PASSIVE",
            "attackComplexity": "LOW",
            "attackRequirements": "NONE",
            "privilegesRequired": "NONE",
            "subIntegrityImpact": "NONE",
            "vulnIntegrityImpact": "HIGH",
            "subAvailabilityImpact": "NONE",
            "vulnAvailabilityImpact": "HIGH",
            "subConfidentialityImpact": "NONE",
            "vulnConfidentialityImpact": "HIGH",
            "vulnerabilityResponseEffort": "NOT_DEFINED"
          },
          "scenarios": [
            {
              "lang": "en",
              "value": "GENERAL"
            }
          ]
        }
      ],
      "affected": [
        {
          "vendor": "dj-extensions.com",
          "product": "DJ-HelpfulArticles extension for Joomla",
          "versions": [
            {
              "status": "affected",
              "version": "1.0.0-1.2.0"
            }
          ],
          "packageName": "com_djhelpfularticles",
          "defaultStatus": "unaffected"
        }
      ],
      "modified": "2026-10-27T11:06:50.198Z",
      "provider": "cve",
      "references": [
        "https://www.dj-extensions.com/"
      ],
      "provider_metadata": {
        "cna": {
          "orgId": "6ff30186-7fb7-4ad9-be33-533e7b05e586",
          "shortName": "Joomla",
          "dateUpdated": "2026-10-27T11:06:50.198Z"
        }
      }
    },
    "related_cves": [
      {
        "value": "CVE-2026-102800",
        "evidence": "/cveMetadata/cveId"
      }
    ],
    "security_relevant": true,
    "severity_evidence": "/containers/cna/metrics"
  },
  "source_id": "core-cve",
  "document_id": 391935,
  "published_at": "2026-10-27T11:06:50.198+00:00"
}