[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$fIYPyRloTf5GwHJ8oCy2TlmvQI6VRsRl-R-EYckGePWI":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":13,"last_updated":14,"tested_up_to":15,"requires_at_least":16,"requires_php":17,"tags":18,"homepage":20,"download_link":21,"security_score":22,"vuln_count":13,"unpatched_count":13,"last_vuln_date":23,"fetched_at":24,"vulnerabilities":25,"developer":26,"crawl_stats":23,"alternatives":31,"analysis":48,"fingerprints":111},"wp-black-ribbon","WP Black Ribbon","1.0.0","dekkeng","https:\u002F\u002Fprofiles.wordpress.org\u002Fdekkeng\u002F","\u003Cp>Put the black ribbon image to your wordpress website.\u003Cbr \u002F>\nYou can config the location of the black ribbon in the plugin setting.\u003C\u002Fp>\n","Put the black ribbon image to your wordpress website.",10,1352,0,"2016-10-21T05:28:00.000Z","4.6.30","3.0.1","",[19],"black-ribbon","http:\u002F\u002Fwww.billbuild-studio.com","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-black-ribbon.zip",85,null,"2026-03-15T15:16:48.613Z",[],{"slug":7,"display_name":7,"profile_url":8,"plugin_count":27,"total_installs":11,"avg_security_score":22,"avg_patch_time_days":28,"trust_score":29,"computed_at":30},1,30,84,"2026-04-05T17:59:14.719Z",[32],{"slug":33,"name":34,"version":35,"author":36,"author_profile":37,"description":38,"short_description":39,"active_installs":11,"downloaded":40,"rating":13,"num_ratings":13,"last_updated":41,"tested_up_to":15,"requires_at_least":16,"requires_php":17,"tags":42,"homepage":17,"download_link":47,"security_score":22,"vuln_count":13,"unpatched_count":13,"last_vuln_date":23,"fetched_at":24},"black-ribbon-by-attawit","Black Ribbon by Attawit","1.1.3","atton16","https:\u002F\u002Fprofiles.wordpress.org\u002Fatton16\u002F","\u003Cp>Display mourning Black Ribbon at selected corner on every page of your website. The plugin has schedule capability in which the user can select the period of mourning.\u003C\u002Fp>\n\u003Cp>The plugin is created to enable every website to bid farewell to His Majesty King Bhumibol Adulyadej, our beloved king.\u003C\u002Fp>\n\u003Cp>Features:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Selectable placement of the ribbon in four corners\u003C\u002Fli>\n\u003Cli>Schedule-able by start date and end date\u003C\u002Fli>\n\u003Cli>Responsive\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Compatibilities:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>All modern browsers including mobiles\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Acknowledgements\u003C\u002Fh3>\n\u003Cp>The ribbon images are provided by http:\u002F\u002Fnuuneoi.com. Original images by Jatuporn Jib Piyawarinwong.\u003C\u002Fp>\n","Display mourning Black Ribbon at selected corner on every page of your website.",1884,"2016-10-31T09:10:00.000Z",[43,19,44,45,46],"black","mourn","mourning","ribbon","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fblack-ribbon-by-attawit.zip",{"attackSurface":49,"codeSignals":69,"taintFlows":83,"riskAssessment":101,"analyzedAt":110},{"hooks":50,"ajaxHandlers":65,"restRoutes":66,"shortcodes":67,"cronEvents":68,"entryPointCount":13,"unprotectedCount":13},[51,57,61],{"type":52,"name":53,"callback":54,"file":55,"line":56},"action","plugins_loaded","bb_load_plugin_textdomain","wp-black-ribbon.php",35,{"type":52,"name":58,"callback":59,"priority":27,"file":55,"line":60},"wp_footer","show_ribbon",136,{"type":52,"name":62,"callback":63,"file":55,"line":64},"admin_menu","bbblackribbon_menu",153,[],[],[],[],{"dangerousFunctions":70,"sqlUsage":71,"outputEscaping":73,"fileOperations":13,"externalRequests":13,"nonceChecks":13,"capabilityChecks":13,"bundledLibraries":82},[],{"prepared":13,"raw":13,"locations":72},[],{"escaped":13,"rawEcho":74,"locations":75},2,[76,80],{"file":77,"line":78,"context":79},"admin_settings.php",12,"raw output",{"file":55,"line":81,"context":79},88,[],[84],{"entryPoint":85,"graph":86,"unsanitizedCount":27,"severity":100},"\u003Cadmin_settings> (admin_settings.php:0)",{"nodes":87,"edges":97},[88,92],{"id":89,"type":90,"label":91,"file":77,"line":78},"n0","source","$_SERVER['REQUEST_URI']",{"id":93,"type":94,"label":95,"file":77,"line":78,"wp_function":96},"n1","sink","echo() [XSS]","echo",[98],{"from":89,"to":93,"sanitized":99},false,"low",{"summary":102,"deductions":103},"The plugin \"wp-black-ribbon\" v1.0.0 exhibits a generally positive security posture, with no known vulnerabilities or CVEs recorded. The static analysis reveals a remarkably small attack surface, with zero identified AJAX handlers, REST API routes, shortcodes, or cron events, and importantly, all entry points are protected. Furthermore, the plugin demonstrates good practice by exclusively using prepared statements for SQL queries and avoiding external HTTP requests and file operations. This indicates a conscious effort by the developer to prevent common web vulnerabilities.\n\nHowever, the analysis does highlight a significant concern: 100% of output is not properly escaped. This is a critical weakness as it directly exposes the website to Cross-Site Scripting (XSS) vulnerabilities. Any dynamic data displayed to users, if not properly sanitized, could be exploited by an attacker to inject malicious scripts. While the taint analysis shows only one flow with unsanitized paths and no critical or high severity issues, the unescaped output is a broad exposure that could affect multiple points.\n\nIn conclusion, the plugin's lack of known vulnerabilities and minimal attack surface are strengths. The diligent use of prepared statements and absence of risky functions are commendable. Nevertheless, the complete lack of output escaping is a severe flaw that overshadows these positives. The developer must address this issue to prevent XSS attacks and ensure the plugin's overall security.",[104,107],{"reason":105,"points":106},"All output is unescaped",16,{"reason":108,"points":109},"Taint flow with unsanitized paths",5,"2026-03-17T01:35:17.968Z",{"wat":112,"direct":121},{"assetPaths":113,"generatorPatterns":118,"scriptPaths":119,"versionParams":120},[114,115,116,117],"\u002Fwp-content\u002Fplugins\u002Fwp-black-ribbon\u002Fimages\u002Fblackribbon-top-left.png","\u002Fwp-content\u002Fplugins\u002Fwp-black-ribbon\u002Fimages\u002Fblackribbon-top-right.png","\u002Fwp-content\u002Fplugins\u002Fwp-black-ribbon\u002Fimages\u002Fblackribbon-bottom-left.png","\u002Fwp-content\u002Fplugins\u002Fwp-black-ribbon\u002Fimages\u002Fblackribbon-bottom-right.png",[],[],[],{"cssClasses":122,"htmlComments":124,"htmlAttributes":125,"restEndpoints":126,"jsGlobals":127,"shortcodeOutput":128},[123],"BBBlackRibbon",[],[],[],[],[]]