apache / apache/cloudstack

[Hardening] F-04: Insecure Default 2FA Provider Configuration (Opt-In Instead of Opt-Out).

Open
#13,336 0 comments 0 reactions 0 assignees View on GitHub
hardening
Dominant language
Java
Stars
3.1k
Forks
1.4k
Avg merge
6d 19h
Merged PRs (30d)
32

Description

### The required feature described as a wish

Image

**Description:** A Static PIN is no more secure than a password. Arguably, it is not even a second factor at all, but merely a second step in the authentication process (more on this in the following findings). There may be cases where TOTP is not a viable option, and a Static PIN serves as an alternative. However, Static PIN should not be offered out-of-the-box or listed as an option, as users will naturally follow the path of least resistance toward the weaker method.

**Affected Components:** Management UI

**Impact:** The Static PIN makes the second factor as static and reusable as the password, defeating the purpose of 2FA. An attacker who obtains the PIN once retains persistent access. Replay attacks will succeed indefinitely, and the PIN is vulnerable to the same attacks as a password.

**Steps to Reproduce:**
- Log in to the CloudStack Management UI as a Root Admin.
- Navigate to Configuration > Global Settings.
- Search for `user.2fa.default.provider`, `user.2fa.providers.order`, and `user.2fa.providers.exclude`.
- Observe that Static PIN is not excluded and may be presented as a selectable option.

**Recommended Remediation:** Adopt a secure-by-default, opt-out model: set `user.2fa.default.provider` to TOTP, set `user.2fa.providers.order` to TOTP only by default, and add the Static PIN provider to `user.2fa.providers.exclude` unless explicitly re-enabled by an administrator.

Contributor guide

Open the contributing guide

Research direction

Start in the Management UI flow for Configuration > Global Settings and trace how user.2fa.default.provider, user.2fa.providers.order, and user.2fa.providers.exclude are defined and presented. Done means TOTP is the default and sole default ordered provider, while Static PIN is excluded unless an administrator explicitly re-enables it; verify the three settings in the UI.

Written by the indexing model from the issue text.

Assessment

Domain
authentication, security
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
55/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.