IndieBlocks Security & Risk Analysis

wordpress.org/plugins/indieblocks

Use blocks, and, optionally, "short-form" post types to easily "IndieWebify" your WordPress site.

100 active installs v0.13.3 PHP + WP 6.2+ Updated Jun 14, 2025
blocksindiewebmicroblognoteswebmention
97
A · Safe
CVEs total2
Unpatched0
Last CVEJun 12, 2025
Safety Verdict

Is IndieBlocks Safe to Use in 2026?

Generally Safe

Score 97/100

IndieBlocks has a strong security track record. Known vulnerabilities have been patched promptly.

2 known CVEsLast CVE: Jun 12, 2025Updated 9mo ago
Risk Assessment

The indieblocks plugin v0.13.3 presents a mixed security posture. On the positive side, the plugin demonstrates good practices by largely utilizing prepared statements for SQL queries and properly escaping a high percentage of its output. The absence of dangerous functions, file operations, and critical taint flows is also encouraging. However, several concerns warrant attention. The presence of an unprotected REST API route represents a significant attack vector. While the total attack surface isn't exceptionally large, the unprotected entry point is a critical flaw that could be exploited. The plugin's history of two CVEs, including a high and a medium severity vulnerability, with one being a Cross-site Scripting (XSS) and the other Server-Side Request Forgery (SSRF), is a red flag. Although there are currently no unpatched vulnerabilities, this history suggests a recurring pattern of security weaknesses that require careful monitoring and prompt patching of future issues. The last vulnerability being in the near future (2025-06-12) may be a data anomaly but doesn't negate the past issues. Overall, while the code quality shows some positive aspects, the unprotected entry point and the past vulnerability history necessitate vigilance.

Key Concerns

  • REST API route without permission callbacks
  • History of High severity vulnerability
  • History of Medium severity vulnerability
Vulnerabilities
2

IndieBlocks Security Vulnerabilities

CVEs by Year

2 CVEs in 2025
2025
Patched Has unpatched

Severity Breakdown

High
1
Medium
1

2 total CVEs

CVE-2025-5950medium · 6.4Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting')

IndieBlocks <= 0.13.2 - Authenticated (Contributor+) Stored Cross-Site Scripting via kind Parameter

Jun 12, 2025 Patched in 0.13.3 (6d)
CVE-2025-31009high · 7.2Server-Side Request Forgery (SSRF)

IndieBlocks <= 0.13.1 - Unauthenticated Server-Side Request Forgery

Apr 9, 2025 Patched in 0.13.2 (9d)
Code Analysis
Analyzed Mar 16, 2026

IndieBlocks Code Analysis

Dangerous Functions
0
Raw SQL Queries
3
9 prepared
Unescaped Output
24
162 escaped
Nonce Checks
3
Capability Checks
8
File Operations
0
External Requests
2
Bundled Libraries
0

SQL Query Safety

75% prepared12 total queries

Output Escaping

87% escaped186 total outputs
Data Flows
All sanitized

Data Flow Analysis

2 flows
reschedule_webmention (includes\webmention\class-webmention-sender.php:750)
Source (user input) Sink (dangerous op) Sanitizer Transform Unsanitized Sanitized
Attack Surface
1 unprotected

IndieBlocks Attack Surface

Entry Points4
Unprotected1

AJAX Handlers 2

authwp_ajax_indieblocks_delete_avatarincludes\webmention\class-webmention-receiver.php:32
authwp_ajax_indieblocks_resend_webmentionincludes\webmention\class-webmention-sender.php:53

REST API Routes 2

