Skip to content
Heist/ feed
Back to feed
Medium

GoRest: InMemorySecret2FA race condition allows process crash via concurrent map access

Type: advisorySources: OSV

GoRest is a Golang starter kit built with the Gin framework for prototyping and developing RESTful APIs. In versions prior to 1.12.2 nMemorySecret2FA contains a race condition due to an unsynchronized package-level map used to store 2FA secrets. Multiple HTTP handlers in handler/login.go and handler/twoFA.go read from and write to this map concurrently, and because Go's runtime treats unsynchronized concurrent map access as an unrecoverable fatal error, an attacker can repeatedly trigger this condition to crash the process on demand. This results in high, repeatable availability impact with no confidentiality or integrity consequences. This issue has been fixed in version 1.12.2.

Products
Not specified
Affected versions
Not specified
Fixed versions
Not specified
CVEs
CVE-2026-48154
Confirmed fixed CVEs
Not specified
Updated in this feed
2 Nov 2026, 18:52 UTC · Revision 1

Source evidence

GoRest: InMemorySecret2FA race condition allows process crash via concurrent map access

core-osv · Original source

Published 4 Aug 2026, 19:45 UTC

GoRest is a Golang starter kit built with the Gin framework for prototyping and developing RESTful APIs. In versions prior to 1.12.2 nMemorySecret2FA contains a race condition due to an unsynchronized package-level map used to store 2FA secrets. Multiple HTTP handlers in handler/login.go and handler/twoFA.go read from and write to this map concurrently, and because Go's runtime treats unsynchronized concurrent map access as an unrecoverable fatal error, an attacker can repeatedly trigger this condition to crash the process on demand. This results in high, repeatable availability impact with no confidentiality or integrity consequences. This issue has been fixed in version 1.12.2.

