2026-09-26 13:23CVE-2026-100678VulnCheck
PUBLISHED5.2CWE-307

stoatchat before 0.15.5 MFA Brute Force via Insufficient Rate Limiting

stoatchat before 0.15.5 fails to enforce account-level attempt limits on MFA login challenges, allowing attackers who know a password to guess TOTP codes with only IP-based rate limiting. Attackers can reuse MFA challenge tickets across multiple failed attempts and distribute guesses across IP addresses to bypass rate limiting and gain account access.

Problem type

Affected products

stoatchat

stoatchat

< 0.15.5 - AFFECTED

0.15.5 - UNAFFECTED

References

GitHub Security Advisories

GHSA-qgwf-mjq4-r7pg

stoatchat before 0.15.5 fails to enforce account-level attempt limits on MFA login challenges,...

https://github.com/advisories/GHSA-qgwf-mjq4-r7pg

stoatchat before 0.15.5 fails to enforce account-level attempt limits on MFA login challenges, allowing attackers who know a password to guess TOTP codes with only IP-based rate limiting. Attackers can reuse MFA challenge tickets across multiple failed attempts and distribute guesses across IP addresses to bypass rate limiting and gain account access.

JSON source

https://cveawg.mitre.org/api/cve/CVE-2026-100678
Click to expand
{
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2",
  "cveMetadata": {
    "cveId": "CVE-2026-100678",
    "assignerOrgId": "83251b91-4cc7-4094-a5c7-464a1b83ea10",
    "assignerShortName": "VulnCheck",
    "dateUpdated": "2026-09-26T13:23:40.935Z",
    "dateReserved": "2026-09-26T02:36:51.809Z",
    "datePublished": "2026-09-26T13:23:40.935Z",
    "state": "PUBLISHED"
  },
  "containers": {
    "cna": {
      "providerMetadata": {
        "orgId": "83251b91-4cc7-4094-a5c7-464a1b83ea10",
        "shortName": "VulnCheck",
        "dateUpdated": "2026-09-26T13:23:40.935Z"
      },
      "datePublic": "2026-09-11T00:00:00.000Z",
      "title": "stoatchat before 0.15.5 MFA Brute Force via Insufficient Rate Limiting",
      "descriptions": [
        {
          "lang": "en",
          "value": "stoatchat before 0.15.5 fails to enforce account-level attempt limits on MFA login challenges, allowing attackers who know a password to guess TOTP codes with only IP-based rate limiting. Attackers can reuse MFA challenge tickets across multiple failed attempts and distribute guesses across IP addresses to bypass rate limiting and gain account access."
        }
      ],
      "affected": [
        {
          "vendor": "stoatchat",
          "product": "stoatchat",
          "defaultStatus": "unaffected",
          "versions": [
            {
              "version": "0",
              "status": "affected",
              "versionType": "semver",
              "lessThan": "0.15.5"
            },
            {
              "version": "0.15.5",
              "status": "unaffected",
              "versionType": "semver"
            }
          ]
        }
      ],
      "problemTypes": [
        {
          "descriptions": [
            {
              "lang": "en",
              "description": "Improper Restriction of Excessive Authentication Attempts",
              "cweId": "CWE-307",
              "type": "CWE"
            }
          ]
        }
      ],
      "references": [
        {
          "url": "https://github.com/stoatchat/stoatchat/security/advisories/GHSA-6877-g673-f5r8",
          "name": "GitHub Security Advisory (GHSA-6877-g673-f5r8)",
          "tags": [
            "vendor-advisory"
          ]
        },
        {
          "url": "https://www.vulncheck.com/advisories/stoatchat-before-0.15.5-mfa-brute-force-via-insufficient-rate-limiting",
          "name": "VulnCheck Advisory: stoatchat before 0.15.5 MFA Brute Force via Insufficient Rate Limiting",
          "tags": [
            "third-party-advisory"
          ]
        }
      ],
      "metrics": [
        {
          "format": "CVSS"
        },
        {
          "format": "CVSS",
          "cvssV3_1": {
            "version": "3.1",
            "vectorString": "CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:L/A:N",
            "attackVector": "NETWORK",
            "attackComplexity": "HIGH",
            "privilegesRequired": "NONE",
            "userInteraction": "NONE",
            "scope": "UNCHANGED",
            "confidentialityImpact": "HIGH",
            "integrityImpact": "LOW",
            "availabilityImpact": "NONE",
            "baseScore": 6.5,
            "baseSeverity": "MEDIUM"
          }
        }
      ],
      "credits": [
        {
          "lang": "en",
          "value": "QuentinRa",
          "type": "reporter"
        }
      ]
    }
  }
}