GET/wp-json/indieblocks/v1/metaincludes\class-blocks.php:176
POST/wp-json/indieblocks/v1/webmentionincludes\webmention\class-webmention-receiver.php:39
WordPress Hooks 101
actionwp_footerblocks\facepile-content\render.php:32
actionadmin_enqueue_scriptsincludes\class-blocks.php:17
actioninitincludes\class-blocks.php:19
actioninitincludes\class-blocks.php:20
actioninitincludes\class-blocks.php:21
actionrest_api_initincludes\class-blocks.php:23
filterexcerpt_allowed_wrapper_blocksincludes\class-blocks.php:25
filterexcerpt_allowed_blocksincludes\class-blocks.php:26
filterthe_excerpt_rssincludes\class-blocks.php:27
actionpre_get_commentsincludes\class-blocks.php:31
filterget_comments_numberincludes\class-blocks.php:32
filterhooked_block_typesincludes\class-blocks.php:36
filterhooked_block_indieblocks/facepileincludes\class-blocks.php:37
filterrequestincludes\class-feeds.php:22
filterinitincludes\class-feeds.php:26
actiondo_feed_rss2includes\class-feeds.php:34
actiondo_feed_atomincludes\class-feeds.php:35
filterthe_excerpt_rssincludes\class-feeds.php:40
filterthe_content_feedincludes\class-feeds.php:41
filterwp_title_rssincludes\class-feeds.php:105
actionwp_headincludes\class-feeds.php:108
actionenqueue_block_editor_assetsincludes\class-location.php:19
actionrest_api_initincludes\class-location.php:22
actionrest_api_initincludes\class-location.php:25
actionadd_meta_boxesincludes\class-location.php:28
actionadmin_footerincludes\class-location.php:37
filteris_protected_metaincludes\class-location.php:112
filtermicropub_post_typeincludes\class-micropub-compat.php:23
filtermicropub_queryincludes\class-micropub-compat.php:31
filtermicropub_queryincludes\class-micropub-compat.php:36
filtermicropub_post_contentincludes\class-micropub-compat.php:42
filtermicropub_dynamic_renderincludes\class-micropub-compat.php:45
actionadmin_menuincludes\class-options-handler.php:196
actioninitincludes\class-options-handler.php:197
actionrest_api_initincludes\class-options-handler.php:198
actionadmin_initincludes\class-options-handler.php:222
actionplugins_loadedincludes\class-plugin.php:55
filteroption_indieblocks_settingsincludes\class-plugin.php:63
actionplugins_loadedincludes\class-plugin.php:75
actionplugins_loadedincludes\class-plugin.php:80
actionplugins_loadedincludes\class-plugin.php:84
actionplugins_loadedincludes\class-plugin.php:88
actionplugins_loadedincludes\class-plugin.php:92
filterpre_get_avatarincludes\class-plugin.php:96
actionadmin_enqueue_scriptsincludes\class-plugin.php:97
actionplugins_loadedincludes\class-plugin.php:100
actionplugins_loadedincludes\class-plugin.php:105
actionplugins_loadedincludes\class-plugin.php:109
actioninitincludes\class-post-types.php:21
actioninitincludes\class-post-types.php:24
actioninitincludes\class-post-types.php:25
actionwpincludes\class-post-types.php:28
filterpost_type_linkincludes\class-post-types.php:32
filterwp_unique_post_slugincludes\class-post-types.php:33
actionpre_get_postsincludes\class-post-types.php:38
filterwp_insert_post_dataincludes\class-post-types.php:42
filterwp_insert_post_dataincludes\class-post-types.php:47
filtersave_post_indieblocks_noteincludes\class-post-types.php:51
filterrest_after_insert_indieblocks_noteincludes\class-post-types.php:52
filtersave_post_indieblocks_likeincludes\class-post-types.php:56
filterrest_after_insert_indieblocks_likeincludes\class-post-types.php:57
filterpublish_indieblocks_noteincludes\class-preview-cards.php:18
filterpublish_indieblocks_likeincludes\class-preview-cards.php:19
actionindieblocks_preview_cardincludes\class-preview-cards.php:21
actionrest_api_initincludes\class-preview-cards.php:23
actioninitincludes\class-theme-mf2.php:18
filterterm_links-categoryincludes\class-theme-mf2.php:19
filterterm_links-post_tagincludes\class-theme-mf2.php:20
filterbody_classincludes\class-theme-mf2.php:21
filterpost_classincludes\class-theme-mf2.php:22
filtercomment_classincludes\class-theme-mf2.php:23
filterpost_thumbnail_htmlincludes\class-theme-mf2.php:24
filterget_comment_linkincludes\class-theme-mf2.php:25
filterrender_block_core/post-author-nameincludes\class-theme-mf2.php:156
filterrender_block_core/post-authorincludes\class-theme-mf2.php:157
filterrender_block_core/post-contentincludes\class-theme-mf2.php:158
filterrender_block_core/post-dateincludes\class-theme-mf2.php:159
filterrender_block_core/post-excerptincludes\class-theme-mf2.php:160
filterrender_block_core/post-titleincludes\class-theme-mf2.php:161
filterrender_block_core/comment-author-nameincludes\class-theme-mf2.php:162
filterrender_block_core/comment-contentincludes\class-theme-mf2.php:163
filterrender_block_core/comment-dateincludes\class-theme-mf2.php:164
actionpre_get_commentsincludes\functions.php:462
actionpre_get_commentsincludes\functions.php:467
actionpre_get_commentsincludes\functions.php:472
actionrest_api_initincludes\webmention\class-webmention-receiver.php:18
actionwp_headincludes\webmention\class-webmention-receiver.php:21
actiontemplate_redirectincludes\webmention\class-webmention-receiver.php:22
actionindieblocks_process_webmentionsincludes\webmention\class-webmention-receiver.php:25
filterwp_kses_allowed_htmlincludes\webmention\class-webmention-receiver.php:26
actionadd_meta_boxes_commentincludes\webmention\class-webmention-receiver.php:29
actiontrashed_postincludes\webmention\class-webmention-sender.php:30
actioncomment_postincludes\webmention\class-webmention-sender.php:33
actioncomment_approved_commentincludes\webmention\class-webmention-sender.php:36
actionindieblocks_webmention_sendincludes\webmention\class-webmention-sender.php:39
actionadd_meta_boxesincludes\webmention\class-webmention-sender.php:42
actionadd_meta_boxes_commentincludes\webmention\class-webmention-sender.php:43
actionadmin_enqueue_scriptsincludes\webmention\class-webmention-sender.php:46
actionenqueue_block_editor_assetsincludes\webmention\class-webmention-sender.php:49
actionrest_api_initincludes\webmention\class-webmention-sender.php:50
actioninitincludes\webmention\class-webmention.php:18