osv:CVE-2026-48154
Complete source record
{
  "id": "de7f5e88f2d833aa542292bb2d53e2d5d735d18a42a00826285d312ea17f2328",
  "url": "https://osv.dev/vulnerability/CVE-2026-48154",
  "method": "structured",
  "payload": {
    "kind": "advisory",
    "title": "GoRest: InMemorySecret2FA race condition allows process crash via concurrent map access",
    "summary": "GoRest is a Golang starter kit built with the Gin framework for prototyping and developing RESTful APIs. In versions prior to 1.12.2 nMemorySecret2FA contains a race condition due to an unsynchronized package-level map used to store 2FA secrets. Multiple HTTP handlers in handler/login.go and handler/twoFA.go read from and write to this map concurrently, and because Go's runtime treats unsynchronized concurrent map access as an unrecoverable fatal error, an attacker can repeatedly trigger this condition to crash the process on demand. This results in high, repeatable availability impact with no confidentiality or integrity consequences. This issue has been fixed in version 1.12.2.",
    "evidence": "osv:CVE-2026-48154",
    "products": [],
    "severity": "medium",
    "structured": {
      "id": "CVE-2026-48154",
      "aliases": [
        "CVE-2026-48154",
        "GHSA-cpwg-x64r-rgwg",
        "GO-2026-5330"
      ],
      "metrics": [
        {
          "type": "CVSS_V3",
          "score": "CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H"
        }
      ],
      "affected": [
        {
          "ranges": [
            {
              "repo": "https://github.com/pilinux/gorest",
              "type": "GIT",
              "events": [
                {
                  "introduced": "0"
                },
                {
                  "fixed": "00b29fa21dd755844aac6bfc33ebabae013cd17c"
                },
                {
                  "fixed": "117ff55fc21b47442da07c44c30b403af2da407b"
                }
              ],
              "database_specific": {
                "extracted_events": [
                  {
                    "range": [
                      {
                        "introduced": "0"
                      },
                      {
                        "fixed": "1.12.2"
                      }
                    ],
                    "source": "AFFECTED_FIELD",
                    "strategy": "StringRangeExpression"
                  },
                  {
                    "range": [
                      {
                        "fixed": "117ff55fc21b47442da07c44c30b403af2da407b"
                      }
                    ],
                    "source": "REFERENCES_COMMIT"
                  }
                ]
              }
            }
          ],
          "versions": [
            "v1.12.1",
            "v1.12.0",
            "v1.11.1",
            "v1.11.0",
            "v1.10.6",
            "v1.10.5",
            "v1.10.4",
            "v1.10.3",
            "v1.10.2",
            "v1.10.1",
            "v1.10.0",
            "v1.9.14",
            "v1.9.13",
            "v1.9.12",
            "v1.9.11",
            "v1.9.10",
            "v1.9.9",
            "v1.9.8",
            "v1.9.7",
            "v1.9.6",
            "v1.9.5",
            "v1.9.4",
            "v1.9.3",
            "v1.9.2",
            "v1.9.1",
            "v1.9.0",
            "v1.8.0",
            "v1.7.0",
            "v1.6.48",
            "v1.6.47",
            "v1.6.46",
            "v1.6.45",
            "v1.6.44",
            "v1.6.43",
            "v1.6.42",
            "v1.6.41",
            "v1.6.40",
            "v1.6.39",
            "v1.6.38",
            "v1.6.37",
            "v1.6.36",
            "v1.6.35",
            "v1.6.34",
            "v1.6.33",
            "v1.6.32",
            "v1.6.31",
            "v1.6.30",
            "v1.6.29",
            "v1.6.28",
            "v1.6.27",
            "v1.6.26",
            "v1.6.25",
            "v1.6.24",
            "v1.6.23",
            "v1.6.22",
            "v1.6.21",
            "v1.6.20",
            "v1.6.19",
            "v1.6.18",
            "v1.6.17",
            "v1.6.16",
            "v1.6.15",
            "v1.6.14",
            "v1.6.13",
            "v1.6.12",
            "v1.6.11",
            "v1.6.10",
            "v1.6.9",
            "v1.6.8",
            "v1.6.7",
            "v1.6.6",
            "v1.6.5",
            "v1.6.4",
            "v1.6.3",
            "v1.6.2",
            "v1.6.1",
            "v1.6.0-rc.1",
            "v1.5.1",
            "v1.4.5",
            "v1.4.4",
            "v1.4.3",
            "v1.4.2",
            "v1.4.1",
            "v1.4.0",
            "v1.3.1",
            "v1.3.0",
            "v1.2.7",
            "v1.2.6",
            "v1.2.5",
            "v1.2.4",
            "v1.2.3",
            "v1.2.2",
            "v1.2.1",
            "v1.2.0",
            "v1.1.3",
            "v1.1.2",
            "v1.1.1",
            "v1.1",
            "v1.0"
          ],
          "database_specific": {
            "source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-48154.json"
          }
        }
      ],
      "modified": "2026-10-28T02:30:22.387497961Z",
      "provider": "osv",
      "references": [
        "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/48xxx/CVE-2026-48154.json",
        "https://github.com/pilinux/gorest/security/advisories/GHSA-cpwg-x64r-rgwg",
        "https://nvd.nist.gov/vuln/detail/CVE-2026-48154",
        "https://github.com/pilinux/gorest/commit/117ff55fc21b47442da07c44c30b403af2da407b",
        "https://github.com/pilinux/gorest/pull/391"
      ],
      "provider_metadata": {
        "cwe_ids": [
          "CWE-362"
        ],
        "cna_assigner": "GitHub_M",
        "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/48xxx/CVE-2026-48154.json"
      }
    },
    "related_cves": [
      {
        "value": "CVE-2026-48154",
        "evidence": "/id"
      }
    ],
    "security_relevant": true,
    "severity_evidence": "/severity/0/score"
  },
  "source_id": "core-osv",
  "document_id": 488797,
  "published_at": "2026-08-04T19:45:51.909+00:00"
}