WP 2FA – Two-factor authentication for WordPress Security & Risk Analysis

wordpress.org/plugins/wp-2fa

Get better WordPress login security; add two-factor authentication (2FA) for all your users with this easy-to-use plugin.

100K active installs v3.1.1.2 PHP 7.4+ WP 5.5+ Updated Feb 25, 2026
2-factor-authentication2fagoogle-authenticatortwo-factor-authenticationwordpress-authentication
95
A · Safe
CVEs total9
Unpatched0
Last CVENov 3, 2025
Safety Verdict

Is WP 2FA – Two-factor authentication for WordPress Safe to Use in 2026?

Generally Safe

Score 95/100

WP 2FA – Two-factor authentication for WordPress has a strong security track record. Known vulnerabilities have been patched promptly.

9 known CVEsLast CVE: Nov 3, 2025Updated 1mo ago
Risk Assessment

The "wp-2fa" plugin version 3.1.1.2 presents a mixed security posture. On the positive side, the static analysis reveals a limited attack surface with all entry points protected by authentication checks. The use of prepared statements for SQL queries is also high, indicating good practices in preventing SQL injection. Furthermore, the absence of critical or high severity taint analysis findings, coupled with a significant number of capability and nonce checks, suggests a reasonable effort to secure its functionalities.

However, concerns arise from the moderate percentage of improperly escaped output (38%), which opens the door for potential cross-site scripting (XSS) vulnerabilities. The presence of 6 flows with unsanitized paths in the taint analysis, while not classified as critical or high severity, still warrants attention as it could indicate vectors for unexpected behavior or information disclosure. The plugin's vulnerability history is a significant concern, with a total of 9 medium severity CVEs. While none are currently unpatched, the prevalence of issues like 'Protection Mechanism Failure,' 'Cross-Site Request Forgery (CSRF),' 'Missing Authorization,' and 'Authorization Bypass Through User-Controlled Key' suggests recurring weaknesses in the plugin's security implementation that require ongoing vigilance and thorough patching.

In conclusion, while "wp-2fa" has strengths in its protected entry points and secure SQL practices, the history of medium severity vulnerabilities and the presence of unsanitized paths in taint analysis highlight areas that need improvement. The moderate output escaping is a specific risk that could be exploited, and the recurring nature of past vulnerability types indicates a need for more robust security architecture and testing.

Key Concerns

  • Medium severity CVEs in history
  • Flows with unsanitized paths
  • Low percentage of properly escaped output
  • Bundled libraries (Select2, Freemius)
Vulnerabilities
9

WP 2FA – Two-factor authentication for WordPress Security Vulnerabilities

CVEs by Year

4 CVEs in 2022
2022
4 CVEs in 2024
2024
1 CVE in 2025
2025
Patched Has unpatched

Severity Breakdown

Medium
9

9 total CVEs

CVE-2025-12628medium · 5.3Protection Mechanism Failure

WP 2FA – Two-factor authentication for WordPress <= 2.9.3 - 2-Factor Authentication Bypass

Nov 3, 2025 Patched in 3.0.0 (29d)
CVE-2022-44587medium · 5.3Insertion of Sensitive Information into Log File

WP 2FA <= 2.6.3 - Unauthenticated Information Exposure via Log File

Jun 20, 2024 Patched in 2.6.4 (8d)
CVE-2024-32568medium · 6.1Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting')

WP 2FA – Two-factor authentication for WordPress <= 2.6.2 - Reflected Cross-Site Scripting

Apr 16, 2024 Patched in 2.6.3 (9d)
CVE-2023-6520medium · 4.3Cross-Site Request Forgery (CSRF)

WP 2FA – Two-factor authentication for WordPress <= 2.5.0 - Cross-Site Request Forgery

Jan 2, 2024 Patched in 2.6.0 (210d)
CVE-2023-6506medium · 4.3Authorization Bypass Through User-Controlled Key

WP 2FA <= 2.5.0 - Insecure Direct Object Reference to Arbitrary Email Sending

Jan 2, 2024 Patched in 2.6.0 (210d)
CVE-2022-44595medium · 4.3Missing Authorization

WP 2FA – Two-factor authentication for WordPress <= 2.2.0 - Missing Authorization

Dec 7, 2022 Patched in 2.2.1 (412d)
CVE-2022-2891medium · 5.3Observable Response Discrepancy

WP 2FA <= 2.2.1 - Time-Based TOTP attack to Sensitive Information Exposure

Sep 14, 2022 Patched in 2.3.0 (496d)
CVE-2022-1527medium · 6.1Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting')

WP 2FA – Two-factor authentication for WordPress <= 2.2.0 - Reflected Cross-Site Scripting

