Friends Security & Risk Analysis

wordpress.org/plugins/friends

A self-hosted social reader for WordPress: follow people via RSS and ActivityPub, with multiple themes and a plugin ecosystem.

1K active installs v4.0.5 PHP 7.4+ WP + Updated Apr 10, 2026
decentralizedfriendsown-your-datarsssocial-network
96
A · Safe
CVEs total3
Unpatched0
Last CVEJul 11, 2025
Safety Verdict

Is Friends Safe to Use in 2026?

Generally Safe

Score 96/100

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

3 known CVEsLast CVE: Jul 11, 2025Updated 1mo ago
Risk Assessment

The "friends" v3.6.0 plugin demonstrates a mixed security posture. On the positive side, it shows strong adherence to secure coding practices with 100% of SQL queries using prepared statements and a high percentage (95%) of output properly escaped. The presence of numerous nonce and capability checks (54 and 43 respectively) is also a significant strength, indicating an effort to protect against common WordPress attacks. The absence of any currently unpatched CVEs is a good sign, suggesting active maintenance regarding known security issues.

However, several areas raise concerns. The presence of one AJAX handler without authentication checks, despite a generally good number of capability checks, represents a direct entry point for potential unauthorized actions. The static analysis also flagged the use of the `unserialize` function, which is notoriously dangerous when processing untrusted data and could lead to deserialization vulnerabilities if not handled with extreme care and strict input validation. The vulnerability history, while having no currently unpatched critical issues, reveals a pattern of past vulnerabilities including deserialization, missing authorization, and SSRF. This history, particularly the presence of high and medium severity vulnerabilities in the past, suggests that the plugin may have recurring security weaknesses that require vigilant monitoring and secure coding practices.

In conclusion, while "friends" v3.6.0 benefits from good practices in SQL and output handling, the unprotected AJAX handler and the `unserialize` function are immediate static analysis concerns. The past vulnerability record, especially for deserialization and authorization, necessitates a cautious approach. Users should be aware of these potential weaknesses and ensure the plugin is updated promptly if future vulnerabilities are discovered.

Key Concerns

  • AJAX handler without authentication
  • Use of dangerous function: unserialize
  • Past high severity vulnerability
  • Past medium severity vulnerabilities (x2)
  • Vulnerability history includes SSRF
  • Vulnerability history includes Deserialization
  • Vulnerability history includes Missing Authorization
Vulnerabilities
3 published

Friends Security Vulnerabilities

CVEs by Year

2 CVEs in 2024
2024
1 CVE in 2025
2025
Patched Has unpatched

Severity Breakdown

High
1
Medium
2

3 total CVEs

CVE-2025-7504high · 7.5Deserialization of Untrusted Data

Friends 3.5.1 - Authenticated (Subscriber+) PHP Object Injection

Jul 11, 2025 Patched in 3.5.2 (1d)
CVE-2024-12028medium · 5.3Missing Authorization

Friends <= 3.2.1 - Missing Authorization

Dec 5, 2024 Patched in 3.2.2 (5d)
CVE-2024-1978medium · 5.5Server-Side Request Forgery (SSRF)

Friends <= 2.8.5 - Authenticated (Admin+) Blind Server-Side Request Forgery

Feb 28, 2024 Patched in 2.8.6 (1d)
Version History

Friends Release Timeline

v4.0.5Current
v4.0.4
v4.0.3
v4.0.2
v4.0.1
v4.0.0
v3.6.0
v3.5.2
v3.5.11 CVE
v3.5.01 CVE
v3.4.91 CVE
v3.4.81 CVE
v3.4.71 CVE
v3.4.61 CVE
v3.4.51 CVE
v3.4.41 CVE
v3.4.31 CVE
v3.4.21 CVE
v3.4.11 CVE
v3.4.01 CVE
Code Analysis
Analyzed Mar 16, 2026

Friends Code Analysis

Dangerous Functions
1
Raw SQL Queries
0
66 prepared
Unescaped Output
86
1630 escaped
Nonce Checks
54
Capability Checks
43
File Operations
3
External Requests
9
Bundled Libraries
0

Dangerous Functions Found