Scheduled Events 4

indieblocks_preview_card
indieblocks_webmention_send
indieblocks_webmention_send
indieblocks_process_webmentions
Maintenance & Trust

IndieBlocks Maintenance & Trust

Maintenance Signals

WordPress version tested6.8.5
Last updatedJun 14, 2025
PHP min version
Downloads6K

Community Trust

Rating100/100
Number of ratings3
Active installs100
Developer Profile

IndieBlocks Developer Profile

Jan Boddez

4 plugins · 1K total installs

91
trust score
Avg Security Score
96/100
Avg Patch Time
8 days
View full developer profile
Detection Fingerprints

How We Detect IndieBlocks

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

Asset Fingerprints

Asset Paths
/wp-content/plugins/indieblocks/assets/location.css/wp-content/plugins/indieblocks/assets/location.js
Script Paths
/wp-content/plugins/indieblocks/assets/location.js
Version Parameters
indieblocks-locationindieblocks

HTML / DOM Fingerprints

HTML Comments
<!-- IndieBlocks Location Meta Box -->
Data Attributes
data-geo_addressdata-geo_latitudedata-geo_longitude
JS Globals
indieblocks_location_obj
REST Endpoints
/wp-json/indieblocks/v1/location
FAQ

Frequently Asked Questions about IndieBlocks