kwtSMS: OTP & SMS Notifications Security & Risk Analysis

wordpress.org/plugins/kwtsms

SMS OTP login, password reset, and WooCommerce order notifications via the kwtSMS gateway. Arabic RTL support included.

0 active installs v3.5.2 PHP 7.4+ WP 6.0+ Updated Mar 25, 2026
authenticationloginotpsmswoocommerce
100
A · Safe
CVEs total0
Unpatched0
Last CVENever
Safety Verdict

Is kwtSMS: OTP & SMS Notifications Safe to Use in 2026?

Generally Safe

Score 100/100

kwtSMS: OTP & SMS Notifications has no known CVEs and is actively maintained. It's a solid choice for most WordPress installations.

No known CVEs Updated 1mo ago
Risk Assessment

The kwtsms plugin v3.5.2 exhibits a strong security posture based on the provided static analysis. It demonstrates excellent adherence to secure coding practices by implementing prepared statements for all SQL queries and properly escaping all output. The plugin also incorporates a significant number of nonce and capability checks, indicating a conscious effort to protect its entry points. The absence of any recorded vulnerabilities in its history further reinforces this positive assessment.

While the static analysis shows no critical or high-severity taint flows and a complete lack of unprotected entry points across its AJAX handlers, REST API routes, shortcodes, and cron events, it's important to acknowledge the presence of 34 AJAX handlers. Although all appear to have authentication checks, a large number of potential interaction points, even when secured, can increase the overall complexity and the potential for undiscovered edge cases in authentication logic. The plugin also performs file operations and external HTTP requests, which inherently carry some level of risk, though the analysis doesn't indicate any specific issues with these operations in this version.

In conclusion, kwtsms v3.5.2 appears to be a well-secured plugin. The developers have implemented robust security measures, and its vulnerability history is clean. The primary area to remain vigilant about, as with any plugin with a substantial number of entry points, is the ongoing maintenance and review of its authentication and authorization mechanisms to prevent future vulnerabilities.

Vulnerabilities
None known

kwtSMS: OTP & SMS Notifications Security Vulnerabilities

No known vulnerabilities — this is a good sign.
Version History

kwtSMS: OTP & SMS Notifications Release Timeline

v3.5.2Current
Code Analysis
Analyzed Apr 16, 2026

kwtSMS: OTP & SMS Notifications Code Analysis

Dangerous Functions
0
Raw SQL Queries
0
8 prepared
Unescaped Output
2
2678 escaped
Nonce Checks
78
Capability Checks
54
File Operations
6
External Requests
10
Bundled Libraries
0

SQL Query Safety

100% prepared8 total queries

Output Escaping

100% escaped2680 total outputs
Data Flows · Security
All sanitized

Data Flow Analysis

8 flows
render_registration_phone_field (includes/class-kwtsms-user-meta.php:330)
Source (user input) Sink (dangerous op) Sanitizer Transform Unsanitized Sanitized
Attack Surface

kwtSMS: OTP & SMS Notifications Attack Surface

Entry Points34
Unprotected0

AJAX Handlers 34