May 6, 2022 Patched in 2.2.1 (627d)
WF-13c07b63-f436-45ae-9c00-d1e593a32754-wp-2famedium · 5.4Authorization Bypass Through User-Controlled Key

WP 2FA – Two-factor authentication for WordPress <= 2.1.0 - Insecure Direct Object Reference

Apr 13, 2022 Patched in 2.2.0 (650d)
Code Analysis
Analyzed Mar 16, 2026

WP 2FA – Two-factor authentication for WordPress Code Analysis

Dangerous Functions
0
Raw SQL Queries
2
17 prepared
Unescaped Output
363
222 escaped
Nonce Checks
12
Capability Checks
12
File Operations
14
External Requests
3
Bundled Libraries
2

Bundled Libraries

Select2Freemius

SQL Query Safety

89% prepared19 total queries

Output Escaping

38% escaped585 total outputs
Data Flows
6 unsanitized

Data Flow Analysis

9 flows6 with unsanitized paths
settings_saved_network_admin_notice (includes\classes\Admin\class-settings-page.php:302)
Source (user input) Sink (dangerous op) Sanitizer Transform Unsanitized Sanitized
Attack Surface

WP 2FA – Two-factor authentication for WordPress Attack Surface

Entry Points2
Unprotected0

AJAX Handlers 2

authwp_ajax_wp2fa_edd_activate_licenseincludes\classes\Licensing\class-edd-provider.php:107
authwp_ajax_wp2fa_edd_deactivate_licenseincludes\classes\Licensing\class-edd-provider.php:108
WordPress Hooks 21
actionadmin_noticesincludes\classes\Admin\class-user-notices.php:50
actionnetwork_admin_noticesincludes\classes\Admin\class-user-notices.php:51
actionadmin_noticesincludes\classes\Admin\class-user-notices.php:58
actionnetwork_admin_noticesincludes\classes\Admin\class-user-notices.php:59
actionadmin_initincludes\classes\Licensing\class-edd-provider.php:98
actionadmin_initincludes\classes\Licensing\class-edd-provider.php:101
actionadmin_noticesincludes\classes\Licensing\class-edd-provider.php:104
actionadmin_initincludes\classes\Licensing\class-freemius-provider.php:61
actionadmin_initincludes\classes\Licensing\class-freemius-provider.php:62
actionwp2fa_freemius_loadedincludes\classes\Licensing\class-freemius-provider.php:63
actionadmin_initincludes\classes\Licensing\class-licensing-factory.php:75
actionadmin_noticesincludes\classes\Licensing\class-licensing-factory.php:212
actioninitincludes\functions\core.php:26
actioninitincludes\functions\core.php:27
actionadmin_enqueue_scriptsincludes\functions\core.php:28
actionadmin_enqueue_scriptsincludes\functions\core.php:29
filterscript_loader_tagincludes\functions\core.php:32
filterwp_robotsincludes\functions\login-header.php:16
actionlogin_headincludes\functions\login-header.php:17
actionlogin_headincludes\functions\login-header.php:19
actionlogin_headincludes\functions\login-header.php:35
Maintenance & Trust

WP 2FA – Two-factor authentication for WordPress Maintenance & Trust

Maintenance Signals

WordPress version tested6.9.4
Last updatedFeb 25, 2026
PHP min version7.4
Downloads1.6M

Community Trust

Rating94/100
Number of ratings162
Active installs100K
Developer Profile

WP 2FA – Two-factor authentication for WordPress Developer Profile

Melapress

6 plugins · 417K total installs

74
trust score
Avg Security Score
93/100
Avg Patch Time
540 days
View full developer profile
Detection Fingerprints

How We Detect WP 2FA – Two-factor authentication for WordPress

Patterns used to identify this plugin on WordPress sites during automated security audits and web crawling.

Asset Fingerprints

