Paid Videochat Turnkey Site – HTML5 PPV Live Webcams Security & Risk Analysis

wordpress.org/plugins/ppv-live-webcams

Launch a PPV live webcam platform with real-time interaction and robust monetization for performers.

30 active installs v7.3.24 PHP 7.4+ WP 5.1+ Updated Feb 17, 2026
pay-per-minutevideo-callvideochatvideowhisperwebcam
82
B · Generally Safe
CVEs total4
Unpatched0
Last CVEMar 6, 2026
Safety Verdict

Is Paid Videochat Turnkey Site – HTML5 PPV Live Webcams Safe to Use in 2026?

Mostly Safe

Score 82/100

Paid Videochat Turnkey Site – HTML5 PPV Live Webcams is generally safe to use. 4 past CVEs were resolved. Keep it updated.

4 known CVEsLast CVE: Mar 6, 2026Updated 1mo ago
Risk Assessment

The "ppv-live-webcams" plugin v7.3.24 presents a mixed security posture. While it demonstrates strengths in SQL query handling with 100% prepared statements and a high percentage of properly escaped outputs, significant concerns arise from its attack surface. Nineteen AJAX handlers lack authentication checks, creating a substantial entry point for unauthorized actions. Furthermore, the taint analysis reveals a critical severity flow and four high severity flows with unsanitized paths, indicating potential for code injection or other severe compromises.

The plugin's vulnerability history, with four known CVEs including two critical and two high severity, further exacerbates these concerns. The prevalence of vulnerability types such as Improper Privilege Management, Code Injection, Authentication Bypass, and Path Traversal in past issues suggests recurring fundamental security weaknesses. Although there are no currently unpatched CVEs, the pattern of past critical vulnerabilities and the static analysis findings highlight a plugin that has historically struggled with robust security practices and may continue to be a target.

In conclusion, while the plugin has some positive security attributes, the combination of a large, unprotected attack surface, critical taint flows, and a history of severe vulnerabilities points to a high-risk plugin that requires immediate attention. The lack of robust authentication on many AJAX endpoints, coupled with potential for code injection and path traversal, makes it a significant liability.

Key Concerns

  • Unprotected AJAX handlers
  • Critical severity taint flow
  • High severity taint flows (4)
  • Known critical CVEs (2)
  • Known high CVEs (2)
  • Dangerous functions used
  • Flows with unsanitized paths
Vulnerabilities
4

Paid Videochat Turnkey Site – HTML5 PPV Live Webcams Security Vulnerabilities

CVEs by Year

3 CVEs in 2025
2025
1 CVE in 2026
2026
Patched Has unpatched

Severity Breakdown

Critical
2
High
2

4 total CVEs

CVE-2025-8899high · 8.8Improper Privilege Management

Paid Videochat Turnkey Site – HTML5 PPV Live Webcams <= 7.3.20 - Authenticated (Author+) Privilege Escalation

Mar 6, 2026 Patched in 7.3.21 (1d)
CVE-2025-62959high · 7.2Improper Control of Generation of Code ('Code Injection')

Paid Videochat Turnkey Site <= 7.3.23 - Authenticated (Admin+) Remote Code Execution

Oct 16, 2025 Patched in 7.3.24 (134d)
CVE-2025-31380critical · 9.8Authentication Bypass Using an Alternate Path or Channel

Paid Videochat Turnkey Site <= 7.3.11 - Authentication Bypass

Apr 10, 2025 Patched in 7.3.12 (8d)
CVE-2025-22663critical · 9.1Improper Limitation of a Pathname to a Restricted Directory ('Path Traversal')

Paid Videochat Turnkey Site – HTML5 PPV Live Webcams <= 7.2.16 - Unauthenticated Arbitrary File Deletion

Feb 3, 2025 Patched in 7.3.1 (24d)
Code Analysis
Analyzed Mar 16, 2026

Paid Videochat Turnkey Site – HTML5 PPV Live Webcams Code Analysis