unserialize$error = unserialize( $error_data->error ); // phpcs:ignore WordPress.PHP.DiscouragedPHPFunctions.seincludes\class-admin.php:1682

SQL Query Safety

100% prepared66 total queries

Output Escaping

95% escaped1716 total outputs
Data Flows · Security
1 unsanitized

Data Flow Analysis

14 flows1 with unsanitized paths
<class-admin> (includes\class-admin.php:0)
Source (user input) Sink (dangerous op) Sanitizer Transform Unsanitized Sanitized
Attack Surface
1 unprotected

Friends Attack Surface

Entry Points26
Unprotected1

AJAX Handlers 22

authwp_ajax_friends-boostfeed-parsers\class-feed-parser-activitypub.php:96
authwp_ajax_friends-preview-activitypubfeed-parsers\class-feed-parser-activitypub.php:118
authwp_ajax_friends-delete-followerfeed-parsers\class-feed-parser-activitypub.php:119
authwp_ajax_friends_preview_rulesincludes\class-admin.php:58
authwp_ajax_friends_refresh_link_tokenincludes\class-admin.php:59
authwp_ajax_friends_fetch_feedsincludes\class-admin.php:60
authwp_ajax_friends_set_avatarincludes\class-admin.php:61
authwp_ajax_friends_dashboardincludes\class-admin.php:68
authwp_ajax_friends_publishincludes\class-frontend.php:105
authwp_ajax_friends-change-post-formatincludes\class-frontend.php:106
authwp_ajax_friends-load-next-pageincludes\class-frontend.php:107
authwp_ajax_friends-autocompleteincludes\class-frontend.php:108
authwp_ajax_friends-set-widget-open-stateincludes\class-frontend.php:109
authwp_ajax_friends-get-post-countsincludes\class-frontend.php:110
authwp_ajax_friends-starincludes\class-frontend.php:112
authwp_ajax_friends-load-commentsincludes\class-frontend.php:113
authwp_ajax_friends-reblogincludes\class-frontend.php:114
authwp_ajax_friends-mark-readincludes\class-messages.php:50
authwp_ajax_friends_plugin_installerincludes\class-plugin-installer.php:36
authwp_ajax_friends_plugin_activationincludes\class-plugin-installer.php:37
authwp_ajax_friends_plugin_deactivationincludes\class-plugin-installer.php:38
authwp_ajax_friends-toggle-reactincludes\class-reactions.php:43

Shortcodes 4

