[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$fCJSUFkT7vCiZQbIYIin5npM33G0xMgqY3-44H3kENJk":3},{"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":14,"last_updated":15,"tested_up_to":16,"requires_at_least":16,"requires_php":16,"tags":17,"homepage":18,"download_link":19,"security_score":20,"vuln_count":21,"unpatched_count":21,"last_vuln_date":22,"fetched_at":23,"vulnerabilities":24,"developer":25,"crawl_stats":22,"alternatives":31,"analysis":32,"fingerprints":217},"wp-footer-menu","WP Footer Menu","2.0","graemeboy","https:\u002F\u002Fprofiles.wordpress.org\u002Fgraemeboy\u002F","\u003Cp>WP Footer Menu is a very simple plugin that adds a settings page to wp-admin, which allows you to customize a footer menu.\u003C\u002Fp>\n","WP Footer Menu is a very simple plugin that adds a settings page to wp-admin, which allows you to customize a footer menu.",50,8449,100,1,"2012-07-14T04:56:00.000Z","",[],"http:\u002F\u002Fwww.graemeboy.com\u002Fwp-footer-menu\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-footer-menu.zip",85,0,null,"2026-03-15T15:16:48.613Z",[],{"slug":7,"display_name":7,"profile_url":8,"plugin_count":26,"total_installs":27,"avg_security_score":20,"avg_patch_time_days":28,"trust_score":29,"computed_at":30},4,80,30,84,"2026-04-05T01:55:01.455Z",[],{"attackSurface":33,"codeSignals":62,"taintFlows":128,"riskAssessment":207,"analyzedAt":216},{"hooks":34,"ajaxHandlers":54,"restRoutes":55,"shortcodes":56,"cronEvents":61,"entryPointCount":14,"unprotectedCount":21},[35,41,45,48,50],{"type":36,"name":37,"callback":38,"file":39,"line":40},"action","admin_menu","wp_footer_menu_admin_actions","admin_main.php",3,{"type":36,"name":42,"callback":43,"file":44,"line":40},"wp_footer","wp_footer_menu_init","front_main.php",{"type":36,"name":37,"callback":38,"file":46,"line":47},"main.php",11,{"type":36,"name":42,"callback":43,"file":46,"line":49},12,{"type":36,"name":51,"callback":52,"file":46,"line":53},"wp_enqueue_scripts","wp_footer_enqueue",14,[],[],[57],{"tag":58,"callback":59,"file":46,"line":60},"print_wp_footer","wp_footer_print_menu",13,[],{"dangerousFunctions":63,"sqlUsage":64,"outputEscaping":66,"fileOperations":21,"externalRequests":21,"nonceChecks":126,"capabilityChecks":21,"bundledLibraries":127},[],{"prepared":21,"raw":21,"locations":65},[],{"escaped":21,"rawEcho":28,"locations":67},[68,71,73,75,76,78,80,82,83,85,86,88,90,92,94,96,98,100,102,104,106,108,110,112,114,116,118,120,122,124],{"file":39,"line":69,"context":70},97,"raw output",{"file":39,"line":72,"context":70},98,{"file":39,"line":74,"context":70},99,{"file":39,"line":13,"context":70},{"file":39,"line":77,"context":70},101,{"file":39,"line":79,"context":70},157,{"file":39,"line":81,"context":70},158,{"file":44,"line":49,"context":70},{"file":46,"line":84,"context":70},33,{"file":46,"line":69,"context":70},{"file":46,"line":87,"context":70},132,{"file":46,"line":89,"context":70},133,{"file":46,"line":91,"context":70},134,{"file":46,"line":93,"context":70},135,{"file":46,"line":95,"context":70},136,{"file":46,"line":97,"context":70},195,{"file":46,"line":99,"context":70},262,{"file":46,"line":101,"context":70},276,{"file":46,"line":103,"context":70},280,{"file":46,"line":105,"context":70},302,{"file":46,"line":107,"context":70},306,{"file":46,"line":109,"context":70},310,{"file":46,"line":111,"context":70},319,{"file":46,"line":113,"context":70},323,{"file":46,"line":115,"context":70},327,{"file":46,"line":117,"context":70},331,{"file":46,"line":119,"context":70},335,{"file":46,"line":121,"context":70},339,{"file":46,"line":123,"context":70},412,{"file":46,"line":125,"context":70},415,7,[],[129,152,170,188],{"entryPoint":130,"graph":131,"unsanitizedCount":14,"severity":151},"wp_footer_menu_process (admin_main.php:107)",{"nodes":132,"edges":147},[133,138,142],{"id":134,"type":135,"label":136,"file":39,"line":137},"n0","source","$_GET['delete']",112,{"id":139,"type":140,"label":141,"file":39,"line":137},"n1","transform","→ wp_footer_menu_confirm_delete()",{"id":143,"type":144,"label":145,"file":46,"line":93,"wp_function":146},"n2","sink","echo() [XSS]","echo",[148,150],{"from":134,"to":139,"sanitized":149},false,{"from":139,"to":143,"sanitized":149},"medium",{"entryPoint":153,"graph":154,"unsanitizedCount":14,"severity":151},"\u003Cadmin_main> (admin_main.php:0)",{"nodes":155,"edges":165},[156,159,160,161,163],{"id":134,"type":135,"label":157,"file":39,"line":158},"$_SERVER",48,{"id":139,"type":144,"label":145,"file":39,"line":74,"wp_function":146},{"id":143,"type":135,"label":136,"file":39,"line":137},{"id":162,"type":140,"label":141,"file":39,"line":137},"n3",{"id":164,"type":144,"label":145,"file":46,"line":93,"wp_function":146},"n4",[166,168,169],{"from":134,"to":139,"sanitized":167},true,{"from":143,"to":162,"sanitized":149},{"from":162,"to":164,"sanitized":149},{"entryPoint":171,"graph":172,"unsanitizedCount":14,"severity":151},"wp_footer_menu_process (main.php:142)",{"nodes":173,"edges":184},[174,177,180,182,183],{"id":134,"type":135,"label":175,"file":46,"line":176},"$_POST",181,{"id":139,"type":144,"label":178,"file":46,"line":176,"wp_function":179},"update_option() [Settings Manipulation]","update_option",{"id":143,"type":135,"label":136,"file":46,"line":181},147,{"id":162,"type":140,"label":141,"file":46,"line":181},{"id":164,"type":144,"label":145,"file":46,"line":93,"wp_function":146},[185,186,187],{"from":134,"to":139,"sanitized":167},{"from":143,"to":162,"sanitized":149},{"from":162,"to":164,"sanitized":149},{"entryPoint":189,"graph":190,"unsanitizedCount":14,"severity":151},"\u003Cmain> (main.php:0)",{"nodes":191,"edges":202},[192,194,195,196,197,198,200],{"id":134,"type":135,"label":193,"file":46,"line":29},"$_SERVER (x2)",{"id":139,"type":144,"label":145,"file":46,"line":69,"wp_function":146},{"id":143,"type":135,"label":175,"file":46,"line":176},{"id":162,"type":144,"label":178,"file":46,"line":176,"wp_function":179},{"id":164,"type":135,"label":136,"file":46,"line":181},{"id":199,"type":140,"label":141,"file":46,"line":181},"n5",{"id":201,"type":144,"label":145,"file":46,"line":93,"wp_function":146},"n6",[203,204,205,206],{"from":134,"to":139,"sanitized":167},{"from":143,"to":162,"sanitized":167},{"from":164,"to":199,"sanitized":149},{"from":199,"to":201,"sanitized":149},{"summary":208,"deductions":209},"The wp-footer-menu v2.0 plugin exhibits a mixed security posture. On the positive side, it demonstrates excellent practices by having no known CVEs, no unpatched vulnerabilities, and all SQL queries utilizing prepared statements. The absence of AJAX handlers and REST API routes without permission callbacks, along with the presence of nonce and capability checks (though the latter are not explicitly tied to entry points in this data), suggests a conscious effort to secure its entry points. However, a significant concern arises from the static analysis of its code.  The fact that 100% of its 30 output operations are not properly escaped presents a clear risk of Cross-Site Scripting (XSS) vulnerabilities, which can be exploited by attackers to inject malicious scripts into the website.\n\nFurthermore, the taint analysis reveals that all 4 analyzed flows have unsanitized paths, and while they are not classified as critical or high severity, this indicates potential pathways for data to be manipulated in unintended ways. The presence of a shortcode as the sole entry point, while appearing protected by nonce checks, doesn't negate the output escaping issue. The lack of documented vulnerability history is a strength, but it does not compensate for the immediate risks identified in the code analysis. Therefore, while the plugin has a clean record of past vulnerabilities and uses prepared statements, the unescaped output and unsanitized taint flows represent actionable security concerns that require attention.",[210,213],{"reason":211,"points":212},"Unescaped output detected",8,{"reason":214,"points":215},"Unsanitized paths in taint analysis",5,"2026-03-16T21:56:59.982Z",{"wat":218,"direct":224},{"assetPaths":219,"generatorPatterns":221,"scriptPaths":222,"versionParams":223},[220],"\u002Fwp-content\u002Fplugins\u002Fwp-footer-menu\u002Fwaypoints.min.js",[],[220],[],{"cssClasses":225,"htmlComments":228,"htmlAttributes":229,"restEndpoints":230,"jsGlobals":231,"shortcodeOutput":233},[226,227],"wp_footer_sticky","wp_footer_info",[],[],[],[232],"jQuery",[234],"[print_wp_footer]"]