Cyber Resilience

CVE-2019-9082

RCE in Thinkphp ≤ 3.2.4

CISA KEVActive ExploitationEUVD ExploitedPublic PoCRCEAccess Control
Published
24 February 2019
Modified
09 December 2025
KEV Added
03 November 2021
CVSS Score v3.1 8.8
Click a component to see what it means
Raw vectorCVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H
EPSS Score 0.97 99.9th percentile
Risk Priority 90 floored blend · peak EPSS

Summary

CVE-2019-9082 is a high-severity Code Injection (CWE-94) vulnerability in Thinkphp Thinkphp. Its CVSS base score is 8.8 (High).

Operationally, exploitation aligns with the MITRE ATT&CK technique Exploit Public-Facing Application (T1190); ranked in the top 0.1% of CVEs by exploit likelihood; CISA has added it to the Known Exploited Vulnerabilities catalog; a public proof-of-concept is referenced.

Deeper analysis AI-assisted summary

Synthesised by an AI model from the NVD description and linked references — a reading aid, not an authoritative source.

ThinkPHP versions before 3.2.4, as incorporated in Open Source BMS v1.1.1 and other products, are affected by a remote command execution flaw tracked as CVE-2019-9082. The vulnerability arises from unsafe exposure of framework internals that permit invocation of call_user_func_array with attacker-supplied arguments, classified under CWE-94 and CWE-306, and carries a CVSS 3.1 score of 8.8.

Remote attackers without authentication or user interaction can exploit the issue by submitting an HTTP request to the public// endpoint containing the parameters s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=, followed by an arbitrary operating-system command. Successful exploitation results in immediate execution of the supplied command with the privileges of the web server process, enabling full compromise of confidentiality, integrity, and availability on the target host.

Public exploit code and proof-of-concept reports have been posted to Exploit-DB, Packet Storm Security, and the Open Source BMS GitHub issue tracker.

OWASP Top 10 for Web (2025)

EU & UK References

Vulnerability Data

ThinkPHP before 3.2.4, as used in Open Source BMS v1.1.1 and other products, allows Remote Command Execution via public//?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]= followed by the command.

CWE(s)
KEV Date Added
03 November 2021

Related Threats

MITRE ATT&CK Enterprise Techniques

T1190 Exploit Public-Facing Application Initial Access
Adversaries may attempt to exploit a weakness in an Internet-facing host or system to initially access a network.
T1059 Command and Scripting Interpreter Execution
Adversaries may abuse command and script interpreters to execute commands, scripts, or binaries.
T1059.001 PowerShell Execution
Adversaries may abuse PowerShell commands and scripts for execution.
T1059.002 AppleScript Execution
Adversaries may abuse AppleScript for execution.
T1059.004 Unix Shell Execution
Adversaries may abuse Unix shell commands and scripts for execution.
T1059.005 Visual Basic Execution
Adversaries may abuse Visual Basic (VB) for execution.
Derived from this CVE’s CWE(s) via the direct CWE→ATT&CK cross-walk.

CVEs Like This One

CVE-2021-39144Shared CWE-306, CWE-94both on KEV
CVE-2025-50707Same product: Thinkphp Thinkphp
CVE-2025-50706Same product: Thinkphp Thinkphp
CVE-2025-3248Shared CWE-306, CWE-94both on KEV
CVE-2026-1340Shared CWE-94both on KEV
CVE-2013-3906Shared CWE-94both on KEV
CVE-2017-9822Shared CWE-94both on KEV
CVE-2017-7494Shared CWE-94both on KEV
CVE-2023-33246Shared CWE-94both on KEV
CVE-2021-22205Shared CWE-94both on KEV

Affected Assets

thinkphp
thinkphp
≤ 3.2.4
opensourcebms
open source background management system
1.1.1
zzzcms
zzzphp
1.6.1

Mitigating Controls

Control response

Prevent
Stop it (NIST 800-53)

Detect
Catch it (NIST detect / respond)

Harden
Shrink the surface (DISA STIG)
  • 6 hardening rules · 3 OS baselines
Validate
Prove the fix (OWASP ASVS)
  • V6.2.3
  • V6.4.4
  • V10.4.16
  • V12.1.3

Likely Mitigating Controls AI