[only-friends] includes\class-shortcodes.php:42
[not-friends] includes\class-shortcodes.php:43
[friends-list] includes\class-shortcodes.php:44
[friends-count] includes\class-shortcodes.php:45
WordPress Hooks 242
filtercomment_post_redirectfeed-parsers\class-feed-parser-activitypub.php:91
actionfriends_post_footer_firstfeed-parsers\class-feed-parser-activitypub.php:93
filterfriends_get_feed_metadatafeed-parsers\class-feed-parser-activitypub.php:102
filterfriends_get_activitypub_metadatafeed-parsers\class-feed-parser-activitypub.php:103
filtermastodon_api_mapback_user_idfeed-parsers\class-feed-parser-activitypub.php:105
filterfriends_mastodon_api_usernamefeed-parsers\class-feed-parser-activitypub.php:106
filtermastodon_api_statusfeed-parsers\class-feed-parser-activitypub.php:107
filtermastodon_api_canonical_user_idfeed-parsers\class-feed-parser-activitypub.php:108
filtermastodon_api_valid_userfeed-parsers\class-feed-parser-activitypub.php:109
filtermastodon_api_comment_parent_post_idfeed-parsers\class-feed-parser-activitypub.php:110
filtermastodon_api_in_reply_to_idfeed-parsers\class-feed-parser-activitypub.php:111
filterfriends_cache_url_post_idfeed-parsers\class-feed-parser-activitypub.php:112
actionfriends_post_author_metafeed-parsers\class-feed-parser-activitypub.php:114
actionfriends_get_template_part_frontend/parts/header-menufeed-parsers\class-feed-parser-activitypub.php:115
actionfriends_comments_formfeed-parsers\class-feed-parser-activitypub.php:116
actioncomments_openfeed-parsers\class-feed-parser-activitypub.php:117
actionmastodon_api_account_followingfeed-parsers\class-feed-parser-activitypub.php:121
actionmastodon_api_accountfeed-parsers\class-feed-parser-activitypub.php:122
actionfriends_message_form_accountsfeed-parsers\class-feed-parser-activitypub.php:123
actionfriends_send_direct_messagefeed-parsers\class-feed-parser-activitypub.php:124
actionfriends_after_headerfeed-parsers\class-feed-parser-activitypub.php:1895
filterfriends_no_comments_feed_availablefeed-parsers\class-feed-parser-activitypub.php:2903
actionplugins_loadedfriends.php:60
actionadmin_initfriends.php:61
actionadmin_initfriends.php:64
actionupgrader_process_completefriends.php:67
actionactivate_blogfriends.php:72
actionwp_initialize_sitefriends.php:73
filtercustomize_loaded_componentsfriends.php:76
actionwidgets_initfriends.php:80
actionwidgets_initfriends.php:83
actionwidgets_initfriends.php:86
actionwidgets_initfriends.php:89
actionwidgets_initfriends.php:92
actionwidgets_initfriends.php:95
actionwidgets_initfriends.php:98
actionwidgets_initfriends.php:101
actionwidgets_initfriends.php:104
actionfriends_load_parsersfriends.php:107
actionfriends_load_parsersfriends.php:116
actionfriends_load_parsersfriends.php:125
actionfriends_load_parsersfriends.php:134
filterdetermine_current_userincludes\class-access-control.php:49
filteroption_comment_whitelistincludes\class-access-control.php:50
actionset_user_roleincludes\class-access-control.php:51
actionmap_meta_capincludes\class-access-control.php:52
actiondelete_userincludes\class-access-control.php:53
actioninitincludes\class-access-control.php:54
actionadmin_menuincludes\class-admin.php:42
actionfriends_own_site_menu_topincludes\class-admin.php:43
filterusers_list_table_query_argsincludes\class-admin.php:44
filteruser_row_actionsincludes\class-admin.php:45
filterhandle_bulk_actions-usersincludes\class-admin.php:46
filterbulk_actions-usersincludes\class-admin.php:47
filtermanage_users_columnsincludes\class-admin.php:48
filtermanage_users_custom_columnincludes\class-admin.php:49
filterthe_titleincludes\class-admin.php:50
filterget_edit_user_linkincludes\class-admin.php:51
actionadmin_bar_menuincludes\class-admin.php:52
actionadmin_bar_menuincludes\class-admin.php:53
actionwp_headincludes\class-admin.php:54
actioncurrent_screenincludes\class-admin.php:55
actionadmin_enqueue_scriptsincludes\class-admin.php:56
actiongettext_with_contextincludes\class-admin.php:57
actiondelete_user_formincludes\class-admin.php:62
actiondelete_userincludes\class-admin.php:63
actionremove_user_from_blogincludes\class-admin.php:64
actiontool_boxincludes\class-admin.php:65
actiondashboard_glance_itemsincludes\class-admin.php:66
actionwp_dashboard_setupincludes\class-admin.php:67
filtersite_status_testsincludes\class-admin.php:69
filtersite_status_test_php_modulesincludes\class-admin.php:70
filterdebug_informationincludes\class-admin.php:71
filterfriends_create_and_followincludes\class-admin.php:72
filterfriends_admin_tabsincludes\class-admin.php:73
actionadmin_noticesincludes\class-admin.php:76
filterfriends_unread_countincludes\class-admin.php:78
filterpre_get_postsincludes\class-admin.php:79
actionadmin_head-users.phpincludes\class-admin.php:245
filternotify_about_new_friend_postincludes\class-admin.php:352
filterfriends_friend_private_feed_urlincludes\class-admin.php:354
actionfriends_retrieved_new_postsincludes\class-admin.php:372
actionfriends_incoming_feed_itemsincludes\class-admin.php:390
actionfriends_retrieve_friends_errorincludes\class-admin.php:398
filternotify_about_new_friend_postincludes\class-admin.php:934
filternotify_about_new_friend_postincludes\class-admin.php:1793
filterpre_determine_localeincludes\class-admin.php:2494
filterfriends_admin_tabsincludes\class-admin.php:2773
filterfriends_admin_tabsincludes\class-admin.php:2809
actionfriends_admin_menu_settingsincludes\class-automatic-status.php:42
filterfriends_admin_settings_slugsincludes\class-automatic-status.php:43
filterfriends_admin_tabsincludes\class-automatic-status.php:44
filterhandle_bulk_actions-edit-postincludes\class-automatic-status.php:45
actionfriends_user_post_reactionincludes\class-automatic-status.php:50
actionset_user_roleincludes\class-automatic-status.php:51
actionsetincludes\class-automatic-status.php:52
filtermanage_edit-post_columnsincludes\class-automatic-status.php:140
filterpost_row_actionsincludes\class-automatic-status.php:152
actionadmin_enqueue_scriptsincludes\class-blocks.php:55
filterrender_blockincludes\class-blocks.php:56
filterget_the_excerptincludes\class-blocks.php:57
filterget_the_excerptincludes\class-blocks.php:58
filterwp_loadedincludes\class-blocks.php:59
filtertemplate_redirectincludes\class-blocks.php:60
actionenqueue_block_editor_assetsincludes\class-blocks.php:61
actioninitincludes\class-blocks.php:62
filterpre_get_postsincludes\class-feed.php:59
filterprivate_title_formatincludes\class-feed.php:60
filterpre_option_rss_use_excerptincludes\class-feed.php:61
filterfriends_early_modify_feed_itemincludes\class-feed.php:62
filterfriends_modify_feed_itemincludes\class-feed.php:63
actionrss_itemincludes\class-feed.php:65
actionrss2_itemincludes\class-feed.php:66
actionrss_nsincludes\class-feed.php:67
actionrss2_nsincludes\class-feed.php:68
actioncron_friends_refresh_feedsincludes\class-feed.php:70
actionfriends_retrieve_user_feedsincludes\class-feed.php:71
actionwp_loadedincludes\class-feed.php:73
actionwp_feed_optionsincludes\class-feed.php:74
actionwp_insert_postincludes\class-feed.php:76
actionoembed_request_post_idincludes\class-feed.php:77
actionpost_embed_urlincludes\class-feed.php:78
filterwp_revisions_to_keepincludes\class-feed.php:579
filterwp_kses_allowed_htmlincludes\class-feed.php:593
actioninitincludes\class-friends.php:189
actioninitincludes\class-friends.php:190
actioninitincludes\class-friends.php:192
actionwpincludes\class-friends.php:193
filterget_avatar_dataincludes\class-friends.php:194
actiontemplate_redirectincludes\class-friends.php:196
filterwp_headincludes\class-friends.php:197
filterlogin_headincludes\class-friends.php:198
filterafter_setup_themeincludes\class-friends.php:200
filtercron_schedulesincludes\class-friends.php:201
actioncron_friends_delete_old_postsincludes\class-friends.php:202
actiontemplate_redirectincludes\class-friends.php:203
actioncomment_form_defaultsincludes\class-friends.php:205
filterfriends_frontend_post_typesincludes\class-friends.php:206
filterrequestincludes\class-friends.php:208
filtermy_apps_pluginsincludes\class-friends.php:209
filterpre_get_postsincludes\class-frontend.php:97
filterpost_type_linkincludes\class-frontend.php:98
filterfriends_header_widget_titleincludes\class-frontend.php:99
filterget_edit_post_linkincludes\class-frontend.php:100
filtertemplate_includeincludes\class-frontend.php:101
filterwp_loadedincludes\class-frontend.php:102
filterinitincludes\class-frontend.php:103
actioninitincludes\class-frontend.php:104
actionfriends_search_autocompleteincludes\class-frontend.php:111
actionfriends_post_footer_firstincludes\class-frontend.php:115
filterfriends_reblogincludes\class-frontend.php:116
filterfriends_unreblogincludes\class-frontend.php:117
actionwp_untrash_post_statusincludes\class-frontend.php:118
actionwp_enqueue_scriptsincludes\class-frontend.php:119
actiontemplate_redirectincludes\class-frontend.php:120
actionfriends_load_theme_defaultincludes\class-frontend.php:121
actionfriends_template_pathsincludes\class-frontend.php:122
actionwp_enqueue_scriptsincludes\class-frontend.php:123
actionwp_footerincludes\class-frontend.php:124
actionthe_postincludes\class-frontend.php:125
actionparse_queryincludes\class-frontend.php:126
filterbody_classincludes\class-frontend.php:127
filtertag_row_actionsincludes\class-frontend.php:128
filterfriends_override_author_nameincludes\class-frontend.php:130
filterfriends_friend_posts_query_viewableincludes\class-frontend.php:131
filterdocument_title_partsincludes\class-frontend.php:177
actioncustomize_registerincludes\class-frontend.php:240
filterpre_handle_404includes\class-frontend.php:1481
actioninitincludes\class-logging.php:49
actionfriends_retrieved_new_postsincludes\class-logging.php:50
actionfriends_retrieve_friends_errorincludes\class-logging.php:51
actionfriends_logincludes\class-logging.php:52
actioninitincludes\class-messages.php:45
actioninitincludes\class-messages.php:46
filterpost_type_linkincludes\class-messages.php:47
filterfriends_unread_countincludes\class-messages.php:48
actionfriends_own_site_menu_topincludes\class-messages.php:49
actionrest_api_initincludes\class-messages.php:51
actionfriends_author_headerincludes\class-messages.php:52
actionfriends_after_headerincludes\class-messages.php:53
actionfriends_after_headerincludes\class-messages.php:54
filtertemplate_redirectincludes\class-messages.php:55
filterfriends_message_form_accountsincludes\class-messages.php:56
filterfriends_send_direct_messageincludes\class-messages.php:57
filterfriends_send_direct_messageincludes\class-messages.php:58
filternotify_friend_message_receivedincludes\class-messages.php:59
filtermastodon_api_conversationincludes\class-messages.php:60
filtermastodon_api_conversationsincludes\class-messages.php:61
filtermastodon_api_status_context_post_typesincludes\class-messages.php:62
filtermastodon_api_status_context_post_statusesincludes\class-messages.php:63
filterapi_status_context_post_typesincludes\class-messages.php:64
filterapi_status_context_post_statusesincludes\class-messages.php:65
filtermastodon_api_submit_statusincludes\class-messages.php:66
filtermastodon_api_conversation_mark_readincludes\class-messages.php:67
filtermastodon_api_conversation_deleteincludes\class-messages.php:68
filtermastodon_api_statusincludes\class-messages.php:69
filtermastodon_api_get_notifications_query_argsincludes\class-messages.php:70
filterfriends_frontend_post_typesincludes\class-messages.php:263
filterexcerpt_lengthincludes\class-messages.php:498
filterfriends_rewrite_mail_htmlincludes\class-notifications.php:42
filterfriends_rewrite_mail_htmlincludes\class-notifications.php:43
actionnotify_new_friend_postincludes\class-notifications.php:44
filterfriends_notify_keyword_match_postincludes\class-notifications.php:45
actionnotify_new_friend_requestincludes\class-notifications.php:46
actionnotify_accepted_friend_requestincludes\class-notifications.php:47
actionnotify_friend_message_receivedincludes\class-notifications.php:48
actionnotify_unknown_friend_message_receivedincludes\class-notifications.php:49
actionactivitypub_new_follower_emailincludes\class-notifications.php:50
actionactivitypub_followers_post_followincludes\class-notifications.php:51
actionactivitypub_followers_pre_remove_followerincludes\class-notifications.php:52
filterwp_mail_fromincludes\class-notifications.php:81
filterget_user_option_friends_keyword_notification_override_disabledincludes\class-notifications.php:125
actionphpmailer_initincludes\class-notifications.php:677
filterwp_mail_fromincludes\class-notifications.php:688
actionadmin_enqueue_scriptsincludes\class-plugin-installer.php:35
filterplugins_apiincludes\class-plugin-installer.php:39
filterupgrader_post_installincludes\class-plugin-installer.php:42
actioninitincludes\class-reactions.php:42
actionfriends_reactincludes\class-reactions.php:44
actionfriends_unreactincludes\class-reactions.php:45
actionfriends_get_user_reactionsincludes\class-reactions.php:46
actionrest_api_initincludes\class-rest.php:43
actionwp_trash_postincludes\class-rest.php:44
actionbefore_delete_postincludes\class-rest.php:45
actionset_user_roleincludes\class-rest.php:46
actionrest_pre_serve_requestincludes\class-rest.php:47
filterlocaleincludes\class-rest.php:249
filternotify_about_new_friend_postincludes\class-rest.php:659
actionwp_feed_optionsincludes\class-rest.php:660
filteroption_fx-private-siteincludes\class-third-parties.php:42
filterwp_sweep_excluded_taxonomiesincludes\class-third-parties.php:43
filterfriends_get_user_feedsincludes\class-user.php:144
filtermastodon_api_accountintegrations\class-enable-mastodon-apps.php:16
filtermastodon_api_account_idintegrations\class-enable-mastodon-apps.php:17
filtermastodon_api_get_posts_query_argsintegrations\class-enable-mastodon-apps.php:18
filtermastodon_entity_relationshipintegrations\class-enable-mastodon-apps.php:19
filtermastodon_api_account_followintegrations\class-enable-mastodon-apps.php:20
actionmastodon_api_account_unfollowintegrations\class-enable-mastodon-apps.php:21
filtermastodon_api_view_post_typesintegrations\class-enable-mastodon-apps.php:22
filtermastodon_api_favourites_argsintegrations\class-enable-mastodon-apps.php:23
filtermastodon_api_bookmarks_argsintegrations\class-enable-mastodon-apps.php:24
filterdocument_title_partstemplates\frontend\header.php:14

