Keyring Security & Risk Analysis

wordpress.org/plugins/keyring

An authentication framework that handles authorization/communication with most popular web services.

1K active installs v3.0 PHP + WP 4.0+ Updated Apr 25, 2023
authenticationauthorizationhttp-basicoauthsecurity
85
A · Safe
CVEs total1
Unpatched0
Last CVEJul 7, 2014
Safety Verdict

Is Keyring Safe to Use in 2026?

Generally Safe

Score 85/100

Keyring has a strong security track record. Known vulnerabilities have been patched promptly. It's a solid choice for most WordPress installations.

1 known CVELast CVE: Jul 7, 2014Updated 3yr ago
Risk Assessment

The Keyring plugin version 3.0 exhibits a mixed security posture. On the positive side, it demonstrates good practices by utilizing prepared statements for all SQL queries and includes a reasonable number of capability checks (3) and nonce checks (11). There are no reported unpatched CVEs, and the plugin has not had a reported vulnerability since 2014, suggesting a period of relative stability. The static analysis also shows a zero attack surface in terms of unprotected AJAX, REST API, shortcodes, and cron events.

However, several concerning signals emerge from the static analysis. The presence of two instances of the 'unserialize' function is a significant risk, as this function is notorious for its potential to lead to Remote Code Execution or Denial of Service vulnerabilities if used with untrusted input. While the taint analysis did not flag any critical or high-severity issues, there are seven flows with unsanitized paths, indicating potential areas where malicious input could be processed without adequate sanitization. Furthermore, only 22% of output is properly escaped, which significantly increases the risk of Cross-Site Scripting (XSS) vulnerabilities, especially considering the plugin's history of XSS issues.

In conclusion, while Keyring v3.0 has addressed critical areas like SQL injection and has a good track record of being patched, the identified 'unserialize' usage, unsanitized paths in taint flows, and particularly the low rate of output escaping present substantial security weaknesses. These factors collectively elevate the risk profile of the plugin, making it susceptible to XSS and potentially more severe vulnerabilities if the 'unserialize' function is triggered with malformed data.

Key Concerns

  • Presence of 'unserialize' function
  • Flows with unsanitized paths
  • Low percentage of properly escaped output
  • Historical XSS vulnerability type
Vulnerabilities
1 published

Keyring Security Vulnerabilities

CVEs by Year

1 CVE in 2014
2014
Patched Has unpatched

Severity Breakdown

Medium
1

1 total CVE

WF-e60de5d9-34f8-4068-b656-11b2b6cb36d4-keyringmedium · 6.1Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting')

Keyring < 1.5.1 - Cross-Site Scripting

Jul 7, 2014 Patched in 1.5.1 (3487d)
Code Analysis
Analyzed Apr 6, 2026

Keyring Code Analysis

Dangerous Functions
2
Raw SQL Queries
0
0 prepared
Unescaped Output
134
37 escaped
Nonce Checks
11
Capability Checks
3
File Operations
1
External Requests
17
Bundled Libraries
0

Dangerous Functions Found

unserializeunserialize( $post->post_content ),includes/stores/singlestore.php:145
unserializeunserialize( $post->post_content ),includes/stores/singlestore.php:183

Output Escaping

22% escaped171 total outputs
Data Flows · Security
7 unsanitized

Data Flow Analysis

14 flows7 with unsanitized paths
request_ui (includes/services/core/http-basic.php:32)
Source (user input) Sink (dangerous op) Sanitizer Transform Unsanitized Sanitized
Attack Surface

Keyring Attack Surface