Per-CVE control mapping for this CVE has not run yet; the list below is derived from the weakness types (CWEs) cited in the NVD entry.

addresses: CWE-306

Requires established identification and authentication to unlock, mitigating missing authentication for continued system access.

addresses: CWE-306

Requiring identification and rationale for actions allowed without authentication ensures critical functions are not left unprotected by forcing review of authentication requirements.

addresses: CWE-306

Authorizing mobile device connections to organizational systems ensures authentication is performed for this critical access function.

addresses: CWE-306

Guarantees critical functions are protected by mandatory invocation of the access control mechanism.

addresses: CWE-306

Auditing sessions makes it possible to detect access to critical functions without required authentication.

addresses: CWE-306

The assessment process confirms authentication is present and effective for critical functions, preventing exploitation from missing authentication.

addresses: CWE-306

Certification assesses that critical functions have required authentication controls in place.

addresses: CWE-306

Disabling non-essential functions and services eliminates the need to secure them, reducing exposure from missing authentication on unnecessary components.

Mitigating Controls (NIST CSF 2.0) AI

Derived directly from the weakness types (CWEs) cited in the NVD entry via our AI-authored CWE→CSF cross-walk (authority under review) — links open the control.

PR.AA-03 full match
prevents

Directly requires authentication of users/services/hardware, which eliminates missing authentication for critical functions.

PR.PS-06 mostly match
prevents

PR.PS-06's SDLC practices directly target injection flaws via secure coding and testing (mostly), yet as a single broad outcome it leaves many code-generation specifics unaddressed (partial).

PR.AA-01 partial match
prevents

Managing identities and credentials is a prerequisite for authentication but does not itself enforce it on critical functions.

PR.AA-05 partial match
prevents

Defining and enforcing authorizations assumes prior authentication and therefore only partially mitigates the absence of authentication.

PR.IR-01 partial match
prevents

Protecting networks from unauthorized access can be undermined by missing authentication but does not address the root authentication gap.

PR.DS-10 none match
prevents

PR.DS-10 protects runtime data confidentiality/integrity but has no bearing on neutralizing externally influenced input during code generation, so neither direction shows any preventive effect.

Mitigating Controls (ISO/IEC 27001:2022 Annex A) AI

Derived directly from the weakness types (CWEs) cited in the NVD entry via our AI-authored CWE→ISO cross-walk (authority under review) — links open the control.

prevents

The control explicitly calls for authentication before any critical function is reached, eliminating the possibility of bypassing authentication for high-value operations.

prevents

Mandating authentication requirements for critical functions at the requirements-gathering stage ensures that essential operations are not left unprotected by missing login or verification mechanisms.

mitigates

Mandating authentication for network services and critical functions stops attackers from invoking sensitive operations without credentials, closing gaps where authentication is absent for important capabilities.

prevents

Security engineering principles insist on authentication and authorization for every critical function, eliminating entry points that lack any access control mechanism.

prevents

Banning unapproved code samples and unauthenticated web services, combined with secure-coding standards and SAST, prevents the dynamic generation or inclusion of attacker-supplied code.

none

Requiring strong authentication and access-privilege enablement for remote connections ensures that critical functions cannot be invoked without proper verification, closing a gap that would otherwise allow unauthenticated use.

Hardening callouts derived

Configuration rules from DISA STIG baselines that bear on weaknesses of the type cited by this CVE. Each rule is shown with the relationship its mapping actually records, against the CWE it was authored against. Derived via CVE→CWE over `controls_xwalks` (authoritative rows only; rows rated `none` are excluded).

Oracle Linux 8 (2 rules)
  • V-248585 OL 8 must require reauthentication when using the "sudo" command. prevents CWE-306
  • V-248827 OL 8 must not have the rsh-server package installed. prevents CWE-306
RHEL 7 (2 rules)
  • V-204442 The Red Hat Enterprise Linux operating system must not have the rsh-server package installed. prevents CWE-306
  • V-237635 The Red Hat Enterprise Linux operating system must require re-authentication when using the "sudo" command. prevents CWE-306
RHEL 8 (2 rules)
  • V-230492 RHEL 8 must not have the rsh-server package installed. prevents CWE-306
  • V-237643 RHEL 8 must require re-authentication when using the "sudo" command. prevents CWE-306

References