Scheduled Events 4

friends_retrieve_user_feeds
cron_friends_refresh_feeds
cron_friends_refresh_feeds
cron_friends_delete_old_posts
Maintenance & Trust

Friends Maintenance & Trust

Maintenance Signals

WordPress version tested7.0
Last updatedApr 10, 2026
PHP min version7.4
Downloads84K

Community Trust

Rating100/100
Number of ratings6
Active installs1K
Developer Profile

Friends Developer Profile

Alex Kirk

7 plugins · 2K total installs

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

How We Detect Friends

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

Asset Fingerprints

Asset Paths
/wp-content/plugins/friends/widgets/css/widget-friends-list.css/wp-content/plugins/friends/widgets/css/widget-friend-request.css/wp-content/plugins/friends/widgets/css/widget-refresh.css/wp-content/plugins/friends/widgets/css/widget-post-formats.css/wp-content/plugins/friends/widgets/css/widget-friend-stats.css/wp-content/plugins/friends/widgets/css/widget-new-private-post.css/wp-content/plugins/friends/widgets/css/widget-starred-friends-list.css/wp-content/plugins/friends/widgets/css/widget-recent-friends-list.css+4 more
Script Paths
/wp-content/plugins/friends/js/friends.js/wp-content/plugins/friends/js/friends-admin.js
Version Parameters
friends/widgets/css/widget-friends-list.css?ver=friends/widgets/css/widget-friend-request.css?ver=friends/widgets/css/widget-refresh.css?ver=friends/widgets/css/widget-post-formats.css?ver=friends/widgets/css/widget-friend-stats.css?ver=friends/widgets/css/widget-new-private-post.css?ver=friends/widgets/css/widget-starred-friends-list.css?ver=friends/widgets/css/widget-recent-friends-list.css?ver=friends/widgets/css/widget-header.css?ver=friends/css/admin.css?ver=friends/css/frontend.css?ver=friends/css/compat.css?ver=friends/js/friends.js?ver=friends/js/friends-admin.js?ver=

HTML / DOM Fingerprints

CSS Classes
widget_friends_listwidget_friend_requestwidget_refreshwidget_post_formatswidget_friend_statswidget_new_private_postwidget_starred_friends_listwidget_recent_friends_list+1 more
Data Attributes
data-friend-iddata-friend-slug
JS Globals
friends_settings
REST Endpoints
/wp-json/friends/v1/users
Shortcode Output
[friends_list[friends_starred][friends_recent][friends_requests]
FAQ

Frequently Asked Questions about Friends