{
  "affected": [
    {
      "ranges": [
        {
          "database_specific": {
            "extracted_events": [
              {
                "range": [
                  {
                    "introduced": "0"
                  },
                  {
                    "fixed": "1.2.3"
                  }
                ],
                "source": "AFFECTED_FIELD",
                "strategy": "StringRangeExpression"
              },
              {
                "range": [
                  {
                    "fixed": "a0b3b6d2c22d01b196c22a9aa0e225429dbf09c8"
                  }
                ],
                "source": "REFERENCES_COMMIT"
              },
              {
                "original_tag": "v1.2.3",
                "range": [
                  {
                    "fixed": "cbe6213e0702892e4d0209e396ea43439a0fe740"
                  }
                ],
                "source": "REFERENCES_TAG"
              }
            ]
          },
          "events": [
            {
              "introduced": "0"
            },
            {
              "fixed": "cbe6213e0702892e4d0209e396ea43439a0fe740"
            },
            {
              "fixed": "a0b3b6d2c22d01b196c22a9aa0e225429dbf09c8"
            }
          ],
          "repo": "https://github.com/schorschii/oco-server",
          "type": "GIT"
        }
      ]
    }
  ],
  "aliases": [
    "GHSA-34mv-3gjp-gf53"
  ],
  "database_specific": {
    "cna_assigner": "GitHub_M",
    "cwe_ids": [
      "CWE-862"
    ],
    "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/114xxx/CVE-2026-114515.json"
  },
  "details": "OCO-Server is a self-hosted endpoint management application for computer inventory, software deployment, and mobile device management. Prior to 1.2.3, a valid Self-Service Portal user with permission to create job containers and read visibility on a computer and package can queue an uninstall job without deploy permission for those resources. Requests to `self-service/ajax-handler/job-containers.php` pass `uninstall_package_assignment_id[]` values to `lib/SelfService/CoreLogic.class.php::uninstallSelfService()`. Its permission-check loop continues after denied `METHOD_DEPLOY` checks without removing rejected IDs from `$installationIds`, then passes the original list to `lib/CoreLogic.class.php::uninstall()`. The CoreLogic object is constructed with a null SystemUser, causing `lib/CoreLogic.class.php::checkPermission()` to treat the operation as system context and unconditionally permit it. Enumerable `computer_package.id` values allow selection of readable installed-package assignments, including those on other users' computers. The `deploySelfService()` install path instead aborts on denied deployment permission, and resources lacking read permission remain blocked. This permits unauthorized software-removal jobs across resources visible to the acting user's role. This issue is fixed in version 1.2.3.",
  "id": "CVE-2026-114515",
  "modified": "2026-10-25T02:30:45.945816199Z",
  "published": "2026-10-22T14:58:02.272Z",
  "references": [
    {
      "type": "WEB",
      "url": "https://github.com/schorschii/OCO-Server/releases/tag/v1.2.3"
    },
    {
      "type": "ADVISORY",
      "url": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/114xxx/CVE-2026-114515.json"
    },
    {
      "type": "ADVISORY",
      "url": "https://github.com/schorschii/OCO-Server/security/advisories/GHSA-34mv-3gjp-gf53"
    },
    {
      "type": "ADVISORY",
      "url": "https://nvd.nist.gov/vuln/detail/CVE-2026-114515"
    },
    {
      "type": "FIX",
      "url": "https://github.com/schorschii/OCO-Server/commit/a0b3b6d2c22d01b196c22a9aa0e225429dbf09c8"
    }
  ],
  "schema_version": "1.9.0",
  "severity": [
    {
      "score": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:N",
      "type": "CVSS_V3"
    }
  ],
  "summary": "OCO-Server: Self-Service Portal uninstall-job authorization bypass"
}