Citrus Security & Risk Analysis

wordpress.org/plugins/citrus

Display research publications from Pure API or manually provided BibTeX data beautifully.

0 active installs v1.2.1 PHP 7.4+ WP 5.8+ Updated Jan 12, 2026
bibliographycitationspublicationspureresearch
100
A · Safe
CVEs total0
Unpatched0
Last CVENever
Safety Verdict

Is Citrus Safe to Use in 2026?

Generally Safe

Score 100/100

Citrus has no known CVEs and is actively maintained. It's a solid choice for most WordPress installations.

No known CVEs Updated 4mo ago
Risk Assessment

The Citrus plugin version 1.2.1 exhibits a generally strong security posture with several good practices in place. The extensive use of prepared statements for SQL queries and proper output escaping (99%) are significant strengths. The absence of any known vulnerabilities (CVEs) or critical taint flows is also a positive indicator. However, there are notable concerns regarding the attack surface. The plugin exposes several entry points, including 4 AJAX handlers and 4 REST API routes, that lack permission checks. This could potentially allow unauthorized users to interact with plugin functionalities that were intended to be protected. The presence of a dangerous function, 'preg_replace(/e)', while not explicitly shown to be exploited in taint analysis, warrants careful consideration due to its historical association with remote code execution vulnerabilities.

Key Concerns

  • REST API routes without permission callbacks
  • AJAX handlers without authentication checks
  • Use of dangerous function preg_replace(/e)
Vulnerabilities
None known

Citrus Security Vulnerabilities

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

Citrus Release Timeline

v1.2.1Current
Code Analysis
Analyzed Apr 16, 2026

Citrus Code Analysis

Dangerous Functions
1
Raw SQL Queries
0
0 prepared
Unescaped Output
3
207 escaped
Nonce Checks
7
Capability Checks
6
File Operations
8
External Requests
4
Bundled Libraries
0

Dangerous Functions Found

preg_replace(/e)preg_replace('/ecitrus.php:333

Output Escaping

99% escaped210 total outputs
Data Flows · Security
All sanitized

Data Flow Analysis

3 flows
ajax_upload_bibtex (citrus.php:804)
Source (user input) Sink (dangerous op) Sanitizer Transform Unsanitized Sanitized
Attack Surface
4 unprotected

Citrus Attack Surface

Entry Points10
Unprotected4

AJAX Handlers 4

authwp_ajax_citrus_test_apicitrus.php:71
authwp_ajax_citrus_synccitrus.php:72
authwp_ajax_citrus_upload_bibtexcitrus.php:73
authwp_ajax_citrus_save_bibtex_contentcitrus.php:74

REST API Routes 5

GET/wp-json/citrus/v1/bibtexcitrus.php:1137
GET/wp-json/citrus/v1/publicationscitrus.php:1144
GET/wp-json/citrus/v1/publications/jsoncitrus.php:1151
POST/wp-json/citrus/v1/synccitrus.php:1158
POST/wp-json/citrus/v1/summarizeincludes/class-citrus-ai.php:51

Shortcodes 1

[citrus_publications] citrus.php:88
WordPress Hooks 16
actionadmin_menucitrus.php:63
actionadmin_initcitrus.php:64
actionadmin_enqueue_scriptscitrus.php:65
actionadmin_post_citrus_sync_nowcitrus.php:66
actioncitrus_sync_eventcitrus.php:77
actioninitcitrus.php:80
actioninitcitrus.php:81
actionrest_api_initcitrus.php:82
actionwp_enqueue_scriptscitrus.php:83
actionwp_enqueue_scriptscitrus.php:84
filterrest_pre_serve_requestcitrus.php:85
filterquery_varscitrus.php:91
actionplugins_loadedcitrus.php:1291
actionrest_api_initincludes/class-citrus-ai.php:42
actioninitincludes/class-citrus-block.php:13
actionenqueue_block_editor_assetsincludes/class-citrus-block.php:14

Scheduled Events 3

citrus_sync_event
citrus_sync_event
citrus_sync_event
Maintenance & Trust

Citrus Maintenance & Trust

Maintenance Signals

WordPress version tested6.9.4
Last updatedJan 12, 2026
PHP min version7.4
Downloads173

Community Trust

Rating0/100
Number of ratings0
Active installs0
Developer Profile

Citrus Developer Profile

Evan Morgan

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 Citrus

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

Asset Fingerprints

Asset Paths
/wp-content/plugins/citrus/assets/css/citrus.css/wp-content/plugins/citrus/assets/js/citrus.js/wp-content/plugins/citrus/assets/js/vendor/lodash.min.js/wp-content/plugins/citrus/assets/js/vendor/moment.min.js/wp-content/plugins/citrus/assets/js/vendor/vue.min.js/wp-content/plugins/citrus/assets/js/vendor/vue-moment.min.js/wp-content/plugins/citrus/assets/js/vendor/marked.min.js/wp-content/plugins/citrus/assets/js/vendor/axios.min.js+2 more
Script Paths
/wp-content/plugins/citrus/assets/js/citrus.js/wp-content/plugins/citrus/assets/js/vendor/lodash.min.js/wp-content/plugins/citrus/assets/js/vendor/moment.min.js/wp-content/plugins/citrus/assets/js/vendor/vue.min.js/wp-content/plugins/citrus/assets/js/vendor/vue-moment.min.js/wp-content/plugins/citrus/assets/js/vendor/marked.min.js+1 more
Version Parameters
citrus/style.css?ver=citrus/script.js?ver=

HTML / DOM Fingerprints

CSS Classes
citrus-publications-listcitrus-publication-item
HTML Comments
<!-- Citrus Publications Shortcode Output --><!-- Citrus Admin Page --><!-- Citrus Settings Form -->
Data Attributes
data-citrus-api-urldata-citrus-org-iddata-citrus-publication-urldata-citrus-cache-duration
JS Globals
window.citrusConfigvar citrusApiUrlvar citrusOrgIdvar citrusPublicationUrlvar citrusCacheDuration
REST Endpoints
/wp-json/citrus/v1/publications/wp-json/citrus/v1/sync/wp-json/citrus/v1/settings
Shortcode Output
<div id="citrus-app"></div>
FAQ

Frequently Asked Questions about Citrus