Asset Paths
/wp-content/plugins/wp-2fa/assets/css/bootstrap.min.css/wp-content/plugins/wp-2fa/assets/css/bootstrap-icons.css/wp-content/plugins/wp-2fa/assets/css/plugins.css/wp-content/plugins/wp-2fa/assets/css/backend.css/wp-content/plugins/wp-2fa/assets/css/vendor/select2/select2.min.css/wp-content/plugins/wp-2fa/assets/js/vendor/jquery/jquery.min.js/wp-content/plugins/wp-2fa/assets/js/vendor/bootstrap/bootstrap.bundle.min.js/wp-content/plugins/wp-2fa/assets/js/vendor/select2/select2.min.js+37 more
Script Paths
/wp-content/plugins/wp-2fa/assets/js/vendor/jquery/jquery.min.js/wp-content/plugins/wp-2fa/assets/js/vendor/bootstrap/bootstrap.bundle.min.js/wp-content/plugins/wp-2fa/assets/js/vendor/select2/select2.min.js/wp-content/plugins/wp-2fa/assets/js/vendor/chart.js/chart.min.js/wp-content/plugins/wp-2fa/assets/js/vendor/apexcharts/apexcharts.min.js/wp-content/plugins/wp-2fa/assets/js/vendor/moment/moment.min.js+34 more
Version Parameters
wp-2fa/assets/css/bootstrap.min.css?ver=wp-2fa/assets/css/bootstrap-icons.css?ver=wp-2fa/assets/css/plugins.css?ver=wp-2fa/assets/css/backend.css?ver=wp-2fa/assets/css/vendor/select2/select2.min.css?ver=wp-2fa/assets/js/vendor/jquery/jquery.min.js?ver=wp-2fa/assets/js/vendor/bootstrap/bootstrap.bundle.min.js?ver=wp-2fa/assets/js/vendor/select2/select2.min.js?ver=wp-2fa/assets/js/vendor/chart.js/chart.min.js?ver=wp-2fa/assets/js/vendor/apexcharts/apexcharts.min.js?ver=wp-2fa/assets/js/vendor/moment/moment.min.js?ver=wp-2fa/assets/js/vendor/fullcalendar/main.min.js?ver=wp-2fa/assets/js/vendor/sweetalert2/sweetalert2.all.min.js?ver=wp-2fa/assets/js/vendor/tinymce/tinymce.min.js?ver=wp-2fa/assets/js/vendor/waypoints/shortcuts/sticky.min.js?ver=wp-2fa/assets/js/vendor/isotope-layout/isotope.pkgd.min.js?ver=wp-2fa/assets/js/vendor/php-emoji/emoji.js?ver=wp-2fa/assets/js/vendor/clipboard.js/clipboard.min.js?ver=wp-2fa/assets/js/vendor/autosize/autosize.min.js?ver=wp-2fa/assets/js/vendor/sortablejs/Sortable.min.js?ver=wp-2fa/assets/js/vendor/dropzone/dropzone.min.js?ver=wp-2fa/assets/js/vendor/quill/quill.min.js?ver=wp-2fa/assets/js/vendor/parsleyjs/parsley.min.js?ver=wp-2fa/assets/js/vendor/tagify/tagify.min.js?ver=wp-2fa/assets/js/vendor/typeahead.js/typeahead.bundle.min.js?ver=wp-2fa/assets/js/vendor/tt-bootstrap-typeahead/bootstrap3-typeahead.min.js?ver=wp-2fa/assets/js/vendor/toastify-js/toastify.min.js?ver=wp-2fa/assets/js/vendor/datatable/datatables.min.js?ver=wp-2fa/assets/js/vendor/multiselect/bootstrap-multiselect.js?ver=wp-2fa/assets/js/vendor/chartist/chartist.min.js?ver=wp-2fa/assets/js/vendor/echarts/echarts.min.js?ver=wp-2fa/assets/js/vendor/echarts/themes/macarons.js?ver=wp-2fa/assets/js/vendor/echarts/themes/infographic.js?ver=wp-2fa/assets/js/vendor/echarts/themes/shine.js?ver=wp-2fa/assets/js/vendor/echarts/themes/roma.js?ver=wp-2fa/assets/js/vendor/echarts/themes/vintage.js?ver=wp-2fa/assets/js/vendor/echarts/themes/dark.js?ver=wp-2fa/assets/js/vendor/echarts/themes/grayscale.js?ver=wp-2fa/assets/js/vendor/echarts/themes/default.js?ver=wp-2fa/assets/js/backend.js?ver=wp-2fa/assets/js/frontend.js?ver=wp-2fa/assets/js/vendor/qrcode/qrcode.min.js?ver=wp-2fa/assets/js/vendor/pako/pako.min.js?ver=wp-2fa/assets/js/vendor/webauthn/webauthn.min.js?ver=wp-2fa/assets/js/vendor/otp-input-polyfill/otp-input-polyfill.min.js?ver=

HTML / DOM Fingerprints

CSS Classes
wp-2fa-settings-pagewp-2fa-user-settingswp-2fa-login-formwp-2fa-setup-wizardwp-2fa-admin-barwp-2fa-user-profile
HTML Comments
WP 2FA - Two-factor authentication for WordPressThis program is free software: you can redistribute it and/or modifyThis program is distributed in the hope that it will be usefulComposer autoloader is required.
Data Attributes
data-wp-2fa-targetdata-wp-2fa-field
JS Globals
wp2fa_configwp2fa_localize
REST Endpoints
/wp-json/wp-2fa/v1/settings/wp-json/wp-2fa/v1/user-settings/wp-json/wp-2fa/v1/verify-code
FAQ

Frequently Asked Questions about WP 2FA – Two-factor authentication for WordPress