Entry Points0
Unprotected0
WordPress Hooks 96
actionadmin_menuadmin-ui.php:18
actionadmin_headadmin-ui.php:55
actionkeyring_500px_manage_uiincludes/services/extended/500px.php:16
filterkeyring_500px_basic_ui_introincludes/services/extended/500px.php:17
actionkeyring_load_servicesincludes/services/extended/500px.php:94
actionkeyring_eventbrite_manage_uiincludes/services/extended/eventbrite.php:23
filterkeyring_eventbrite_basic_ui_introincludes/services/extended/eventbrite.php:24
actionkeyring_load_servicesincludes/services/extended/eventbrite.php:89
actionkeyring_facebook_manage_uiincludes/services/extended/facebook.php:16
filterkeyring_facebook_basic_ui_introincludes/services/extended/facebook.php:17
filterkeyring_facebook_request_token_paramsincludes/services/extended/facebook.php:45
actionkeyring_load_servicesincludes/services/extended/facebook.php:205
actionkeyring_fitbit_manage_uiincludes/services/extended/fitbit.php:18
filterkeyring_fitbit_basic_ui_introincludes/services/extended/fitbit.php:19
actionpre_keyring_fitbit_verifyincludes/services/extended/fitbit.php:36
filterkeyring_fitbit_request_token_paramsincludes/services/extended/fitbit.php:41
filterkeyring_fitbit_verify_token_paramsincludes/services/extended/fitbit.php:42
filterkeyring_fitbit_verify_token_post_paramsincludes/services/extended/fitbit.php:43
filterkeyring_access_tokenincludes/services/extended/fitbit.php:45
actionkeyring_load_servicesincludes/services/extended/fitbit.php:200
actionkeyring_flickr_manage_uiincludes/services/extended/flickr.php:16
filterkeyring_flickr_basic_ui_introincludes/services/extended/flickr.php:17
actionkeyring_load_servicesincludes/services/extended/flickr.php:133
actionkeyring_foursquare_manage_uiincludes/services/extended/foursquare.php:20
filterkeyring_foursquare_basic_ui_introincludes/services/extended/foursquare.php:21
actionkeyring_load_servicesincludes/services/extended/foursquare.php:88
actionkeyring_github_manage_uiincludes/services/extended/github.php:18
filterkeyring_github_basic_ui_introincludes/services/extended/github.php:19
filterkeyring_github_request_token_paramsincludes/services/extended/github.php:39
filterkeyring_github_verify_token_post_paramsincludes/services/extended/github.php:40
actionpre_keyring_github_verifyincludes/services/extended/github.php:42
actionkeyring_load_servicesincludes/services/extended/github.php:126
actionkeyring_load_servicesincludes/services/extended/google-analytics.php:38
actionkeyring_load_servicesincludes/services/extended/google-contacts.php:45
actionkeyring_load_servicesincludes/services/extended/google-drive.php:51
actionkeyring_load_servicesincludes/services/extended/google-mail.php:38
actionkeyring_load_servicesincludes/services/extended/instagram-basic-display.php:194
actionkeyring_instagram_manage_uiincludes/services/extended/instagram.php:17
filterkeyring_instagram_basic_ui_introincludes/services/extended/instagram.php:18
actionkeyring_load_servicesincludes/services/extended/instagram.php:71
actionkeyring_instapaper_manage_uiincludes/services/extended/instapaper.php:16
filterkeyring_instapaper_basic_ui_introincludes/services/extended/instapaper.php:17
actionkeyring_instapaper_request_uiincludes/services/extended/instapaper.php:18
actionkeyring_load_servicesincludes/services/extended/instapaper.php:254
actionkeyring_jetpack_manage_uiincludes/services/extended/jetpack.php:18
filterkeyring_jetpack_basic_ui_introincludes/services/extended/jetpack.php:19
actionpre_keyring_jetpack_verifyincludes/services/extended/jetpack.php:37
filterkeyring_jetpack_request_token_paramsincludes/services/extended/jetpack.php:46
actionkeyring_load_servicesincludes/services/extended/jetpack.php:114
actionkeyring_linkedin_manage_uiincludes/services/extended/linkedin.php:18
filterkeyring_linkedin_basic_ui_introincludes/services/extended/linkedin.php:19
actionkeyring_load_servicesincludes/services/extended/linkedin.php:159
actionkeyring_moves_manage_uiincludes/services/extended/moves.php:34
filterkeyring_moves_basic_ui_introincludes/services/extended/moves.php:35
actionpre_keyring_moves_verifyincludes/services/extended/moves.php:52
filterkeyring_moves_request_token_paramsincludes/services/extended/moves.php:57
actionkeyring_load_servicesincludes/services/extended/moves.php:128
actionkeyring_nest_manage_uiincludes/services/extended/nest.php:17
filterkeyring_nest_basic_ui_introincludes/services/extended/nest.php:18
actionpre_keyring_nest_verifyincludes/services/extended/nest.php:39
actionkeyring_load_servicesincludes/services/extended/nest.php:109
actionkeyring_pinterest_manage_uiincludes/services/extended/pinterest.php:18
filterkeyring_pinterest_basic_ui_introincludes/services/extended/pinterest.php:19
filterkeyring_pinterest_request_token_paramsincludes/services/extended/pinterest.php:37
actionpre_keyring_pinterest_verifyincludes/services/extended/pinterest.php:40
actionkeyring_load_servicesincludes/services/extended/pinterest.php:116
actionkeyring_pocket_manage_uiincludes/services/extended/pocket.php:12
filterkeyring_pocket_basic_ui_introincludes/services/extended/pocket.php:13
filterkeyring_request_tokenincludes/services/extended/pocket.php:33
filterkeyring_pocket_request_token_paramsincludes/services/extended/pocket.php:34
filterkeyring_pocket_verify_token_paramsincludes/services/extended/pocket.php:35
actionkeyring_load_servicesincludes/services/extended/pocket.php:172
actionkeyring_runkeeper_manage_uiincludes/services/extended/runkeeper.php:17
filterkeyring_runkeeper_basic_ui_introincludes/services/extended/runkeeper.php:18
actionkeyring_load_servicesincludes/services/extended/runkeeper.php:87
actionkeyring_strava_manage_uiincludes/services/extended/strava.php:17
filterkeyring_strava_basic_ui_introincludes/services/extended/strava.php:18
actionkeyring_load_servicesincludes/services/extended/strava.php:167
actionkeyring_tripit_manage_uiincludes/services/extended/tripit.php:16
filterkeyring_tripit_basic_ui_introincludes/services/extended/tripit.php:17
actionkeyring_load_servicesincludes/services/extended/tripit.php:97
actionkeyring_tumblr_manage_uiincludes/services/extended/tumblr.php:16
filterkeyring_tumblr_basic_ui_introincludes/services/extended/tumblr.php:17
actionkeyring_load_servicesincludes/services/extended/tumblr.php:171
actionkeyring_twitter_manage_uiincludes/services/extended/twitter.php:16
filterkeyring_twitter_basic_ui_introincludes/services/extended/twitter.php:17
actionkeyring_load_servicesincludes/services/extended/twitter.php:110
actionkeyring_yahoo_manage_uiincludes/services/extended/yahoo.php:16
filterkeyring_yahoo_basic_ui_introincludes/services/extended/yahoo.php:17
actionkeyring_load_servicesincludes/services/extended/yahoo.php:143
actionkeyring_load_servicesincludes/services/extended/youtube.php:45
filterkeyring_admin_urlkeyring.php:50
actioninitkeyring.php:106
actioninitkeyring.php:109
actionadmin_initkeyring.php:122
actionplugins_loadedkeyring.php:432
Maintenance & Trust

Keyring Maintenance & Trust

Maintenance Signals

WordPress version tested6.2.9
Last updatedApr 25, 2023
PHP min version
Downloads95K

Community Trust

Rating86/100
Number of ratings6
Active installs1K
Developer Profile

Keyring Developer Profile

Beau Lebens

2 plugins · 1K total installs

69
trust score
Avg Security Score
85/100
Avg Patch Time
3487 days
View full developer profile
Detection Fingerprints

How We Detect Keyring

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

Asset Fingerprints

Asset Paths
/wp-content/plugins/keyring/css/keyring.css/wp-content/plugins/keyring/js/keyring.js
Script Paths
/wp-content/plugins/keyring/js/keyring.js
Version Parameters
keyring/css/keyring.css?ver=keyring/js/keyring.js?ver=

HTML / DOM Fingerprints

CSS Classes
keyring-connectedkeyring-service-settings
HTML Comments
<!-- BEGIN Admin UI --><!-- END Admin UI --><!-- Keyring Debugging: -->
Data Attributes
data-keyring-servicedata-keyring-action
JS Globals
window.Keyring
FAQ

Frequently Asked Questions about Keyring