Dangerous Functions
79
Raw SQL Queries
1
326 prepared
Unescaped Output
161
1671 escaped
Nonce Checks
14
Capability Checks
7
File Operations
114
External Requests
1
Bundled Libraries
0

Dangerous Functions Found

unserialize$userMeta = unserialize($session->meta, array( 'allowed_classes' => false ));inc\h5videochat.php:338
unserialize$userMeta = unserialize($performerSession->meta, array( 'allowed_classes' => false ));inc\h5videochat.php:351
unserialize$meta = unserialize($privateSession->meta, array( 'allowed_classes' => false ));inc\h5videochat.php:376
unserialize$pSessionMeta = unserialize( $pSession->meta, array( 'allowed_classes' => false ) );inc\h5videochat.php:516
unserialize$sessionMeta = unserialize( $session->meta, array( 'allowed_classes' => false ) );inc\h5videochat.php:591
unserialize$pSessionMeta = unserialize( $pSession->meta, array( 'allowed_classes' => false ) );inc\h5videochat.php:2239
unserializeif ( ! is_array( $roomMeta = unserialize( $session->roptions, array( 'allowed_classes' => false ) ) inc\h5videochat.php:2780
unserialize$userMeta = unserialize( $session->meta, array( 'allowed_classes' => false ) );inc\h5videochat.php:2859
unserialize$meta = unserialize( $message->meta, array( 'allowed_classes' => false ) );inc\h5videochat.php:3592
unserialize$userMeta = unserialize( $sqlRow->meta, array( 'allowed_classes' => false ) );inc\h5videochat.php:3640
unserialize$roomMeta = unserialize( $sqlRow->roptions, array( 'allowed_classes' => false ) );inc\h5videochat.php:3646
unserialize$userMeta = unserialize($session->meta, array( 'allowed_classes' => false ));inc\h5videochat.php:3774
unserialize$userMeta = unserialize( $session->meta, array( 'allowed_classes' => false ) );inc\h5videochat.php:3955
unserialize$userMeta = unserialize( $session->meta, array( 'allowed_classes' => false ) );inc\h5videochat.php:4201
unserialize$userMeta = unserialize( $session->meta, array( 'allowed_classes' => false ) );inc\h5videochat.php:5319
unserialize$userMeta = unserialize( $session->meta, array( 'allowed_classes' => false ) );inc\h5videochat.php:5364
unserializeif ( $session->meta ) $userMeta = unserialize( $session->meta, array( 'allowed_classes' => false ) )inc\h5videochat.php:5421
unserializeif ($otherSession->meta) $otherUserMeta = unserialize($otherSession->meta, array( 'allowed_classes' inc\h5videochat.php:5428
unserialize$userMeta = unserialize( $session->meta, array( 'allowed_classes' => false ) );inc\h5videochat.php:5498
unserialize$userMeta = unserialize( $session->meta, array( 'allowed_classes' => false ) );inc\h5videochat.php:5565
unserialize$userMeta = unserialize( $session->meta, array( 'allowed_classes' => false ) );inc\h5videochat.php:5711
unserialize$roomOptions = unserialize( $session->roptions, array( 'allowed_classes' => false ) );inc\h5videochat.php:6125
unserialize$meta = unserialize( $sqlRow->meta, array( 'allowed_classes' => false ) );inc\h5videochat.php:6666
unserialize$item['meta'] = unserialize( $sqlRow->meta, array( 'allowed_classes' => false ) );inc\h5videochat.php:6735
unserialize$userMeta = unserialize( $session->meta, array( 'allowed_classes' => false ) );inc\h5videochat.php:6799
unserialize'goalsDefault' => unserialize( 'a:5:{i:1;a:6:{s:4:"name";s:13:"Break the Ice";s:1inc\options.php:334
unserialize'appRoles' => unserialize( 'a:3:{s:27:"conferenceParticipantCamera";a:3:{s:5:inc\options.php:615
unserialize'appSetup' => unserialize( 'a:3:{s:6:"Config";a:23:{s:8:"darkMode";s:0:"";s:7inc\options.php:634
unserialize'groupModes' => unserialize( 'a:9:{s:14:"Free Broadcast";a:19:{s:11:"descriptioinc\options.php:775
unserialize'recordFields' => unserialize( 'a:11:{s:9:"Full Name";a:2:{s:4:"type";s:4:"text";inc\options.php:936
execif ( exec( 'echo EXEC' ) == 'EXEC' )inc\options.php:3877
execexec( escapeshellcmd( $cmd ), $output, $returnvalue );inc\options.php:3909
execexec( escapeshellcmd( $cmd ), $output, $returnvalue );inc\options.php:3921
execexec( escapeshellcmd( $cmd ), $output, $returnvalue );inc\options.php:3934
execexec( escapeshellcmd( $cmd ), $output, $returnvalue );inc\options.php:3951
execexec( escapeshellcmd( $cmd ), $output, $returnvalue );inc\options.php:4014
execexec( escapeshellcmd( $cmd ), $output, $returnvalue );inc\options.php:4041
execif ( exec( 'echo EXEC' ) == 'EXEC' )inc\options.php:5234
execexec( escapeshellcmd( $cmd ), $output, $returnvalue );inc\options.php:5256
exec$process = exec( escapeshellcmd( $cmd ), $output, $returnvalue );inc\options.php:5296
execexec( $kcmd, $koutput, $kreturnvalue );inc\options.php:5324
execexec( escapeshellcmd( $cmd ), $output, $returnvalue );inc\options.php:5372
execexec( escapeshellcmd( $cmd ), $output, $returnvalue );inc\options.php:5389
unserializeupdate_option( 'VWdeepLlangs', unserialize( 'a:31:{s:2:"bg";s:9:"Bulgarian";s:2:"cs";s:5:"Czech";s:2inc\options.php:5671
unserialize$userMeta = unserialize( $session->meta, array( 'allowed_classes' => false ) );inc\streams.php:138
execif ( $options['enable_exec'] ) exec( $cmd, $output, $returnvalue );inc\streams.php:456
execif ( $options['enable_exec'] ) exec( $cmd, $output, $returnvalue );inc\streams.php:479
shell_exec$output = shell_exec($command);inc\streams.php:510
execexec( $cmd, $output, $returnvalue );inc\streams.php:657
execexec( escapeshellcmd( $kcmd ), $koutput, $kreturnvalue );inc\streams.php:670
unserialize$userMeta = unserialize( $session->meta, array( 'allowed_classes' => false ) );inc\streams.php:764
execexec( $cmd, $output, $returnvalue );inc\streams.php:798
execexec( escapeshellcmd( $kcmd ), $koutput, $kreturnvalue );inc\streams.php:811
execexec( $cmd, $output, $returnvalue );inc\streams.php:923
execexec( escapeshellcmd( $kcmd ), $koutput, $kreturnvalue );inc\streams.php:936
execexec( $cmd, $output, $returnvalue );inc\streams.php:1542
execexec( $cmd, $output, $returnvalue );inc\streams.php:1573
execexec( $cmd, $output, $returnvalue );inc\streams.php:1617
execexec( $cmd, $output, $returnvalue );inc\streams.php:1759
execexec( $cmd, $output, $returnvalue );inc\streams.php:1778
execexec( escapeshellcmd( $cmd ), $output, $returnvalue );inc\streams.php:1788
execexec( escapeshellcmd( $cmd ), $output, $returnvalue );inc\streams.php:1845
exec$processId = exec( $cmd . ' echo $!;', $output, $returnvalue );inc\streams.php:1938
execexec( $cmd, $output, $returnvalue );inc\streams.php:2014
execexec( escapeshellcmd( $cmd ), $output, $returnvalue );inc\streams.php:2050
unserialize$userMeta = unserialize( $session->meta, array( 'allowed_classes' => false ) );ppv-live-webcams.php:1898
unserialize$userMeta = unserialize( $session->meta, array( 'allowed_classes' => false ) );ppv-live-webcams.php:2468
unserialize$meta = unserialize( $chatRow->meta, array( 'allowed_classes' => false ) );ppv-live-webcams.php:2955
unserializereturn unserialize( file_get_contents( $path ), array( 'allowed_classes' => false ) );ppv-live-webcams.php:3070
unserialize$roomOptions = unserialize( $session->roptions, array( 'allowed_classes' => false ) );ppv-live-webcams.php:5022
unserialize$sessionMeta = unserialize( $session->meta, array( 'allowed_classes' => false ) );ppv-live-webcams.php:5079
unserialize$sessionMeta = unserialize( $session->meta, array( 'allowed_classes' => false ) );ppv-live-webcams.php:5147
unserialize$sessionMeta = unserialize( $session->meta, array( 'allowed_classes' => false ) );ppv-live-webcams.php:5254
unserialize$rtpsessions = unserialize( $rtpsessiondata, array( 'allowed_classes' => false ) );ppv-live-webcams.php:5893
unserialize$users = unserialize( $userdata, array( 'allowed_classes' => false ) );ppv-live-webcams.php:6081
unserialize$userMeta = unserialize( $session->meta, array( 'allowed_classes' => false ) );ppv-live-webcams.php:6142
unserializeecho '<td>' . esc_html( print_r( unserialize( $session->meta, array( 'allowed_classes' => false ) ) ppv-live-webcams.php:6749
unserializeecho '<td>' . esc_html( print_r( unserialize( $session->roptions, array( 'allowed_classes' => false ppv-live-webcams.php:6806
unserializeecho '<td>' . esc_html( print_r( unserialize( $session->meta, array( 'allowed_classes' => false ) ) ppv-live-webcams.php:6807

SQL Query Safety

100% prepared327 total queries

Output Escaping

91% escaped1832 total outputs
Data Flows
10 unsanitized

Data Flow Analysis

18 flows10 with unsanitized paths
adminRecords (inc\options.php:9070)
Source (user input) Sink (dangerous op) Sanitizer Transform Unsanitized Sanitized
Attack Surface
19 unprotected

Paid Videochat Turnkey Site – HTML5 PPV Live Webcams Attack Surface

Entry Points56
Unprotected19

AJAX Handlers 19

authwp_ajax_vws_noticeinc\requirements.php:157
authwp_ajax_vmls_locationppv-live-webcams.php:573
noprivwp_ajax_vmls_locationppv-live-webcams.php:574
authwp_ajax_vmls_notifyppv-live-webcams.php:576
noprivwp_ajax_vmls_notifyppv-live-webcams.php:577
authwp_ajax_vmls_streamppv-live-webcams.php:579
noprivwp_ajax_vmls_streamppv-live-webcams.php:580
authwp_ajax_vmls_recordsformppv-live-webcams.php:582
noprivwp_ajax_vmls_recordsformppv-live-webcams.php:583
authwp_ajax_vmls_appppv-live-webcams.php:585
noprivwp_ajax_vmls_appppv-live-webcams.php:586
authwp_ajax_vmlsppv-live-webcams.php:588
noprivwp_ajax_vmlsppv-live-webcams.php:589
authwp_ajax_vmls_camsppv-live-webcams.php:591
noprivwp_ajax_vmls_camsppv-live-webcams.php:592
authwp_ajax_vmls_htmlchatppv-live-webcams.php:594
noprivwp_ajax_vmls_htmlchatppv-live-webcams.php:595
authwp_ajax_vmls_playlistppv-live-webcams.php:597
noprivwp_ajax_vmls_playlistppv-live-webcams.php:598

Shortcodes 37

[videowhisper_sms_number] ppv-live-webcams.php:505
[videowhisper_room_rate] ppv-live-webcams.php:507
[videowhisper_reports] ppv-live-webcams.php:509
[videowhisper_role_change] ppv-live-webcams.php:511
[videowhisper_callnow] ppv-live-webcams.php:513
[videowhisper_streams] ppv-live-webcams.php:515
[videowhisper_login_form] ppv-live-webcams.php:517
[videowhisper_register_form] ppv-live-webcams.php:518
[videowhisper_register_activate] ppv-live-webcams.php:519
[videowhisper_password_form] ppv-live-webcams.php:520
[videowhisper_cam_message] ppv-live-webcams.php:522
[videowhisper_cam_messages] ppv-live-webcams.php:523
[videowhisper_cam_messages_performer] ppv-live-webcams.php:524
[videowhisper_cam_calls] ppv-live-webcams.php:527
[videowhisper_cam_instant] ppv-live-webcams.php:529
[videowhisper_cam_random] ppv-live-webcams.php:530
[videowhisper_match] ppv-live-webcams.php:531
[videowhisper_match_form] ppv-live-webcams.php:532
[videowhisper_cam_app] ppv-live-webcams.php:534
[videowhisper_webcams] ppv-live-webcams.php:536
[videowhisper_webcams_performer] ppv-live-webcams.php:537
[videowhisper_webcams_studio] ppv-live-webcams.php:538
[videowhisper_webcams_client] ppv-live-webcams.php:539
[videowhisper_account_records] ppv-live-webcams.php:541
[videowhisper_webcams_logout] ppv-live-webcams.php:543
[videowhisper_follow] ppv-live-webcams.php:545
[videowhisper_follow_list] ppv-live-webcams.php:546
[videowhisper_videochat] ppv-live-webcams.php:548
[videowhisper_camvideo] ppv-live-webcams.php:550
[videowhisper_campreview] ppv-live-webcams.php:551
[videowhisper_caminfo] ppv-live-webcams.php:552
[videowhisper_camprofile] ppv-live-webcams.php:554
[videowhisper_camhls] ppv-live-webcams.php:557
[videowhisper_cammpeg] ppv-live-webcams.php:558
[videowhisper_htmlchat] ppv-live-webcams.php:560
[videowhisper_cam_webrtc_broadcast] ppv-live-webcams.php:562
[videowhisper_cam_webrtc_playback] ppv-live-webcams.php:563
WordPress Hooks 53
actionadmin_noticesinc\requirements.php:156
filterthe_contentppv-live-webcams.php:55
filterthe_contentppv-live-webcams.php:58
actionrestrict_manage_usersppv-live-webcams.php:62
filterpre_get_usersppv-live-webcams.php:63
actionuser_edit_form_tagppv-live-webcams.php:65
actionbp_template_titleppv-live-webcams.php:234
actionbp_template_contentppv-live-webcams.php:235
actionbp_template_titleppv-live-webcams.php:242
actionbp_template_contentppv-live-webcams.php:243
actionbp_template_titleppv-live-webcams.php:251
actionbp_template_contentppv-live-webcams.php:252
filterwp_nav_menu_itemsppv-live-webcams.php:432
filterregister_urlppv-live-webcams.php:439
filterlogin_urlppv-live-webcams.php:440
filterbp_user_can_create_groupsppv-live-webcams.php:445
actionshow_user_profileppv-live-webcams.php:448
actionedit_user_profileppv-live-webcams.php:449
actionpersonal_options_updateppv-live-webcams.php:450
actionedit_user_profile_updateppv-live-webcams.php:451
actionbp_pre_user_query_constructppv-live-webcams.php:455
filterwoo_wallet_disallow_negative_transactionppv-live-webcams.php:460
filterwoo_wallet_payment_is_availableppv-live-webcams.php:461
actionbp_setup_navppv-live-webcams.php:464
filterthe_contentppv-live-webcams.php:471
filterpre_get_postsppv-live-webcams.php:472
filterrequestppv-live-webcams.php:478
actionwp_headppv-live-webcams.php:480
actionquick_edit_custom_boxppv-live-webcams.php:482
actionsave_postppv-live-webcams.php:483
actionadd_meta_boxesppv-live-webcams.php:486
actionvwlw_hourlyppv-live-webcams.php:489
filtermanage_users_columnsppv-live-webcams.php:497
actionmanage_users_custom_columnppv-live-webcams.php:498
filtermanage_users_sortable_columnsppv-live-webcams.php:499
actionpre_user_queryppv-live-webcams.php:500
actionafter_setup_themeppv-live-webcams.php:502
filterbp_get_signup_slugppv-live-webcams.php:569
actioninitppv-live-webcams.php:6837
actionplugins_loadedppv-live-webcams.php:6839
actionadmin_menuppv-live-webcams.php:6842
actionadmin_bar_menuppv-live-webcams.php:6843
actionadmin_headppv-live-webcams.php:6845
actionregister_formppv-live-webcams.php:6848
actionuser_registerppv-live-webcams.php:6849
filterwp_authenticate_userppv-live-webcams.php:6851
actionlogin_enqueue_scriptsppv-live-webcams.php:6854
filterlogin_redirectppv-live-webcams.php:6857
filterthe_titleppv-live-webcams.php:6859
filterquery_varsppv-live-webcams.php:6860
filtersingle_templateppv-live-webcams.php:6867
filterpage_templateppv-live-webcams.php:6868
actionbp_initppv-live-webcams.php:6878

Scheduled Events 1

vwlw_hourly
Maintenance & Trust

Paid Videochat Turnkey Site – HTML5 PPV Live Webcams Maintenance & Trust

Maintenance Signals

WordPress version tested6.8.5
Last updatedFeb 17, 2026
PHP min version7.4
Downloads94K

Community Trust

Rating84/100
Number of ratings22
Active installs30
Developer Profile

Paid Videochat Turnkey Site – HTML5 PPV Live Webcams Developer Profile

videowhisper

12 plugins · 1K total installs

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

How We Detect Paid Videochat Turnkey Site – HTML5 PPV Live Webcams

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

Asset Fingerprints

Asset Paths
/wp-content/plugins/ppv-live-webcams/css/chat.css/wp-content/plugins/ppv-live-webcams/css/style.css/wp-content/plugins/ppv-live-webcams/css/bootstrap.min.css/wp-content/plugins/ppv-live-webcams/js/chat.js/wp-content/plugins/ppv-live-webcams/js/webrtc.js/wp-content/plugins/ppv-live-webcams/js/webrtc-helper.js/wp-content/plugins/ppv-live-webcams/js/chat-helper.js/wp-content/plugins/ppv-live-webcams/js/webrtc-call.js+2 more
Script Paths
/wp-content/plugins/ppv-live-webcams/js/chat.js/wp-content/plugins/ppv-live-webcams/js/webrtc.js/wp-content/plugins/ppv-live-webcams/js/webrtc-helper.js/wp-content/plugins/ppv-live-webcams/js/chat-helper.js/wp-content/plugins/ppv-live-webcams/js/webrtc-call.js/wp-content/plugins/ppv-live-webcams/js/webrtc-room.js+1 more
Version Parameters
ppv-live-webcams/css/chat.css?ver=ppv-live-webcams/css/style.css?ver=ppv-live-webcams/css/bootstrap.min.css?ver=ppv-live-webcams/js/chat.js?ver=ppv-live-webcams/js/webrtc.js?ver=ppv-live-webcams/js/webrtc-helper.js?ver=ppv-live-webcams/js/chat-helper.js?ver=ppv-live-webcams/js/webrtc-call.js?ver=ppv-live-webcams/js/webrtc-room.js?ver=ppv-live-webcams/js/webrtc-room-view.js?ver=

HTML / DOM Fingerprints

CSS Classes
ppv-live-webcamsvw-live-webcams-chatvw-live-webcams-roomvw-live-webcams-controlsvw-live-webcams-videovw-live-webcams-participantvw-live-webcams-message
Data Attributes
data-plugin-path="ppv-live-webcams"data-user-iddata-performer-id
JS Globals
window.PPVLiveWebcamswindow.VWliveWebcamsvar VWliveWebcams
REST Endpoints
/wp-json/ppv-live-webcams/v1/chat/wp-json/ppv-live-webcams/v1/stream/wp-json/ppv-live-webcams/v1/users
Shortcode Output
[ppv_live_webcams_chat][ppv_live_webcams_room][ppv_live_webcams_stream]
FAQ

Frequently Asked Questions about Paid Videochat Turnkey Site – HTML5 PPV Live Webcams