authwp_ajax_kwtsms_get_coverageadmin/class-kwtsms-admin.php:63
authwp_ajax_kwtsms_logout_gatewayadmin/class-kwtsms-admin.php:64
authwp_ajax_kwtsms_save_user_phoneadmin/class-kwtsms-admin.php:65
authwp_ajax_kwtsms_verify_credentialsincludes/class-kwtsms-plugin.php:207
authwp_ajax_kwtsms_reload_allincludes/class-kwtsms-plugin.php:208
noprivwp_ajax_kwtsms_resend_otpincludes/class-kwtsms-plugin.php:211
authwp_ajax_kwtsms_resend_otpincludes/class-kwtsms-plugin.php:212
authwp_ajax_kwtsms_send_test_smsincludes/class-kwtsms-plugin.php:215
noprivwp_ajax_kwtsms_form_send_otpincludes/class-kwtsms-plugin.php:218
authwp_ajax_kwtsms_form_send_otpincludes/class-kwtsms-plugin.php:219
noprivwp_ajax_kwtsms_form_verify_otpincludes/class-kwtsms-plugin.php:222
authwp_ajax_kwtsms_form_verify_otpincludes/class-kwtsms-plugin.php:223
authwp_ajax_kwtsms_revoke_deviceincludes/class-kwtsms-plugin.php:229
authwp_ajax_kwtsms_revoke_all_devicesincludes/class-kwtsms-plugin.php:230
authwp_ajax_kwtsms_woo_send_custom_smsincludes/integrations/class-kwtsms-woo-metabox.php:50
authwp_ajax_kwtsms_back_in_stock_subscribeincludes/integrations/class-kwtsms-woo-stock.php:68
noprivwp_ajax_kwtsms_back_in_stock_subscribeincludes/integrations/class-kwtsms-woo-stock.php:69
authwp_ajax_kwtsms_get_coveragetrunk/admin/class-kwtsms-admin.php:63
authwp_ajax_kwtsms_logout_gatewaytrunk/admin/class-kwtsms-admin.php:64
authwp_ajax_kwtsms_save_user_phonetrunk/admin/class-kwtsms-admin.php:65
authwp_ajax_kwtsms_verify_credentialstrunk/includes/class-kwtsms-plugin.php:207
authwp_ajax_kwtsms_reload_alltrunk/includes/class-kwtsms-plugin.php:208
noprivwp_ajax_kwtsms_resend_otptrunk/includes/class-kwtsms-plugin.php:211
authwp_ajax_kwtsms_resend_otptrunk/includes/class-kwtsms-plugin.php:212
authwp_ajax_kwtsms_send_test_smstrunk/includes/class-kwtsms-plugin.php:215
noprivwp_ajax_kwtsms_form_send_otptrunk/includes/class-kwtsms-plugin.php:218
authwp_ajax_kwtsms_form_send_otptrunk/includes/class-kwtsms-plugin.php:219
noprivwp_ajax_kwtsms_form_verify_otptrunk/includes/class-kwtsms-plugin.php:222
authwp_ajax_kwtsms_form_verify_otptrunk/includes/class-kwtsms-plugin.php:223
authwp_ajax_kwtsms_revoke_devicetrunk/includes/class-kwtsms-plugin.php:229
authwp_ajax_kwtsms_revoke_all_devicestrunk/includes/class-kwtsms-plugin.php:230
authwp_ajax_kwtsms_woo_send_custom_smstrunk/includes/integrations/class-kwtsms-woo-metabox.php:50
authwp_ajax_kwtsms_back_in_stock_subscribetrunk/includes/integrations/class-kwtsms-woo-stock.php:68
noprivwp_ajax_kwtsms_back_in_stock_subscribetrunk/includes/integrations/class-kwtsms-woo-stock.php:69
WordPress Hooks 164
actionadmin_menuadmin/class-kwtsms-admin.php:56
actionadmin_initadmin/class-kwtsms-admin.php:57
actionadmin_initadmin/class-kwtsms-admin.php:58
actionadmin_enqueue_scriptsadmin/class-kwtsms-admin.php:59
actionadmin_noticesadmin/class-kwtsms-admin.php:60
actionwp_dashboard_setupadmin/class-kwtsms-admin.php:61
filterget_user_option_meta-box-order_dashboardadmin/class-kwtsms-admin.php:62
actionadmin_headadmin/class-kwtsms-admin.php:228
actionadmin_enqueue_scriptsadmin/class-kwtsms-admin.php:238
actionuser_registerincludes/class-kwtsms-admin-alerts.php:57
actionwp_loginincludes/class-kwtsms-admin-alerts.php:61
actiontransition_post_statusincludes/class-kwtsms-admin-alerts.php:65
actioncomment_postincludes/class-kwtsms-admin-alerts.php:69
actionupgrader_process_completeincludes/class-kwtsms-admin-alerts.php:73
actionlogin_enqueue_scriptsincludes/class-kwtsms-captcha.php:38
actionplugins_loadedincludes/class-kwtsms-integrations.php:42
filterauthenticateincludes/class-kwtsms-login-otp.php:51
actionwp_login_failedincludes/class-kwtsms-login-otp.php:52
actionlogin_initincludes/class-kwtsms-login-otp.php:53
actionlogin_formincludes/class-kwtsms-login-otp.php:54
filterlogin_form_kwtsms_otpincludes/class-kwtsms-login-otp.php:58
filterlogin_form_kwtsms_passwordlessincludes/class-kwtsms-login-otp.php:59
actionuser_registerincludes/class-kwtsms-plugin.php:115
actionpassword_resetincludes/class-kwtsms-plugin.php:121
actionshow_user_profileincludes/class-kwtsms-plugin.php:124
actionedit_user_profileincludes/class-kwtsms-plugin.php:125
actionlogin_footerincludes/class-kwtsms-plugin.php:129
actionwp_enqueue_scriptsincludes/class-kwtsms-plugin.php:226
filterregistration_errorsincludes/class-kwtsms-registration-otp-gate.php:82
filterregistration_errorsincludes/class-kwtsms-registration-otp-gate.php:83
actionwoocommerce_register_formincludes/class-kwtsms-registration-otp-gate.php:84
filterwoocommerce_registration_errorsincludes/class-kwtsms-registration-otp-gate.php:85
actionlogin_initincludes/class-kwtsms-registration-otp-gate.php:86
filterlogin_form_kwtsms_reg_otpincludes/class-kwtsms-registration-otp-gate.php:89
actionlogin_initincludes/class-kwtsms-reset-otp.php:59
actionlogin_form_lostpasswordincludes/class-kwtsms-reset-otp.php:60
actionlogin_initincludes/class-kwtsms-reset-otp.php:61
filterlogin_form_kwtsms_reset_otpincludes/class-kwtsms-reset-otp.php:64
actionlostpassword_postincludes/class-kwtsms-reset-otp.php:120
filtersend_retrieve_password_emailincludes/class-kwtsms-reset-otp.php:134
filtersend_retrieve_password_emailincludes/class-kwtsms-reset-otp.php:145
filtersend_retrieve_password_emailincludes/class-kwtsms-reset-otp.php:192
actionshow_user_profileincludes/class-kwtsms-user-meta.php:23
actionedit_user_profileincludes/class-kwtsms-user-meta.php:24
actionpersonal_options_updateincludes/class-kwtsms-user-meta.php:25
actionedit_user_profile_updateincludes/class-kwtsms-user-meta.php:26
actionadmin_noticesincludes/class-kwtsms-user-meta.php:27
actionuser_new_formincludes/class-kwtsms-user-meta.php:30
actionuser_registerincludes/class-kwtsms-user-meta.php:31
actionregister_formincludes/class-kwtsms-user-meta.php:33
filterregistration_errorsincludes/class-kwtsms-user-meta.php:34
actionuser_registerincludes/class-kwtsms-user-meta.php:35
filterwpcf7_before_send_mailincludes/integrations/class-kwtsms-cf7.php:69
actionwpcf7_submitincludes/integrations/class-kwtsms-cf7.php:75
filterninja_forms_submit_fieldsincludes/integrations/class-kwtsms-ninjaforms.php:80
actionninja_forms_after_submissionincludes/integrations/class-kwtsms-ninjaforms.php:84
actionwoocommerce_cart_updatedincludes/integrations/class-kwtsms-woo-cart.php:65
actionwoocommerce_checkout_order_createdincludes/integrations/class-kwtsms-woo-cart.php:68
actionadd_meta_boxesincludes/integrations/class-kwtsms-woo-metabox.php:49
actionwoocommerce_checkout_order_processedincludes/integrations/class-kwtsms-woo-multivendor.php:46
actionwoocommerce_store_api_checkout_order_processedincludes/integrations/class-kwtsms-woo-multivendor.php:48
actionwoocommerce_checkout_order_processedincludes/integrations/class-kwtsms-woo-multivendor.php:55
actionwoocommerce_store_api_checkout_order_processedincludes/integrations/class-kwtsms-woo-multivendor.php:57
actionwoocommerce_low_stockincludes/integrations/class-kwtsms-woo-stock.php:48
actionwoocommerce_no_stockincludes/integrations/class-kwtsms-woo-stock.php:51
actionwoocommerce_product_on_backorderincludes/integrations/class-kwtsms-woo-stock.php:54
actiontransition_post_statusincludes/integrations/class-kwtsms-woo-stock.php:59
actionwoocommerce_product_set_stock_statusincludes/integrations/class-kwtsms-woo-stock.php:64
actionwoocommerce_single_product_summaryincludes/integrations/class-kwtsms-woo-stock.php:65
actionbefore_woocommerce_initincludes/integrations/class-kwtsms-woo.php:66
actionwoocommerce_order_status_changedincludes/integrations/class-kwtsms-woo.php:85
actionwoocommerce_register_formincludes/integrations/class-kwtsms-woo.php:88
filterwoocommerce_registration_errorsincludes/integrations/class-kwtsms-woo.php:89
actionwoocommerce_created_customerincludes/integrations/class-kwtsms-woo.php:90
actionwoocommerce_edit_account_formincludes/integrations/class-kwtsms-woo.php:91
actionwoocommerce_after_order_notesincludes/integrations/class-kwtsms-woo.php:95
actionwoocommerce_checkout_processincludes/integrations/class-kwtsms-woo.php:96
actionwoocommerce_checkout_order_createdincludes/integrations/class-kwtsms-woo.php:97
filterwpforms_process_initial_errorsincludes/integrations/class-kwtsms-wpforms.php:67
actionwpforms_process_completeincludes/integrations/class-kwtsms-wpforms.php:70
actionadmin_menutrunk/admin/class-kwtsms-admin.php:56
actionadmin_inittrunk/admin/class-kwtsms-admin.php:57
actionadmin_inittrunk/admin/class-kwtsms-admin.php:58
actionadmin_enqueue_scriptstrunk/admin/class-kwtsms-admin.php:59
actionadmin_noticestrunk/admin/class-kwtsms-admin.php:60
actionwp_dashboard_setuptrunk/admin/class-kwtsms-admin.php:61
filterget_user_option_meta-box-order_dashboardtrunk/admin/class-kwtsms-admin.php:62
actionadmin_headtrunk/admin/class-kwtsms-admin.php:228
actionadmin_enqueue_scriptstrunk/admin/class-kwtsms-admin.php:238
actionuser_registertrunk/includes/class-kwtsms-admin-alerts.php:57
actionwp_logintrunk/includes/class-kwtsms-admin-alerts.php:61
actiontransition_post_statustrunk/includes/class-kwtsms-admin-alerts.php:65
actioncomment_posttrunk/includes/class-kwtsms-admin-alerts.php:69
actionupgrader_process_completetrunk/includes/class-kwtsms-admin-alerts.php:73
actionlogin_enqueue_scriptstrunk/includes/class-kwtsms-captcha.php:38
actionplugins_loadedtrunk/includes/class-kwtsms-integrations.php:42
filterauthenticatetrunk/includes/class-kwtsms-login-otp.php:51
actionwp_login_failedtrunk/includes/class-kwtsms-login-otp.php:52
actionlogin_inittrunk/includes/class-kwtsms-login-otp.php:53
actionlogin_formtrunk/includes/class-kwtsms-login-otp.php:54
filterlogin_form_kwtsms_otptrunk/includes/class-kwtsms-login-otp.php:58
filterlogin_form_kwtsms_passwordlesstrunk/includes/class-kwtsms-login-otp.php:59
actionuser_registertrunk/includes/class-kwtsms-plugin.php:115
actionpassword_resettrunk/includes/class-kwtsms-plugin.php:121
actionshow_user_profiletrunk/includes/class-kwtsms-plugin.php:124
actionedit_user_profiletrunk/includes/class-kwtsms-plugin.php:125
actionlogin_footertrunk/includes/class-kwtsms-plugin.php:129
actionwp_enqueue_scriptstrunk/includes/class-kwtsms-plugin.php:226
filterregistration_errorstrunk/includes/class-kwtsms-registration-otp-gate.php:82
filterregistration_errorstrunk/includes/class-kwtsms-registration-otp-gate.php:83
actionwoocommerce_register_formtrunk/includes/class-kwtsms-registration-otp-gate.php:84
filterwoocommerce_registration_errorstrunk/includes/class-kwtsms-registration-otp-gate.php:85
actionlogin_inittrunk/includes/class-kwtsms-registration-otp-gate.php:86
filterlogin_form_kwtsms_reg_otptrunk/includes/class-kwtsms-registration-otp-gate.php:89
actionlogin_inittrunk/includes/class-kwtsms-reset-otp.php:59
actionlogin_form_lostpasswordtrunk/includes/class-kwtsms-reset-otp.php:60
actionlogin_inittrunk/includes/class-kwtsms-reset-otp.php:61
filterlogin_form_kwtsms_reset_otptrunk/includes/class-kwtsms-reset-otp.php:64
actionlostpassword_posttrunk/includes/class-kwtsms-reset-otp.php:120
filtersend_retrieve_password_emailtrunk/includes/class-kwtsms-reset-otp.php:134
filtersend_retrieve_password_emailtrunk/includes/class-kwtsms-reset-otp.php:145
filtersend_retrieve_password_emailtrunk/includes/class-kwtsms-reset-otp.php:192
actionshow_user_profiletrunk/includes/class-kwtsms-user-meta.php:23
actionedit_user_profiletrunk/includes/class-kwtsms-user-meta.php:24
actionpersonal_options_updatetrunk/includes/class-kwtsms-user-meta.php:25
actionedit_user_profile_updatetrunk/includes/class-kwtsms-user-meta.php:26
actionadmin_noticestrunk/includes/class-kwtsms-user-meta.php:27
actionuser_new_formtrunk/includes/class-kwtsms-user-meta.php:30
actionuser_registertrunk/includes/class-kwtsms-user-meta.php:31
actionregister_formtrunk/includes/class-kwtsms-user-meta.php:33
filterregistration_errorstrunk/includes/class-kwtsms-user-meta.php:34
actionuser_registertrunk/includes/class-kwtsms-user-meta.php:35
filterwpcf7_before_send_mailtrunk/includes/integrations/class-kwtsms-cf7.php:69
actionwpcf7_submittrunk/includes/integrations/class-kwtsms-cf7.php:75
filterninja_forms_submit_fieldstrunk/includes/integrations/class-kwtsms-ninjaforms.php:80
actionninja_forms_after_submissiontrunk/includes/integrations/class-kwtsms-ninjaforms.php:84
actionwoocommerce_cart_updatedtrunk/includes/integrations/class-kwtsms-woo-cart.php:65
actionwoocommerce_checkout_order_createdtrunk/includes/integrations/class-kwtsms-woo-cart.php:68
actionadd_meta_boxestrunk/includes/integrations/class-kwtsms-woo-metabox.php:49
actionwoocommerce_checkout_order_processedtrunk/includes/integrations/class-kwtsms-woo-multivendor.php:46
actionwoocommerce_store_api_checkout_order_processedtrunk/includes/integrations/class-kwtsms-woo-multivendor.php:48
actionwoocommerce_checkout_order_processedtrunk/includes/integrations/class-kwtsms-woo-multivendor.php:55
actionwoocommerce_store_api_checkout_order_processedtrunk/includes/integrations/class-kwtsms-woo-multivendor.php:57
actionwoocommerce_low_stocktrunk/includes/integrations/class-kwtsms-woo-stock.php:48
actionwoocommerce_no_stocktrunk/includes/integrations/class-kwtsms-woo-stock.php:51
actionwoocommerce_product_on_backordertrunk/includes/integrations/class-kwtsms-woo-stock.php:54
actiontransition_post_statustrunk/includes/integrations/class-kwtsms-woo-stock.php:59
actionwoocommerce_product_set_stock_statustrunk/includes/integrations/class-kwtsms-woo-stock.php:64
actionwoocommerce_single_product_summarytrunk/includes/integrations/class-kwtsms-woo-stock.php:65
actionbefore_woocommerce_inittrunk/includes/integrations/class-kwtsms-woo.php:66
actionwoocommerce_order_status_changedtrunk/includes/integrations/class-kwtsms-woo.php:85
actionwoocommerce_register_formtrunk/includes/integrations/class-kwtsms-woo.php:88
filterwoocommerce_registration_errorstrunk/includes/integrations/class-kwtsms-woo.php:89
actionwoocommerce_created_customertrunk/includes/integrations/class-kwtsms-woo.php:90
actionwoocommerce_edit_account_formtrunk/includes/integrations/class-kwtsms-woo.php:91
actionwoocommerce_after_order_notestrunk/includes/integrations/class-kwtsms-woo.php:95
actionwoocommerce_checkout_processtrunk/includes/integrations/class-kwtsms-woo.php:96
actionwoocommerce_checkout_order_createdtrunk/includes/integrations/class-kwtsms-woo.php:97
filterwpforms_process_initial_errorstrunk/includes/integrations/class-kwtsms-wpforms.php:67
actionwpforms_process_completetrunk/includes/integrations/class-kwtsms-wpforms.php:70
actionplugins_loadedtrunk/wp-kwtsms.php:126
actionbefore_woocommerce_inittrunk/wp-kwtsms.php:138
actionplugins_loadedwp-kwtsms.php:126
actionbefore_woocommerce_initwp-kwtsms.php:138
Maintenance & Trust

