[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$fez4jcWl35dB21meztnnVzPoUmeYSg1asRBwlgFhh3LU":3,"$fTdM0qnMWGvLA59zsZB3VCZiatk9YmDV3Psh5u4NbupU":265,"$fhEqxb614BcddFEkZdCYHGIdQ-y_7tn8sLenHU2YtcxM":270},{"slug":4,"name":5,"version":6,"author":7,"author_profile":8,"description":9,"short_description":10,"active_installs":11,"downloaded":12,"rating":13,"num_ratings":13,"last_updated":14,"tested_up_to":15,"requires_at_least":16,"requires_php":17,"tags":18,"homepage":19,"download_link":20,"security_score":21,"vuln_count":13,"unpatched_count":13,"last_vuln_date":22,"fetched_at":23,"discovery_status":24,"vulnerabilities":25,"developer":26,"crawl_stats":22,"alternatives":32,"analysis":33,"fingerprints":247},"poll-lite","Poll Lite","1.0.1","stesvis","https:\u002F\u002Fprofiles.wordpress.org\u002Fstesvis\u002F","\u003Cp>With this plugin you can add one or more polls to your site. This can be done by pasting the shortcode of a poll in pages, posts or sidebar. For more features get the \u003Ca href=\"http:\u002F\u002Fwordpress.phpanswer.com\u002Fpoll\u002F\" rel=\"nofollow ugc\">Poll FULL\u003C\u002Fa> version.\u003C\u002Fp>\n","Allows to add polls to your site",10,7233,0,"2011-12-15T01:47:00.000Z","3.1.4","3.0","",[],"http:\u002F\u002Fwordpress.phpanswer.com\u002Fpoll\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fpoll-lite.zip",85,null,"2026-04-16T10:56:18.058Z","no_bundle",[],{"slug":7,"display_name":7,"profile_url":8,"plugin_count":27,"total_installs":28,"avg_security_score":21,"avg_patch_time_days":29,"trust_score":30,"computed_at":31},5,50,30,84,"2026-05-20T12:32:09.934Z",[],{"attackSurface":34,"codeSignals":69,"taintFlows":111,"riskAssessment":230,"analyzedAt":246},{"hooks":35,"ajaxHandlers":60,"restRoutes":61,"shortcodes":62,"cronEvents":67,"entryPointCount":68,"unprotectedCount":13},[36,41,43,46,49,52,57],{"type":37,"name":38,"callback":38,"file":39,"line":40},"action","admin_menu","poll-lite.php",29,{"type":37,"name":42,"callback":42,"file":39,"line":29},"init",{"type":37,"name":44,"callback":44,"file":39,"line":45},"add_meta_boxes",31,{"type":37,"name":47,"callback":47,"file":39,"line":48},"wp_insert_post",33,{"type":37,"name":50,"callback":50,"file":39,"line":51},"delete_post",34,{"type":53,"name":54,"callback":55,"file":39,"line":56},"filter","widget_text","do_shortcode",37,{"type":53,"name":58,"callback":55,"file":39,"line":59},"the_excerpt",38,[],[],[63],{"tag":64,"callback":65,"file":39,"line":66},"merlic_poll","shortcode",36,[],1,{"dangerousFunctions":70,"sqlUsage":79,"outputEscaping":90,"fileOperations":13,"externalRequests":13,"nonceChecks":13,"capabilityChecks":13,"bundledLibraries":110},[71,76],{"fn":72,"file":73,"line":74,"context":75},"ini_set","poll-helper.class.php",6,"ini_set('SMTP', 'localhost');",{"fn":72,"file":73,"line":77,"context":78},9,"ini_set('smtp_port', 25);",{"prepared":80,"raw":81,"locations":82},16,2,[83,87],{"file":84,"line":85,"context":86},"admin\u002Funinstall.php",12,"$wpdb->query() with unsafe: $poll_table_name",{"file":84,"line":88,"context":89},13,"$wpdb->query() with unsafe: $pollresult_table_name",{"escaped":13,"rawEcho":91,"locations":92},8,[93,97,99,100,101,104,106,108],{"file":94,"line":95,"context":96},"admin\u002Fpreferences.php",15,"raw output",{"file":94,"line":98,"context":96},56,{"file":84,"line":95,"context":96},{"file":84,"line":56,"context":96},{"file":102,"line":103,"context":96},"poll.class.php",107,{"file":102,"line":105,"context":96},168,{"file":102,"line":107,"context":96},177,{"file":102,"line":109,"context":96},293,[],[112,157,165,180,194,204],{"entryPoint":113,"graph":114,"unsanitizedCount":27,"severity":156},"\u003Cpreferences> (admin\u002Fpreferences.php:0)",{"nodes":115,"edges":149},[116,121,126,130,132,135,137,140,142,145],{"id":117,"type":118,"label":119,"file":94,"line":120},"n0","source","$_POST['merlic_poll_limit']",3,{"id":122,"type":123,"label":124,"file":94,"line":120,"wp_function":125},"n1","sink","update_option() [Settings Manipulation]","update_option",{"id":127,"type":118,"label":128,"file":94,"line":129},"n2","$_POST['merlic_poll_results']",4,{"id":131,"type":123,"label":124,"file":94,"line":129,"wp_function":125},"n3",{"id":133,"type":118,"label":134,"file":94,"line":27},"n4","$_POST['merlic_poll_result_details_partial_votes']",{"id":136,"type":123,"label":124,"file":94,"line":27,"wp_function":125},"n5",{"id":138,"type":118,"label":139,"file":94,"line":74},"n6","$_POST['merlic_poll_result_details_total_votes']",{"id":141,"type":123,"label":124,"file":94,"line":74,"wp_function":125},"n7",{"id":143,"type":118,"label":144,"file":94,"line":95},"n8","$_SERVER['REQUEST_URI']",{"id":146,"type":123,"label":147,"file":94,"line":95,"wp_function":148},"n9","echo() [XSS]","echo",[150,152,153,154,155],{"from":117,"to":122,"sanitized":151},false,{"from":127,"to":131,"sanitized":151},{"from":133,"to":136,"sanitized":151},{"from":138,"to":141,"sanitized":151},{"from":143,"to":146,"sanitized":151},"low",{"entryPoint":158,"graph":159,"unsanitizedCount":68,"severity":156},"\u003Cuninstall> (admin\u002Funinstall.php:0)",{"nodes":160,"edges":163},[161,162],{"id":117,"type":118,"label":144,"file":84,"line":56},{"id":122,"type":123,"label":147,"file":84,"line":56,"wp_function":148},[164],{"from":117,"to":122,"sanitized":151},{"entryPoint":166,"graph":167,"unsanitizedCount":81,"severity":156},"widget_title (poll.class.php:101)",{"nodes":168,"edges":177},[169,172,173,176],{"id":117,"type":118,"label":170,"file":102,"line":171},"$_POST['merlic_poll_widget_title']",103,{"id":122,"type":123,"label":124,"file":102,"line":171,"wp_function":125},{"id":127,"type":118,"label":174,"file":102,"line":175},"$_POST['merlic_poll_widget_field']",104,{"id":131,"type":123,"label":124,"file":102,"line":175,"wp_function":125},[178,179],{"from":117,"to":122,"sanitized":151},{"from":127,"to":131,"sanitized":151},{"entryPoint":181,"graph":182,"unsanitizedCount":68,"severity":193},"shortcode (poll.class.php:32)",{"nodes":183,"edges":191},[184,187],{"id":117,"type":118,"label":185,"file":102,"line":186},"$_POST",54,{"id":122,"type":123,"label":188,"file":102,"line":189,"wp_function":190},"query() [SQLi]",55,"query",[192],{"from":117,"to":122,"sanitized":151},"high",{"entryPoint":195,"graph":196,"unsanitizedCount":68,"severity":193},"wp_insert_post (poll.class.php:180)",{"nodes":197,"edges":202},[198,200],{"id":117,"type":118,"label":185,"file":102,"line":199},224,{"id":122,"type":123,"label":188,"file":102,"line":201,"wp_function":190},229,[203],{"from":117,"to":122,"sanitized":151},{"entryPoint":205,"graph":206,"unsanitizedCount":85,"severity":193},"\u003Cpoll.class> (poll.class.php:0)",{"nodes":207,"edges":224},[208,210,211,212,213,214,215,218,219,220],{"id":117,"type":118,"label":209,"file":102,"line":186},"$_POST (x4)",{"id":122,"type":123,"label":188,"file":102,"line":189,"wp_function":190},{"id":127,"type":118,"label":170,"file":102,"line":171},{"id":131,"type":123,"label":124,"file":102,"line":171,"wp_function":125},{"id":133,"type":118,"label":174,"file":102,"line":175},{"id":136,"type":123,"label":124,"file":102,"line":175,"wp_function":125},{"id":138,"type":118,"label":216,"file":102,"line":217},"$_SERVER (x2)",78,{"id":141,"type":123,"label":147,"file":102,"line":105,"wp_function":148},{"id":143,"type":118,"label":209,"file":102,"line":199},{"id":146,"type":123,"label":221,"file":102,"line":222,"wp_function":223},"get_results() [SQLi]",305,"get_results",[225,226,227,228,229],{"from":117,"to":122,"sanitized":151},{"from":127,"to":131,"sanitized":151},{"from":133,"to":136,"sanitized":151},{"from":138,"to":141,"sanitized":151},{"from":143,"to":146,"sanitized":151},{"summary":231,"deductions":232},"The poll-lite plugin v1.0.1 presents a mixed security posture. On the positive side, it has no known historical CVEs and a relatively small attack surface with only one shortcode entry point, and no AJAX or REST API handlers with security checks missing.  However, the static analysis reveals several significant concerns.  The presence of `ini_set` is a red flag as it can be misused to alter PHP configurations, potentially leading to security vulnerabilities.  Furthermore, 89% of SQL queries use prepared statements, which is good, but there are still some queries not using this best practice.  A critical finding is that 0% of outputs are properly escaped, meaning any dynamic content rendered by the plugin could be vulnerable to Cross-Site Scripting (XSS) attacks.  The taint analysis highlights 6 flows with unsanitized paths, with 3 classified as high severity, indicating potential for data manipulation or unauthorized access if these flows are triggered. The lack of nonce and capability checks across all entry points is a major weakness, as it means any authenticated user could potentially interact with these functions in unintended ways. The plugin's vulnerability history being clean is a positive sign, but it doesn't negate the direct code-level risks identified.\n\nIn conclusion, while the plugin has no documented vulnerabilities and a small attack surface, the identified code signals and taint analysis point to significant potential risks. The lack of output escaping and the high severity taint flows are particularly concerning and require immediate attention. The absence of nonce and capability checks further exacerbates these issues, creating a scenario where authenticated users could exploit weaknesses. Developers should prioritize addressing these findings to improve the plugin's security.",[233,235,237,240,242,244],{"reason":234,"points":91},"0% of outputs properly escaped",{"reason":236,"points":95},"High severity taint flows (3)",{"reason":238,"points":239},"Dangerous functions: ini_set",7,{"reason":241,"points":27},"Nonce checks missing",{"reason":243,"points":27},"Capability checks missing",{"reason":245,"points":81},"SQL queries not using prepared statements","2026-04-16T12:38:33.902Z",{"wat":248,"direct":255},{"assetPaths":249,"generatorPatterns":252,"scriptPaths":253,"versionParams":254},[250,251],"\u002Fwp-content\u002Fplugins\u002Fpoll-lite\u002Fstyle\u002Fdefault.css","\u002Fwp-content\u002Fplugins\u002Fpoll-lite\u002Fjs\u002Fdefault.js",[],[251],[],{"cssClasses":256,"htmlComments":258,"htmlAttributes":259,"restEndpoints":261,"jsGlobals":262,"shortcodeOutput":263},[64,257],"merlic_poll_result",[],[260],"data-poll-id",[],[],[264],"\u003Ch3>",{"error":266,"url":267,"statusCode":268,"statusMessage":269,"message":269},true,"http:\u002F\u002Flocalhost\u002Fapi\u002Fplugins\u002Fpoll-lite\u002Fbundle",404,"no bundle for this plugin yet",{"slug":4,"current_version":6,"total_versions":13,"versions":271},[]]