REPORT / 01
Analysis Report · Folder Analysis cache/timetics_1.0.36 → cache/timetics_1.0.37 — CVE-2025-5919
Shared security patch analysis results
02 ·
Lifecycle actions
cancel · resume · skip · regenerate
03 ·
Share this analysis
copy link · embed report
03 ·
CVE Security Analysis & Writeups
ai-generated · per cve
Comprehensive security analysis generated by AI for each confirmed CVE match. Click on a CVE to view the detailed writeup including vulnerability background, technical details, patch analysis, and PoC guide.
CVE-2025-5919
NVD
AI-Generated Analysis
05 ·
Findings
filter · search · paginate
Showing 0 to 0 of 0 results
core/bookings/api-booking.php
AI: 1 vulnerabilities
1 true positive
CVE-2025-5919
--- cache/timetics_1.0.36/core/bookings/api-booking.php 2026-01-08 00:33:04.182470820 +0000+++ cache/timetics_1.0.37/core/bookings/api-booking.php 2026-01-08 00:35:42.852171654 +0000@@ -95,16 +95,12 @@ [ 'methods' => \WP_REST_Server::READABLE, 'callback' => [$this, 'get_item'],- 'permission_callback' => function () {- return true;- },+ 'permission_callback' => [$this, 'get_item_permission_callback'], ], [ 'methods' => \WP_REST_Server::EDITABLE, 'callback' => [$this, 'update_item'],- 'permission_callback' => function () {- return true;- },+ 'permission_callback' => [$this, 'update_item_permission_callback'], ], [ 'methods' => \WP_REST_Server::DELETABLE,@@ -1237,4 +1233,30 @@ return 0; }++ /**+ * Update item permission callback+ * @param WP_Rest_Request $request+ * @return bool+ */+ public function update_item_permission_callback($request){+ $nonce = $request->get_header('X-WP-Nonce');+ if (wp_verify_nonce($nonce, 'wp_rest')) {+ return true;+ }+ return false;+ }++ /**+ * Get item permission callback+ * @param WP_Rest_Request $request+ * @return bool+ */+ public function get_item_permission_callback($request){+ $nonce = $request->get_header('X-WP-Nonce');+ if (wp_verify_nonce($nonce, 'wp_rest')) {+ return true;+ }+ return false;+ } }
AI Analysis
I'll analyze this code diff for security vulnerabilities.
**Vulnerability Existed: yes**
TRUE POSITIVE
**Cross-Site Request Forgery (CSRF) - CWE-352 - core/bookings/api-booking.php Lines 98-109 and 1236-1260**
**Old Code:**
```php
'permission_callback' => function () {
return true;
},
```
**Fixed Code:**
```php
'permission_callback' => [$this, 'get_item_permission_callback'],
'permission_callback' => [$this, 'update_item_permission_callback'],
public function update_item_permission_callback($request){
$nonce = $request->get_header('X-WP-Nonce');
if (wp_verify_nonce($nonce, 'wp_rest')) {
return true;
}
return false;
}
public function get_item_permission_callback($request){
$nonce = $request->get_header('X-WP-Nonce');
if (wp_verify_nonce($nonce, 'wp_rest')) {
return true;
}
return false;
}
```
**Explanation:**
The original code had a critical security vulnerability. The REST API endpoints for GET and UPDATE operations had permission callbacks that unconditionally returned `true`, allowing any unauthenticated or unauthorized user to access and modify booking data without proper authorization checks.
The fix implements proper CSRF protection by:
1. Extracting the WordPress nonce from the request header (`X-WP-Nonce`)
2. Validating the nonce using `wp_verify_nonce()` with the `wp_rest` action
3. Only returning `true` if the nonce is valid, denying access otherwise
This prevents CSRF attacks by ensuring that state-changing operations (EDITABLE methods) and sensitive data access (READABLE methods) require a valid WordPress REST API nonce token. Without this validation, attackers could craft malicious requests to manipulate booking data on behalf of authenticated users.
CVE Analysis Results:
CVE-2025-5919: Yes
View CVE Description
The Appointment Booking and Scheduling Calendar Plugin – WP Timetics plugin for WordPress is vulnerable to unauthorized access and modification of data due to a missing capability check on the update and register_routes functions in all versions up to, and including, 1.0.36. This makes it possible for unauthenticated attackers to view and modify booking details.
core/frontend/templates/meeting-list.php
AI: 1 vulnerabilities
1 true positive
CVE-2025-5919
--- cache/timetics_1.0.36/core/frontend/templates/meeting-list.php 2026-01-08 00:33:04.182470820 +0000+++ cache/timetics_1.0.37/core/frontend/templates/meeting-list.php 2026-01-08 00:35:42.896174313 +0000@@ -3,9 +3,15 @@ use Timetics\Core\Appointments\Appointment as Appointment; use Timetics\Core\Staffs\Staff; -$meetings = Appointment::all([+$args = [ 'posts_per_page' => $limit-]);+];++if ( ! current_user_can( 'manage_options' ) ) {+ $args['visibility'] = 'enabled';+}++$meetings = Appointment::all($args); $staffs = Staff::all(); $terms = get_terms( [
AI Analysis
I'll analyze this code diff for security vulnerabilities.
```
Vulnerability Existed: yes
TRUE POSITIVE
Improper Access Control / Missing Authorization Check - CWE-639 - core/frontend/templates/meeting-list.php - Lines 6-9 (Old Code)
[Old Code]
$meetings = Appointment::all([
'posts_per_page' => $limit
]);
[Fixed Code]
$args = [
'posts_per_page' => $limit
];
if ( ! current_user_can( 'manage_options' ) ) {
$args['visibility'] = 'enabled';
}
$meetings = Appointment::all($args);
Explanation:
The original code retrieved ALL appointments without any authorization checks or visibility filters. This allowed any user (including non-authenticated or low-privilege users) to access all appointments regardless of their permission level. The fix adds a capability check using `current_user_can('manage_options')` to filter the query results. Non-admin users now only see appointments with 'visibility' set to 'enabled', implementing proper access control. This prevents unauthorized disclosure of sensitive meeting/appointment information to users who should not have access to all appointments.
```
CVE Analysis Results:
CVE-2025-5919: Yes
View CVE Description
The Appointment Booking and Scheduling Calendar Plugin – WP Timetics plugin for WordPress is vulnerable to unauthorized access and modification of data due to a missing capability check on the update and register_routes functions in all versions up to, and including, 1.0.36. This makes it possible for unauthenticated attackers to view and modify booking details.
Showing 1 to 2 of 2 results