---
id: "CVE-2026-111675"
kind: "vulnerability"
aliases: ["CVE-2026-111675"]
title: "Course-tencent-cloud through 2.0.1 contains an improper restriction of authentication attempts vulnerability that\u2026"
severity: "critical"
cvss: 9.1
epss: null
exploited: false
status: "open"
category: "package"
products: [{"name": "course-tencent-cloud", "fixed": [], "affected": "<= 2.0.1", "ecosystem": "github"}]
ecosystems: []
tags: ["account-takeover", "brute-force", "course-tencent-cloud", "package", "self-hosted"]
not_affected_if: ["default-config"]
published_at: "2026-10-16T18:17:50+00:00"
first_seen_at: "2026-10-23T21:57:13+00:00"
updated_at: "2026-10-23T23:29:55+00:00"
sources: [{"source": "nvd", "url": "https://nvd.nist.gov/vuln/detail/CVE-2026-111675", "first_seen_at": "2026-10-23T21:57:13+00:00"}, {"source": "analyst", "url": null, "first_seen_at": "2026-10-23T23:29:53+00:00"}]
---

# Course-tencent-cloud through 2.0.1 contains an improper restriction of authentication attempts vulnerability that…

course-tencent-cloud (xiaochong0302, PHP Phalcon course LMS) through 2.0.1 issues 6-digit SMS/email codes cached 300s. Checking the code never deletes it or counts attempts, and the password-reset and login-by-verify endpoints have no captcha. The only throttle is per-IP, default 900 requests per 900s, so an attacker rotating IPs can cover all 10^6 codes in one window. Needs the victim's phone or email and one captcha-solved code send. Results in account takeover.

_Summary, check and fix written by a model from the sources; labelled as such._

## Affected

- github:course-tencent-cloud affected <= 2.0.1 fixed ?

## How to check

Check installed version (release tag or git describe) is <= 2.0.1. Inspect app/Services/Verify.php: if checkSmsCode/checkMailCode only compare to the cached value with no delete or attempt counter, you are exposed. Review security.throttle settings (default 900/900s per IP) and web logs for many POSTs to /api/account/password/reset and /api/account/verify/login.

## Fix

No fixed release identified as of 2026-10-23 (unknown; check upstream xiaochong0302/course-tencent-cloud for a release after 2.0.1). Interim: add a WAF/reverse-proxy rate limit keyed on the target account on the reset and verify-login endpoints, lower security.throttle rate_limit, or patch Verify.php to delete the code after N failed attempts and after successful use.

## Timeline

- 2026-10-23T21:57:13+00:00 nvd https://nvd.nist.gov/vuln/detail/CVE-2026-111675
- 2026-10-23T23:29:53+00:00 analyst — Correction: default config is affected (default throttle is per-IP only); removed default-config from not-affected-if.

## Documents

- [advisory] course-tencent-cloud account takeover through brute force of verification code (hieuPenguinnn) https://hackmd.io/@hieuPenguinnn/ctc-verify-code-brute-force-account-takeover
- [advisory] VulnCheck: Course-tencent-cloud through 2.0.1 Verification Code Brute Force https://www.vulncheck.com/advisories/course-tencent-cloud-through-2.0.1-verification-code-brute-force-account-takeover
- [describes] Verify.php at v2.0.1 (vulnerable code) https://github.com/xiaochong0302/course-tencent-cloud/blob/v2.0.1/app/Services/Verify.php
- [mentions] course-tencent-cloud releases https://github.com/xiaochong0302/course-tencent-cloud/releases

## From the sources

Course-tencent-cloud through 2.0.1 contains an improper restriction of authentication attempts vulnerability that allows unauthenticated attackers to brute force 6-digit SMS/email verification codes, which are never invalidated or attempt-limited. Attackers who know a victim's phone or email can trigger a code and rotate source IPs against the password reset and verify login endpoints to take over accounts.

---

_Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai_
