Search

Find a vulnerability

Search criteria

    2 vulnerabilities found for hashbrown-cms by HashBrownCMS

    CVE-2026-70375 (GCVE-0-2026-70375)

    Vulnerability from cvelistv5 – Published: 2026-08-05 05:46 – Updated: 2026-08-05 05:46
    VLAI
    Title
    HashBrown CMS: OS Command Injection via Git Deployer Branch Field
    Summary
    HashBrown CMS through 1.4.6 contains an OS Command Injection vulnerability (CWE-78) in the Git deployer component. GitDeployer.pullRepo() in src/Server/Entity/Deployer/GitDeployer.js executes AppService.exec(`git checkout ${this.branch || 'master'}`), interpolating the configured branch value directly into a shell command with no escaping. GitDeployer.validate() only rejects a single-quote character in the repo, branch, username, and password fields; shell metacharacters such as ';', '&&', '|', backticks, and '$()' are not filtered. A user able to configure a project's Git deployer settings can set a malicious branch value (e.g. 'master;<command>#') that executes automatically on every subsequent deployer operation (media upload, content save, etc.), since pullRepo() is invoked unconditionally at the start of each such operation. This is related to CVE-2020-6948, which addressed single-quote escaping of the repo, username, and password fields in the same file's git clone invocation; the branch field used in the unquoted git checkout command was not covered by that fix and remains injectable.
    Severity
    No CVSS data available.
    CWE
    • CWE-78 - OS Command Injection
    Assigner
    Impacted products
    Vendor Product Version
    HashBrownCMS hashbrown-cms Affected: 0 , ≤ 1.4.6 (semver)
    Create a notification for this product.
    Credits
    Alijonov Alisher
    Show details on NVD website

    {
      "containers": {
        "cna": {
          "affected": [
            {
              "defaultStatus": "unknown",
              "product": "hashbrown-cms",
              "programFiles": [
                "src/Server/Entity/Deployer/GitDeployer.js"
              ],
              "repo": "https://github.com/HashBrownCMS/hashbrown-cms",
              "vendor": "HashBrownCMS",
              "versions": [
                {
                  "lessThanOrEqual": "1.4.6",
                  "status": "affected",
                  "version": "0",
                  "versionType": "semver"
                }
              ]
            }
          ],
          "credits": [
            {
              "lang": "en",
              "type": "finder",
              "value": "Alijonov Alisher"
            }
          ],
          "descriptions": [
            {
              "lang": "en",
              "value": "HashBrown CMS through 1.4.6 contains an OS Command Injection vulnerability (CWE-78) in the Git deployer component. GitDeployer.pullRepo() in src/Server/Entity/Deployer/GitDeployer.js executes AppService.exec(`git checkout ${this.branch || \u0027master\u0027}`), interpolating the configured branch value directly into a shell command with no escaping. GitDeployer.validate() only rejects a single-quote character in the repo, branch, username, and password fields; shell metacharacters such as \u0027;\u0027, \u0027\u0026\u0026\u0027, \u0027|\u0027, backticks, and \u0027$()\u0027 are not filtered. A user able to configure a project\u0027s Git deployer settings can set a malicious branch value (e.g. \u0027master;\u003ccommand\u003e#\u0027) that executes automatically on every subsequent deployer operation (media upload, content save, etc.), since pullRepo() is invoked unconditionally at the start of each such operation. This is related to CVE-2020-6948, which addressed single-quote escaping of the repo, username, and password fields in the same file\u0027s git clone invocation; the branch field used in the unquoted git checkout command was not covered by that fix and remains injectable."
            }
          ],
          "problemTypes": [
            {
              "descriptions": [
                {
                  "cweId": "CWE-78",
                  "description": "CWE-78 OS Command Injection",
                  "lang": "en",
                  "type": "CWE"
                }
              ]
            }
          ],
          "providerMetadata": {
            "dateUpdated": "2026-08-05T05:46:26.004Z",
            "orgId": "309f9ea4-e3e9-4c6c-b79d-e8eb01244f2c",
            "shortName": "TuranSec"
          },
          "references": [
            {
              "url": "https://github.com/HashBrownCMS/hashbrown-cms"
            },
            {
              "url": "https://cve.turansec.uz/advisories/TRN-B571F773"
            }
          ],
          "title": "HashBrown CMS: OS Command Injection via Git Deployer Branch Field"
        }
      },
      "cveMetadata": {
        "assignerOrgId": "309f9ea4-e3e9-4c6c-b79d-e8eb01244f2c",
        "assignerShortName": "TuranSec",
        "cveId": "CVE-2026-70375",
        "datePublished": "2026-08-05T05:46:26.004Z",
        "dateReserved": "2026-08-04T07:13:07.993Z",
        "dateUpdated": "2026-08-05T05:46:26.004Z",
        "state": "PUBLISHED"
      },
      "dataType": "CVE_RECORD",
      "dataVersion": "5.2"
    }

    CVE-2026-70374 (GCVE-0-2026-70374)

    Vulnerability from cvelistv5 – Published: 2026-08-05 05:46 – Updated: 2026-08-05 05:46
    VLAI
    Title
    HashBrown CMS: OS Command Injection in Media Upload Thumbnail Generation
    Summary
    HashBrown CMS through 1.4.6 contains an OS Command Injection vulnerability (CWE-78) in the media upload thumbnail generation routine. Media.generateThumbnail() in src/Server/Entity/Resource/Media.js builds a temporary file path as 'thumbnail' + Path.extname(filename) and passes it, unescaped, into a shell command executed via AppService.exec() ('convert ' + tempFile + ...). The MIME-type filter in getMIMEType() (src/Common/utilities.js) truncates the extracted extension at the first '?' character, while Path.extname() does not, allowing a filename such as 'x.jpg?$(command)' to pass the image-type check while still injecting a shell command substitution into the exec() call. An authenticated user holding the media resource scope can achieve arbitrary OS command execution in the context of the Node.js process via POST /api/{project}/{environment}/media/new.
    Severity
    No CVSS data available.
    CWE
    • CWE-78 - OS Command Injection
    Assigner
    Impacted products
    Vendor Product Version
    HashBrownCMS hashbrown-cms Affected: 0 , ≤ 1.4.6 (semver)
    Create a notification for this product.
    Credits
    Alijonov Alisher
    Show details on NVD website

    {
      "containers": {
        "cna": {
          "affected": [
            {
              "defaultStatus": "unknown",
              "product": "hashbrown-cms",
              "programFiles": [
                "src/Server/Entity/Resource/Media.js",
                "src/Common/utilities.js"
              ],
              "repo": "https://github.com/HashBrownCMS/hashbrown-cms",
              "vendor": "HashBrownCMS",
              "versions": [
                {
                  "lessThanOrEqual": "1.4.6",
                  "status": "affected",
                  "version": "0",
                  "versionType": "semver"
                }
              ]
            }
          ],
          "credits": [
            {
              "lang": "en",
              "type": "finder",
              "value": "Alijonov Alisher"
            }
          ],
          "descriptions": [
            {
              "lang": "en",
              "value": "HashBrown CMS through 1.4.6 contains an OS Command Injection vulnerability (CWE-78) in the media upload thumbnail generation routine. Media.generateThumbnail() in src/Server/Entity/Resource/Media.js builds a temporary file path as \u0027thumbnail\u0027 + Path.extname(filename) and passes it, unescaped, into a shell command executed via AppService.exec() (\u0027convert \u0027 + tempFile + ...). The MIME-type filter in getMIMEType() (src/Common/utilities.js) truncates the extracted extension at the first \u0027?\u0027 character, while Path.extname() does not, allowing a filename such as \u0027x.jpg?$(command)\u0027 to pass the image-type check while still injecting a shell command substitution into the exec() call. An authenticated user holding the media resource scope can achieve arbitrary OS command execution in the context of the Node.js process via POST /api/{project}/{environment}/media/new."
            }
          ],
          "problemTypes": [
            {
              "descriptions": [
                {
                  "cweId": "CWE-78",
                  "description": "CWE-78 OS Command Injection",
                  "lang": "en",
                  "type": "CWE"
                }
              ]
            }
          ],
          "providerMetadata": {
            "dateUpdated": "2026-08-05T05:46:19.284Z",
            "orgId": "309f9ea4-e3e9-4c6c-b79d-e8eb01244f2c",
            "shortName": "TuranSec"
          },
          "references": [
            {
              "url": "https://github.com/HashBrownCMS/hashbrown-cms"
            },
            {
              "url": "https://cve.turansec.uz/advisories/TRN-11FC0D88"
            }
          ],
          "title": "HashBrown CMS: OS Command Injection in Media Upload Thumbnail Generation"
        }
      },
      "cveMetadata": {
        "assignerOrgId": "309f9ea4-e3e9-4c6c-b79d-e8eb01244f2c",
        "assignerShortName": "TuranSec",
        "cveId": "CVE-2026-70374",
        "datePublished": "2026-08-05T05:46:19.284Z",
        "dateReserved": "2026-08-04T07:13:07.993Z",
        "dateUpdated": "2026-08-05T05:46:19.284Z",
        "state": "PUBLISHED"
      },
      "dataType": "CVE_RECORD",
      "dataVersion": "5.2"
    }