kwtSMS: OTP & SMS Notifications Maintenance & Trust

Maintenance Signals

WordPress version tested6.9.4
Last updatedMar 25, 2026
PHP min version7.4
Downloads92

Community Trust

Rating0/100
Number of ratings0
Active installs0
Developer Profile

kwtSMS: OTP & SMS Notifications Developer Profile

kwtsms

1 plugin · 0 total installs

94
trust score
Avg Security Score
100/100
Avg Patch Time
30 days
View full developer profile
Detection Fingerprints

How We Detect kwtSMS: OTP & SMS Notifications

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

Asset Fingerprints

Asset Paths
/wp-content/plugins/kwtsms/assets/css/kwtsms-admin.css/wp-content/plugins/kwtsms/assets/css/kwtsms-otp.css/wp-content/plugins/kwtsms/assets/js/kwtsms-admin.js/wp-content/plugins/kwtsms/assets/js/kwtsms-otp.js/wp-content/plugins/kwtsms/assets/js/kwtsms-woo.js
Version Parameters
kwtsms/assets/css/kwtsms-admin.css?ver=kwtsms/assets/css/kwtsms-otp.css?ver=kwtsms/assets/js/kwtsms-admin.js?ver=kwtsms/assets/js/kwtsms-otp.js?ver=kwtsms/assets/js/kwtsms-woo.js?ver=

HTML / DOM Fingerprints

CSS Classes
kwtsms-otp-login-formkwtsms-otp-login-wrapperkwtsms-otp-form-fieldkwtsms-otp-buttonkwtsms-otp-inputkwtsms-otp-loaderkwtsms-otp-messagekwtsms-otp-resend-button+6 more
Data Attributes
data-kwtsms-otp-login-urldata-kwtsms-otp-verify-urldata-kwtsms-otp-resend-urldata-kwtsms-otp-noncedata-kwtsms-cf7-integrationdata-kwtsms-wpforms-integration+1 more
JS Globals
kwtsms_otp_ajax_object
REST Endpoints
/wp-json/kwtsms/v1/otp/login/wp-json/kwtsms/v1/otp/verify/wp-json/kwtsms/v1/otp/resend
FAQ

Frequently Asked Questions about kwtSMS: OTP & SMS Notifications