{"id":24847,"date":"2026-06-11T08:00:39","date_gmt":"2026-06-11T01:00:39","guid":{"rendered":"https:\/\/fpt-is.com\/en\/?post_type=goc_nhin_so&#038;p=24847"},"modified":"2026-06-13T10:40:09","modified_gmt":"2026-06-13T03:40:09","slug":"building-a-scalable-wordpress-vulnerability-hunting-framework-with-ai-assisted-analysis","status":"publish","type":"goc_nhin_so","link":"https:\/\/fpt-is.com\/en\/insights\/building-a-scalable-wordpress-vulnerability-hunting-framework-with-ai-assisted-analysis\/","title":{"rendered":"Building a Scalable WordPress Vulnerability Hunting Framework with AI-Assisted Analysis"},"content":{"rendered":"<p><span style=\"font-weight: 400;font-size: 12pt;font-family: arial, helvetica, sans-serif\">As the WordPress ecosystem continues to expand with thousands of plugins and themes, manual security reviews alone are no longer sufficient to keep pace with scale and complexity. In this article, B\u00f9i \u0110\u1ee9c T\u00e0i, a cybersecurity specialist at FPT IS, shares how he built a multi-stage framework that combines static analysis, AI-assisted review, and practical verification to support vulnerability discovery at scale.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;font-size: 12pt;font-family: arial, helvetica, sans-serif\">Over the past two months I\u2019ve been building out and testing a vulnerability hunting framework for the WordPress ecosystem. I want to be upfront about what it is and isn\u2019t: it\u2019s not a magic box that replaces manual auditing. It\u2019s a system that helps me spend my time better \u2014 scan more targets, kill noise early, hold onto review state across runs, and consistently surface the most promising leads for me to look at myself.<\/span><\/p>\n<p><span style=\"font-weight: 400;font-size: 12pt;font-family: arial, helvetica, sans-serif\">At a high level it combines custom static analysis, staged AI review, local verification, and reporting. The same general pattern applies whether I\u2019m looking at plugins or themes, even though each has its own quirks. I think of it less as an \u201cautonomous researcher\u201d and more as something that helps me prioritize and build evidence faster.<\/span><\/p>\n<h2><span style=\"font-size: 12pt;font-family: arial, helvetica, sans-serif\"><strong>Why I Built It This Way<\/strong><\/span><\/h2>\n<p><span style=\"font-weight: 400;font-size: 12pt;font-family: arial, helvetica, sans-serif\">The WordPress plugin\/theme ecosystem is just too big to review by hand at any real scale. Even if I narrow down to specific vulnerability classes, there\u2019s still a huge amount of code, and a lot of findings that look suspicious at first glance but collapse on closer inspection.<\/span><\/p>\n<p><span style=\"font-weight: 400;font-size: 12pt;font-family: arial, helvetica, sans-serif\">Plain SAST isn\u2019t enough on its own \u2014 it\u2019s great at flagging suspicious patterns, but also great at burying you in noise. And throwing an LLM at \u201creview everything\u201d with no structure is both expensive and unreliable. So I built this in stages on purpose.<\/span><\/p>\n<p><span style=\"font-weight: 400;font-size: 12pt;font-family: arial, helvetica, sans-serif\">The basic idea: do the cheap, simple rule-based checks first, save the expensive analysis for whatever survives, and keep myself in the loop at the end.<\/span><\/p>\n<h2><span style=\"font-size: 12pt;font-family: arial, helvetica, sans-serif\"><strong>The High-Level Flow<\/strong><\/span><\/h2>\n<h2><span style=\"font-size: 12pt;font-family: arial, helvetica, sans-serif\"><strong>1. Collection and static scanning<\/strong><\/span><\/h2>\n<p><span style=\"font-weight: 400;font-size: 12pt;font-family: arial, helvetica, sans-serif\">It starts with collecting targets and scanning code at scale. For public targets that means continuously pulling down WordPress plugins and themes and running them through a WordPress-focused static analysis pass.<\/span><\/p>\n<p><span style=\"font-weight: 400;font-size: 12pt;font-family: arial, helvetica, sans-serif\">The core scanning layer is Semgrep with a set of custom rules tuned for WordPress-specific patterns \u2014 things that actually matter on this attack surface, like request data flowing into dangerous sinks, missing authorization on AJAX\/REST handlers, unsafe deserialization, file inclusion, XSS sinks, and so on.<\/span><\/p>\n<p><span style=\"font-weight: 400;font-size: 12pt;font-family: arial, helvetica, sans-serif\">This first pass is meant to be broad. Its job isn\u2019t to say \u201cthis is a vulnerability\u201d \u2014 it\u2019s to say \u201cthis is worth a second look.\u201d<\/span><\/p>\n<p><a href=\"https:\/\/cdn.fpt-is.com\/en\/sites\/3\/2026\/06\/Building-a-Scalable-WordPress-Vulnerability-Hunting-Framework-with-AI-Assisted-Analysis-1-1781318504.webp\"><img decoding=\"async\" class=\"aligncenter size-full wp-image-24848\" src=\"https:\/\/cdn.fpt-is.com\/en\/sites\/3\/2026\/06\/Building-a-Scalable-WordPress-Vulnerability-Hunting-Framework-with-AI-Assisted-Analysis-1-1781318504.webp\" alt=\"Building A Scalable WordPress Vulnerability Hunting Framework With Ai Assisted Analysis 1 1781318504\" width=\"833\" height=\"95\" srcset=\"https:\/\/cdn.fpt-is.com\/en\/sites\/3\/2026\/06\/Building-a-Scalable-WordPress-Vulnerability-Hunting-Framework-with-AI-Assisted-Analysis-1-1781318504.webp 833w, https:\/\/cdn.fpt-is.com\/en\/sites\/3\/2026\/06\/Building-a-Scalable-WordPress-Vulnerability-Hunting-Framework-with-AI-Assisted-Analysis-1-1781318504-700x80.webp 700w\" sizes=\"(max-width: 833px) 100vw, 833px\" \/><\/a><\/p>\n<h2><span style=\"font-size: 12pt;font-family: arial, helvetica, sans-serif\"><strong>2. Stage 0: Simple rule-based triage<\/strong><\/span><\/h2>\n<p><span style=\"font-weight: 400;font-size: 12pt;font-family: arial, helvetica, sans-serif\">After the initial scan, the framework applies some rule-based filtering layer before any deeper review happens. This stage exists for one reason: static analysis is noisy, and there is no value in paying an AI model or a human to re-evaluate obvious junk.<\/span><\/p>\n<p><span style=\"font-weight: 400;font-size: 12pt;font-family: arial, helvetica, sans-serif\">This stage handles the boring-but-important cleanup:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400;font-size: 12pt;font-family: arial, helvetica, sans-serif\">groups findings into a smaller set of review families instead of treating each hit separately (One single code file may contain many findings in the same bug class)<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400;font-size: 12pt;font-family: arial, helvetica, sans-serif\">throws out obvious noise such as generated or irrelevant paths<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400;font-size: 12pt;font-family: arial, helvetica, sans-serif\">filters out findings that are clearly non-exploitable based on simple regex checks<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400;font-size: 12pt;font-family: arial, helvetica, sans-serif\">keeps low-confidence \u201cmaybe worth a manual look someday\u201d leads in their own lane instead of mixing them into the main pipeline<\/span><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;font-size: 12pt;font-family: arial, helvetica, sans-serif\">This stage also keeps the rest of the pipeline honest. If finding can\u2019t survive a basic sanity check, it has no business taking up review time later.<\/span><\/p>\n<p><a href=\"https:\/\/cdn.fpt-is.com\/en\/sites\/3\/2026\/06\/Building-a-Scalable-WordPress-Vulnerability-Hunting-Framework-with-AI-Assisted-Analysis-2-1781318562.webp\"><img decoding=\"async\" class=\"aligncenter size-full wp-image-24849\" src=\"https:\/\/cdn.fpt-is.com\/en\/sites\/3\/2026\/06\/Building-a-Scalable-WordPress-Vulnerability-Hunting-Framework-with-AI-Assisted-Analysis-2-1781318562.webp\" alt=\"Building A Scalable WordPress Vulnerability Hunting Framework With Ai Assisted Analysis 2 1781318562\" width=\"848\" height=\"241\" srcset=\"https:\/\/cdn.fpt-is.com\/en\/sites\/3\/2026\/06\/Building-a-Scalable-WordPress-Vulnerability-Hunting-Framework-with-AI-Assisted-Analysis-2-1781318562.webp 848w, https:\/\/cdn.fpt-is.com\/en\/sites\/3\/2026\/06\/Building-a-Scalable-WordPress-Vulnerability-Hunting-Framework-with-AI-Assisted-Analysis-2-1781318562-700x199.webp 700w\" sizes=\"(max-width: 848px) 100vw, 848px\" \/><\/a><\/p>\n<h2><span style=\"font-size: 12pt;font-family: arial, helvetica, sans-serif\"><strong>3. Deduplication and reusing past review state<\/strong><\/span><\/h2>\n<p><span style=\"font-weight: 400;font-size: 12pt;font-family: arial, helvetica, sans-serif\">WordPress scanning produces a lot of overlap. Different rules flag the same sink, the same plugin gets rescanned later with mostly unchanged code, and findings I already reviewed and dismissed keep coming back. Re-reviewing all of that from scratch every run would burn tokens and my attention for nothing.<\/span><\/p>\n<p><span style=\"font-weight: 400;font-size: 12pt;font-family: arial, helvetica, sans-serif\">So before anything moves forward, the framework collapses overlapping findings, checks what\u2019s already been reviewed, and only sends through what\u2019s actually new or still genuinely uncertain.<\/span><\/p>\n<p><a href=\"https:\/\/cdn.fpt-is.com\/en\/sites\/3\/2026\/06\/Building-a-Scalable-WordPress-Vulnerability-Hunting-Framework-with-AI-Assisted-Analysis-3-1781318686.webp\"><img decoding=\"async\" class=\"aligncenter size-full wp-image-24850\" src=\"https:\/\/cdn.fpt-is.com\/en\/sites\/3\/2026\/06\/Building-a-Scalable-WordPress-Vulnerability-Hunting-Framework-with-AI-Assisted-Analysis-3-1781318686.webp\" alt=\"Building A Scalable WordPress Vulnerability Hunting Framework With Ai Assisted Analysis 3 1781318686\" width=\"853\" height=\"247\" srcset=\"https:\/\/cdn.fpt-is.com\/en\/sites\/3\/2026\/06\/Building-a-Scalable-WordPress-Vulnerability-Hunting-Framework-with-AI-Assisted-Analysis-3-1781318686.webp 853w, https:\/\/cdn.fpt-is.com\/en\/sites\/3\/2026\/06\/Building-a-Scalable-WordPress-Vulnerability-Hunting-Framework-with-AI-Assisted-Analysis-3-1781318686-700x203.webp 700w\" sizes=\"(max-width: 853px) 100vw, 853px\" \/><\/a><\/p>\n<h2><span style=\"font-size: 12pt;font-family: arial, helvetica, sans-serif\"><strong>4. Stage 1: grouped AI triage<\/strong><\/span><\/h2>\n<p><span style=\"font-weight: 400;font-size: 12pt;font-family: arial, helvetica, sans-serif\">Once the obvious noise is gone, what\u2019s left goes through a lighter AI pass.<\/span><\/p>\n<p><span style=\"font-weight: 400;font-size: 12pt;font-family: arial, helvetica, sans-serif\">The goal here isn\u2019t certainty \u2014 it\u2019s sorting. Each finding ends up in roughly one of three buckets: worth a deeper look, probably a false positive, or still unclear.<\/span><\/p>\n<p><span style=\"font-weight: 400;font-size: 12pt;font-family: arial, helvetica, sans-serif\">One thing I do differently here: I don\u2019t review findings one at a time in isolation. Findings from the same file or the same area of code get grouped and reviewed together, because the context that actually tells you whether something\u2019s exploitable usually lives in the surrounding code, not just the flagged line.<\/span><\/p>\n<p><span style=\"font-weight: 400;font-size: 12pt;font-family: arial, helvetica, sans-serif\">That lets the model ask more useful questions, like:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400;font-size: 12pt;font-family: arial, helvetica, sans-serif\">Is the suspicious sink actually reachable?<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400;font-size: 12pt;font-family: arial, helvetica, sans-serif\">Is there an auth check nearby that the scanner couldn\u2019t follow?<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400;font-size: 12pt;font-family: arial, helvetica, sans-serif\">Is the data flow still dangerous once the surrounding code is considered?<\/span><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;font-size: 12pt;font-family: arial, helvetica, sans-serif\">By the end of this stage, the goal is not perfect truth. The goal is a much smaller queue of findings that are worthy of deeper analysis.<\/span><\/p>\n<p><a href=\"https:\/\/cdn.fpt-is.com\/en\/sites\/3\/2026\/06\/Building-a-Scalable-WordPress-Vulnerability-Hunting-Framework-with-AI-Assisted-Analysis-4-1781318729.webp\"><img decoding=\"async\" class=\"aligncenter size-full wp-image-24851\" src=\"https:\/\/cdn.fpt-is.com\/en\/sites\/3\/2026\/06\/Building-a-Scalable-WordPress-Vulnerability-Hunting-Framework-with-AI-Assisted-Analysis-4-1781318729.webp\" alt=\"Building A Scalable WordPress Vulnerability Hunting Framework With Ai Assisted Analysis 4 1781318729\" width=\"840\" height=\"168\" srcset=\"https:\/\/cdn.fpt-is.com\/en\/sites\/3\/2026\/06\/Building-a-Scalable-WordPress-Vulnerability-Hunting-Framework-with-AI-Assisted-Analysis-4-1781318729.webp 840w, https:\/\/cdn.fpt-is.com\/en\/sites\/3\/2026\/06\/Building-a-Scalable-WordPress-Vulnerability-Hunting-Framework-with-AI-Assisted-Analysis-4-1781318729-700x140.webp 700w\" sizes=\"(max-width: 840px) 100vw, 840px\" \/><\/a><\/p>\n<h2><span style=\"font-size: 12pt;font-family: arial, helvetica, sans-serif\"><strong>5. Stage 2: contextual deep review<\/strong><\/span><\/h2>\n<p><span style=\"font-weight: 400;font-size: 12pt;font-family: arial, helvetica, sans-serif\">This is where things get more selective and more about evidence-driven than pattern matching.<\/span><\/p>\n<p><span style=\"font-weight: 400;font-size: 12pt;font-family: arial, helvetica, sans-serif\">For each finding that made it this far, the system pulls in more surrounding sources and tries to answer the questions I would actually care about:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400;font-size: 12pt;font-family: arial, helvetica, sans-serif\">What\u2019s the likely vulnerability class<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400;font-size: 12pt;font-family: arial, helvetica, sans-serif\">What access level does it need<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400;font-size: 12pt;font-family: arial, helvetica, sans-serif\">Does the code path look practically exploitable<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400;font-size: 12pt;font-family: arial, helvetica, sans-serif\">and \u2014 importantly \u2014 what\u2019s the actual evidence behind that conclusion.<\/span><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;font-size: 12pt;font-family: arial, helvetica, sans-serif\">This is also where I try to force discipline into the workflow. A strong-looking claim still needs grounded evidence. If the evidence is weak, incomplete, or contradictory, the right answer is not to auto-promote it just because it looks exciting.<\/span><\/p>\n<p><span style=\"font-weight: 400;font-size: 12pt;font-family: arial, helvetica, sans-serif\">That matters because a sink without a real source is not a bug. A source without a meaningful sink is not a bug. A suspicious pattern that falls apart once state, sanitization, or access boundaries are understood is not a bug.<\/span><\/p>\n<p><a href=\"https:\/\/cdn.fpt-is.com\/en\/sites\/3\/2026\/06\/Building-a-Scalable-WordPress-Vulnerability-Hunting-Framework-with-AI-Assisted-Analysis-5-1781318825.webp\"><img decoding=\"async\" class=\"aligncenter size-full wp-image-24852\" src=\"https:\/\/cdn.fpt-is.com\/en\/sites\/3\/2026\/06\/Building-a-Scalable-WordPress-Vulnerability-Hunting-Framework-with-AI-Assisted-Analysis-5-1781318825.webp\" alt=\"Building A Scalable WordPress Vulnerability Hunting Framework With Ai Assisted Analysis 5 1781318825\" width=\"835\" height=\"172\" srcset=\"https:\/\/cdn.fpt-is.com\/en\/sites\/3\/2026\/06\/Building-a-Scalable-WordPress-Vulnerability-Hunting-Framework-with-AI-Assisted-Analysis-5-1781318825.webp 835w, https:\/\/cdn.fpt-is.com\/en\/sites\/3\/2026\/06\/Building-a-Scalable-WordPress-Vulnerability-Hunting-Framework-with-AI-Assisted-Analysis-5-1781318825-700x144.webp 700w\" sizes=\"(max-width: 835px) 100vw, 835px\" \/><\/a><\/p>\n<p><span style=\"font-weight: 400;font-size: 12pt;font-family: arial, helvetica, sans-serif\">The following examples illustrate how the framework behaves in practice.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;font-size: 12pt;font-family: arial, helvetica, sans-serif\">In this finding case, as you can see after running stage 1 \u2014 Quick AI triage, the AI is confident that the finding was a false positive and decides not to pass it to stage 2.<\/span><\/p>\n<p><a href=\"https:\/\/cdn.fpt-is.com\/en\/sites\/3\/2026\/06\/Building-a-Scalable-WordPress-Vulnerability-Hunting-Framework-with-AI-Assisted-Analysis-6-1781318871.webp\"><img decoding=\"async\" class=\"aligncenter size-full wp-image-24853\" src=\"https:\/\/cdn.fpt-is.com\/en\/sites\/3\/2026\/06\/Building-a-Scalable-WordPress-Vulnerability-Hunting-Framework-with-AI-Assisted-Analysis-6-1781318871.webp\" alt=\"Building A Scalable WordPress Vulnerability Hunting Framework With Ai Assisted Analysis 6 1781318871\" width=\"820\" height=\"565\" srcset=\"https:\/\/cdn.fpt-is.com\/en\/sites\/3\/2026\/06\/Building-a-Scalable-WordPress-Vulnerability-Hunting-Framework-with-AI-Assisted-Analysis-6-1781318871.webp 820w, https:\/\/cdn.fpt-is.com\/en\/sites\/3\/2026\/06\/Building-a-Scalable-WordPress-Vulnerability-Hunting-Framework-with-AI-Assisted-Analysis-6-1781318871-700x482.webp 700w\" sizes=\"(max-width: 820px) 100vw, 820px\" \/><\/a><\/p>\n<p><span style=\"font-weight: 400;font-size: 12pt;font-family: arial, helvetica, sans-serif\">In this case, the finding did get promoted to stage 2, and the AI model in stage 2 is very confident that this finding is a real vulnerability.<\/span><\/p>\n<p><a href=\"https:\/\/cdn.fpt-is.com\/en\/sites\/3\/2026\/06\/Building-a-Scalable-WordPress-Vulnerability-Hunting-Framework-with-AI-Assisted-Analysis-7-1781319094.webp\"><img decoding=\"async\" class=\"aligncenter size-full wp-image-24854\" src=\"https:\/\/cdn.fpt-is.com\/en\/sites\/3\/2026\/06\/Building-a-Scalable-WordPress-Vulnerability-Hunting-Framework-with-AI-Assisted-Analysis-7-1781319094.webp\" alt=\"Building A Scalable WordPress Vulnerability Hunting Framework With Ai Assisted Analysis 7 1781319094\" width=\"817\" height=\"592\" srcset=\"https:\/\/cdn.fpt-is.com\/en\/sites\/3\/2026\/06\/Building-a-Scalable-WordPress-Vulnerability-Hunting-Framework-with-AI-Assisted-Analysis-7-1781319094.webp 817w, https:\/\/cdn.fpt-is.com\/en\/sites\/3\/2026\/06\/Building-a-Scalable-WordPress-Vulnerability-Hunting-Framework-with-AI-Assisted-Analysis-7-1781319094-700x507.webp 700w\" sizes=\"(max-width: 817px) 100vw, 817px\" \/><\/a><\/p>\n<p><span style=\"font-weight: 400;font-size: 12pt;font-family: arial, helvetica, sans-serif\">But still, after dynamic verification in the local env with Claude code, the final results show that this finding is a false positive.<\/span><\/p>\n<p><a href=\"https:\/\/cdn.fpt-is.com\/en\/sites\/3\/2026\/06\/Building-a-Scalable-WordPress-Vulnerability-Hunting-Framework-with-AI-Assisted-Analysis-8-1781319307.webp\"><img decoding=\"async\" class=\"aligncenter size-full wp-image-24856\" src=\"https:\/\/cdn.fpt-is.com\/en\/sites\/3\/2026\/06\/Building-a-Scalable-WordPress-Vulnerability-Hunting-Framework-with-AI-Assisted-Analysis-8-1781319307.webp\" alt=\"Building A Scalable WordPress Vulnerability Hunting Framework With Ai Assisted Analysis 8 1781319307\" width=\"822\" height=\"317\" srcset=\"https:\/\/cdn.fpt-is.com\/en\/sites\/3\/2026\/06\/Building-a-Scalable-WordPress-Vulnerability-Hunting-Framework-with-AI-Assisted-Analysis-8-1781319307.webp 822w, https:\/\/cdn.fpt-is.com\/en\/sites\/3\/2026\/06\/Building-a-Scalable-WordPress-Vulnerability-Hunting-Framework-with-AI-Assisted-Analysis-8-1781319307-700x270.webp 700w\" sizes=\"(max-width: 822px) 100vw, 822px\" \/><\/a><\/p>\n<p><span style=\"font-weight: 400;font-size: 12pt;font-family: arial, helvetica, sans-serif\">So basically, whatever comes out of this stage 2 with solid evidence \u2014 any findings that I\u2019d consider a high chance of being a real vuln \u2014 is what I feed into my Claude-based verification flow next.<\/span><\/p>\n<p><span style=\"font-weight: 400;font-size: 12pt;font-family: arial, helvetica, sans-serif\">That flow has its own structure and skills it has to follow depending on the bug class, which is what the next section is about.<\/span><\/p>\n<h2><strong><span style=\"font-size: 12pt;font-family: arial, helvetica, sans-serif\">6. Promotion, local verification, and reporting<\/span><\/strong><\/h2>\n<p><span style=\"font-weight: 400;font-size: 12pt;font-family: arial, helvetica, sans-serif\">High-confidence findings move into a case workflow from here.<\/span><\/p>\n<p><span style=\"font-weight: 400;font-size: 12pt;font-family: arial, helvetica, sans-serif\">At this stage, I evaluate the vulnerability class, potential impact, strength of evidence, and whether the finding appears sufficiently credible to justify further investigation.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;font-size: 12pt;font-family: arial, helvetica, sans-serif\">When I do want to verify a finding, I usually use Claude Code as a verification assistant. Depending on the vulnerability family, I can steer it with more specialized guides or skills for areas like XSS, SQL injection, deserialization, file inclusion, auth-boundary checks, and reporting.<\/span><\/p>\n<p><a href=\"https:\/\/cdn.fpt-is.com\/en\/sites\/3\/2026\/06\/Building-a-Scalable-WordPress-Vulnerability-Hunting-Framework-with-AI-Assisted-Analysis-9-1781319428.webp\"><img decoding=\"async\" class=\"aligncenter size-full wp-image-24857\" src=\"https:\/\/cdn.fpt-is.com\/en\/sites\/3\/2026\/06\/Building-a-Scalable-WordPress-Vulnerability-Hunting-Framework-with-AI-Assisted-Analysis-9-1781319428.webp\" alt=\"Building A Scalable WordPress Vulnerability Hunting Framework With Ai Assisted Analysis 9 1781319428\" width=\"745\" height=\"521\" srcset=\"https:\/\/cdn.fpt-is.com\/en\/sites\/3\/2026\/06\/Building-a-Scalable-WordPress-Vulnerability-Hunting-Framework-with-AI-Assisted-Analysis-9-1781319428.webp 745w, https:\/\/cdn.fpt-is.com\/en\/sites\/3\/2026\/06\/Building-a-Scalable-WordPress-Vulnerability-Hunting-Framework-with-AI-Assisted-Analysis-9-1781319428-700x490.webp 700w\" sizes=\"(max-width: 745px) 100vw, 745px\" \/><\/a><\/p>\n<p><span style=\"font-weight: 400;font-size: 12pt;font-family: arial, helvetica, sans-serif\">Around that, I have supporting scripts and helper flows that handle repetitive work such as preparing or resetting the local WordPress environment, installing or removing the target plugin, collecting the right authentication context, and doing structured auth-probing or other setup steps.<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><a href=\"https:\/\/cdn.fpt-is.com\/en\/sites\/3\/2026\/06\/Building-a-Scalable-WordPress-Vulnerability-Hunting-Framework-with-AI-Assisted-Analysis-10-1781319465.webp\"><img decoding=\"async\" class=\"aligncenter size-full wp-image-24858\" src=\"https:\/\/cdn.fpt-is.com\/en\/sites\/3\/2026\/06\/Building-a-Scalable-WordPress-Vulnerability-Hunting-Framework-with-AI-Assisted-Analysis-10-1781319465.webp\" alt=\"Building A Scalable WordPress Vulnerability Hunting Framework With Ai Assisted Analysis 10 1781319465\" width=\"823\" height=\"387\" srcset=\"https:\/\/cdn.fpt-is.com\/en\/sites\/3\/2026\/06\/Building-a-Scalable-WordPress-Vulnerability-Hunting-Framework-with-AI-Assisted-Analysis-10-1781319465.webp 823w, https:\/\/cdn.fpt-is.com\/en\/sites\/3\/2026\/06\/Building-a-Scalable-WordPress-Vulnerability-Hunting-Framework-with-AI-Assisted-Analysis-10-1781319465-700x329.webp 700w\" sizes=\"(max-width: 823px) 100vw, 823px\" \/><\/a><\/p>\n<p><a href=\"https:\/\/cdn.fpt-is.com\/en\/sites\/3\/2026\/06\/Building-a-Scalable-WordPress-Vulnerability-Hunting-Framework-with-AI-Assisted-Analysis-11-1781319531.webp\"><img decoding=\"async\" class=\"aligncenter size-full wp-image-24859\" src=\"https:\/\/cdn.fpt-is.com\/en\/sites\/3\/2026\/06\/Building-a-Scalable-WordPress-Vulnerability-Hunting-Framework-with-AI-Assisted-Analysis-11-1781319531.webp\" alt=\"Building A Scalable WordPress Vulnerability Hunting Framework With Ai Assisted Analysis 11 1781319531\" width=\"821\" height=\"371\" srcset=\"https:\/\/cdn.fpt-is.com\/en\/sites\/3\/2026\/06\/Building-a-Scalable-WordPress-Vulnerability-Hunting-Framework-with-AI-Assisted-Analysis-11-1781319531.webp 821w, https:\/\/cdn.fpt-is.com\/en\/sites\/3\/2026\/06\/Building-a-Scalable-WordPress-Vulnerability-Hunting-Framework-with-AI-Assisted-Analysis-11-1781319531-700x316.webp 700w\" sizes=\"(max-width: 821px) 100vw, 821px\" \/><\/a><\/p>\n<p><a href=\"https:\/\/cdn.fpt-is.com\/en\/sites\/3\/2026\/06\/Building-a-Scalable-WordPress-Vulnerability-Hunting-Framework-with-AI-Assisted-Analysis-12-1781319664.webp\"><img decoding=\"async\" class=\"aligncenter size-full wp-image-24861\" src=\"https:\/\/cdn.fpt-is.com\/en\/sites\/3\/2026\/06\/Building-a-Scalable-WordPress-Vulnerability-Hunting-Framework-with-AI-Assisted-Analysis-12-1781319664.webp\" alt=\"Building A Scalable WordPress Vulnerability Hunting Framework With Ai Assisted Analysis 12 1781319664\" width=\"818\" height=\"273\" srcset=\"https:\/\/cdn.fpt-is.com\/en\/sites\/3\/2026\/06\/Building-a-Scalable-WordPress-Vulnerability-Hunting-Framework-with-AI-Assisted-Analysis-12-1781319664.webp 818w, https:\/\/cdn.fpt-is.com\/en\/sites\/3\/2026\/06\/Building-a-Scalable-WordPress-Vulnerability-Hunting-Framework-with-AI-Assisted-Analysis-12-1781319664-700x234.webp 700w\" sizes=\"(max-width: 818px) 100vw, 818px\" \/><\/a><\/p>\n<p><span style=\"font-weight: 400;font-size: 12pt;font-family: arial, helvetica, sans-serif\">That structure is also what makes the verification step actually efficient. Because Claude isn\u2019t starting from zero \u2014 it gets the right guide for the bug class and an environment that\u2019s already set up with the right context \u2014 it can stay focused on the actual question instead of burning tokens on setup, exploration, or figuring out what it\u2019s even looking at.<\/span><\/p>\n<p><span style=\"font-weight: 400;font-size: 12pt;font-family: arial, helvetica, sans-serif\">The reporting side follows the same philosophy \u2014 every finding carries its history with it: where it came from, why it survived earlier stages, what evidence backs it up, and what\u2019s still left for a human to decide.<\/span><\/p>\n<p><span style=\"font-size: 12pt;font-family: arial, helvetica, sans-serif\"><span style=\"font-weight: 400\">One capability I am considering for future development is a Claude-based orchestration layer that continuously monitors new findings, prioritizes those that appear both interesting and realistically exploitable, and automatically initiates verification workflows when human review is unavailable, and kicks off verification while I am not actively monitoring the system. .<\/span><span style=\"font-weight: 400\"> I\u2019m a bit cautious about this since it leans even more on AI judgment. Still, it could meaningfully cut down the lag between \u201ca strong finding shows up\u201d and \u201cI actually looks at it.\u201d<\/span><\/span><\/p>\n<p><a href=\"https:\/\/cdn.fpt-is.com\/en\/sites\/3\/2026\/06\/Building-a-Scalable-WordPress-Vulnerability-Hunting-Framework-with-AI-Assisted-Analysis-13-1781319750.webp\"><img decoding=\"async\" class=\"aligncenter size-full wp-image-24862\" src=\"https:\/\/cdn.fpt-is.com\/en\/sites\/3\/2026\/06\/Building-a-Scalable-WordPress-Vulnerability-Hunting-Framework-with-AI-Assisted-Analysis-13-1781319750.webp\" alt=\"Building A Scalable WordPress Vulnerability Hunting Framework With Ai Assisted Analysis 13 1781319750\" width=\"833\" height=\"157\" srcset=\"https:\/\/cdn.fpt-is.com\/en\/sites\/3\/2026\/06\/Building-a-Scalable-WordPress-Vulnerability-Hunting-Framework-with-AI-Assisted-Analysis-13-1781319750.webp 833w, https:\/\/cdn.fpt-is.com\/en\/sites\/3\/2026\/06\/Building-a-Scalable-WordPress-Vulnerability-Hunting-Framework-with-AI-Assisted-Analysis-13-1781319750-700x132.webp 700w\" sizes=\"(max-width: 833px) 100vw, 833px\" \/><\/a><\/p>\n<h2><span style=\"font-size: 12pt;font-family: arial, helvetica, sans-serif\"><strong>End-to-End View<\/strong><\/span><\/h2>\n<p><span style=\"font-weight: 400;font-size: 12pt;font-family: arial, helvetica, sans-serif\">Each section above is how I think about one piece of the pipeline. Put together, the whole thing looks like this:<\/span><\/p>\n<p><a href=\"https:\/\/cdn.fpt-is.com\/en\/sites\/3\/2026\/06\/Building-a-Scalable-WordPress-Vulnerability-Hunting-Framework-with-AI-Assisted-Analysis-14-1781319805.webp\"><img decoding=\"async\" class=\"aligncenter size-full wp-image-24863\" src=\"https:\/\/cdn.fpt-is.com\/en\/sites\/3\/2026\/06\/Building-a-Scalable-WordPress-Vulnerability-Hunting-Framework-with-AI-Assisted-Analysis-14-1781319805.webp\" alt=\"Building A Scalable WordPress Vulnerability Hunting Framework With Ai Assisted Analysis 14 1781319805\" width=\"611\" height=\"877\" \/><\/a><\/p>\n<h2><span style=\"font-size: 12pt;font-family: arial, helvetica, sans-serif\"><strong>What This Has Been Good At<\/strong><\/span><\/h2>\n<p><span style=\"font-weight: 400;font-size: 12pt;font-family: arial, helvetica, sans-serif\">Overall, I am pleased with the results the framework has produced so far.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;font-size: 12pt;font-family: arial, helvetica, sans-serif\">It\u2019s surfaced a real mix of vulnerability classes, including:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400;font-size: 12pt;font-family: arial, helvetica, sans-serif\">a critical unauthenticated PHP object injection<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400;font-size: 12pt;font-family: arial, helvetica, sans-serif\">Some impactful SQL injection findings<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400;font-size: 12pt;font-family: arial, helvetica, sans-serif\">Numerous Cross-Site Scripting (XSS) findings.\u00a0<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400;font-size: 12pt;font-family: arial, helvetica, sans-serif\">Simple broken access control<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400;font-size: 12pt;font-family: arial, helvetica, sans-serif\">Local file inclusion \/ path-related bugs<\/span><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;font-size: 12pt;font-family: arial, helvetica, sans-serif\">The pipeline is good at turning a big pile of scanned code into actual leads worth chasing \u2014 especially for bugs that aren\u2019t trivially obvious but still leave enough static \u201cfingerprint\u201d for the staged review to build confidence on.<\/span><\/p>\n<p><span style=\"font-weight: 400;font-size: 12pt;font-family: arial, helvetica, sans-serif\">It\u2019s also been useful operationally just because it remembers things. Since it carries state forward instead of acting like a one-shot scanner, I can come back to the same plugin or ecosystem weeks later without redoing the same work.<\/span><\/p>\n<h3><strong><span style=\"font-size: 12pt;font-family: arial, helvetica, sans-serif\">Proof of work<\/span><\/strong><\/h3>\n<p><span style=\"font-weight: 400;font-size: 12pt;font-family: arial, helvetica, sans-serif\">The framework entered active use at the end of April. After submitting nine reports, I reached 19th place on the Patchstack leaderboard, including one zero-day vulnerability with a CVSS score of 9.8.\u00a0<\/span><\/p>\n<p><a href=\"https:\/\/cdn.fpt-is.com\/en\/sites\/3\/2026\/06\/Building-a-Scalable-WordPress-Vulnerability-Hunting-Framework-with-AI-Assisted-Analysis-15-1781319884.webp\"><img decoding=\"async\" class=\"aligncenter size-full wp-image-24864\" src=\"https:\/\/cdn.fpt-is.com\/en\/sites\/3\/2026\/06\/Building-a-Scalable-WordPress-Vulnerability-Hunting-Framework-with-AI-Assisted-Analysis-15-1781319884.webp\" alt=\"Building A Scalable WordPress Vulnerability Hunting Framework With Ai Assisted Analysis 15 1781319884\" width=\"617\" height=\"876\" \/><\/a><\/p>\n<p><span style=\"font-weight: 400;font-size: 12pt;font-family: arial, helvetica, sans-serif\">In May, the results improved further, placing me among the top nine researchers on the leaderboard.\u00a0<\/span><\/p>\n<p><a href=\"https:\/\/cdn.fpt-is.com\/en\/sites\/3\/2026\/06\/Building-a-Scalable-WordPress-Vulnerability-Hunting-Framework-with-AI-Assisted-Analysis-16-1781319920.webp\"><img decoding=\"async\" class=\"aligncenter size-full wp-image-24865\" src=\"https:\/\/cdn.fpt-is.com\/en\/sites\/3\/2026\/06\/Building-a-Scalable-WordPress-Vulnerability-Hunting-Framework-with-AI-Assisted-Analysis-16-1781319920.webp\" alt=\"Building A Scalable WordPress Vulnerability Hunting Framework With Ai Assisted Analysis 16 1781319920\" width=\"821\" height=\"701\" srcset=\"https:\/\/cdn.fpt-is.com\/en\/sites\/3\/2026\/06\/Building-a-Scalable-WordPress-Vulnerability-Hunting-Framework-with-AI-Assisted-Analysis-16-1781319920.webp 821w, https:\/\/cdn.fpt-is.com\/en\/sites\/3\/2026\/06\/Building-a-Scalable-WordPress-Vulnerability-Hunting-Framework-with-AI-Assisted-Analysis-16-1781319920-700x598.webp 700w\" sizes=\"(max-width: 821px) 100vw, 821px\" \/><\/a><\/p>\n<p><span style=\"font-weight: 400;font-size: 12pt;font-family: arial, helvetica, sans-serif\">To date, I have submitted 31 reports to Patchstack.\u00a0<\/span><\/p>\n<p><a href=\"https:\/\/cdn.fpt-is.com\/en\/sites\/3\/2026\/06\/Building-a-Scalable-WordPress-Vulnerability-Hunting-Framework-with-AI-Assisted-Analysis-17-1781319953.png\"><img decoding=\"async\" class=\"aligncenter size-full wp-image-24866\" src=\"https:\/\/cdn.fpt-is.com\/en\/sites\/3\/2026\/06\/Building-a-Scalable-WordPress-Vulnerability-Hunting-Framework-with-AI-Assisted-Analysis-17-1781319953.png\" alt=\"Building A Scalable WordPress Vulnerability Hunting Framework With Ai Assisted Analysis 17 1781319953\" width=\"825\" height=\"190\" srcset=\"https:\/\/cdn.fpt-is.com\/en\/sites\/3\/2026\/06\/Building-a-Scalable-WordPress-Vulnerability-Hunting-Framework-with-AI-Assisted-Analysis-17-1781319953.png 825w, https:\/\/cdn.fpt-is.com\/en\/sites\/3\/2026\/06\/Building-a-Scalable-WordPress-Vulnerability-Hunting-Framework-with-AI-Assisted-Analysis-17-1781319953-700x161.png 700w\" sizes=\"(max-width: 825px) 100vw, 825px\" \/><\/a><\/p>\n<h2><span style=\"font-size: 12pt;font-family: arial, helvetica, sans-serif\"><strong>Where It Falls Short<\/strong><\/span><\/h2>\n<p><span style=\"font-weight: 400;font-size: 12pt;font-family: arial, helvetica, sans-serif\">I want to be honest about the limitation, too.<\/span><\/p>\n<p><span style=\"font-weight: 400;font-size: 12pt;font-family: arial, helvetica, sans-serif\">This is fundamentally a static-analysis-first system, and that comes with blind spots. It struggles with:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400;font-size: 12pt;font-family: arial, helvetica, sans-serif\">business logic flaws<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400;font-size: 12pt;font-family: arial, helvetica, sans-serif\">ownership\/authorization bugs that depend on application state<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400;font-size: 12pt;font-family: arial, helvetica, sans-serif\">second-order vulnerabilities<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400;font-size: 12pt;font-family: arial, helvetica, sans-serif\">multi-step exploit chains<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400;font-size: 12pt;font-family: arial, helvetica, sans-serif\">cases where data passes through wrappers, storage layers, or framework abstractions before hitting the actual sink<\/span><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;font-size: 12pt;font-family: arial, helvetica, sans-serif\">Basically, if a bug depends on how the application behaves rather than how one function looks on its own, this framework gets a lot less reliable.<\/span><\/p>\n<p><span style=\"font-size: 12pt;font-family: arial, helvetica, sans-serif\"><b>It has missed real, high-impact bugs<\/b><span style=\"font-weight: 400\">, including deserialization and SQLi issues that turned out to be very impactful. Looking back at those misses, the problem usually wasn\u2019t that the bug was undetectable in principle. It\u2019s that the source and sink were too far apart, the dangerous behavior only emerged once you crossed a few layers, or the exploitability depended on context that\u2019s basically invisible from the code alone.<\/span><\/span><\/p>\n<p><span style=\"font-weight: 400;font-size: 12pt;font-family: arial, helvetica, sans-serif\">Broken access control is another area where I try to keep my expectations realistic. The simple \u201cmissing capability check\u201d cases are usually easy to spot. The interesting BAC bugs almost never are \u2014 they\u2019re about ownership, object scoping, or workflow assumptions, and the framework often just doesn\u2019t have enough signal to catch those.<\/span><\/p>\n<h2><span style=\"font-size: 12pt;font-family: arial, helvetica, sans-serif\"><strong>Why Manual Verification Still Matters<\/strong><\/span><\/h2>\n<p><span style=\"font-weight: 400;font-size: 12pt;font-family: arial, helvetica, sans-serif\">If there\u2019s one thing this project keeps reminding me, it\u2019s that finding something and proving it are two very different things.<\/span><\/p>\n<p><span style=\"font-weight: 400;font-size: 12pt;font-family: arial, helvetica, sans-serif\">Plenty of findings that look great on paper don\u2019t survive actual testing. Sometimes WordPress core changes the data shape just enough to break the exploit. Sometimes the sink is real but the attacker doesn\u2019t actually control the input the way it looks like on paper. Sometimes the direction is right but the impact is overstated.<\/span><\/p>\n<p><span style=\"font-weight: 400;font-size: 12pt;font-family: arial, helvetica, sans-serif\">So manual verification isn\u2019t optional for me \u2014 it\u2019s the gate before I trust a finding at all. The framework gets me to the right place faster, but it doesn\u2019t do the thinking for me.<\/span><\/p>\n<h2><span style=\"font-size: 12pt;font-family: arial, helvetica, sans-serif\"><strong>The Part I Like Most<\/strong><\/span><\/h2>\n<p><span style=\"font-weight: 400;font-size: 12pt;font-family: arial, helvetica, sans-serif\">If I had to pick what I value most about this whole setup, it\u2019s not \u201cit finds bugs automatically.\u201d It\u2019s that it gives me a structured way to hunt at scale without pretending the hard parts go away.<\/span><\/p>\n<p><span style=\"font-size: 12pt;font-family: arial, helvetica, sans-serif\"><span style=\"font-weight: 400\">The scanner surfaces findings, the staged review cuts the noise, the deeper pass adds context, and the verification\/reporting layer makes the last mile repeatable. <\/span><span style=\"font-weight: 400\">In many cases, the misses are nearly as valuable as the successful discoveries<\/span><span style=\"font-weight: 400\"> \u2014 they\u2019re what tell me where the methodology still needs work.<\/span><\/span><\/p>\n<p><span style=\"font-weight: 400;font-size: 12pt;font-family: arial, helvetica, sans-serif\">That feedback loop is probably the most valuable thing about the whole project. Every false positive, every missed bug, and every confirmed finding feeds back into the rules, the review flow, and how I decide what\u2019s worth my attention next.<\/span><\/p>\n<p><span style=\"font-weight: 400;font-size: 12pt;font-family: arial, helvetica, sans-serif\">On top of that, the Claude verification step has saved me a lot of time on the reproduction side. Often I already know exactly which function or line the vulnerable code lives in \u2014 what I don\u2019t know is how to actually reach it: which page, action, plugin setting, or request triggers that code path in a running WordPress site. Having Claude work through the plugin\/UI to figure out the right trigger path has saved me a lot of time.<\/span><\/p>\n<h2><span style=\"font-size: 12pt;font-family: arial, helvetica, sans-serif\"><strong>Closing Thoughts<\/strong><\/span><\/h2>\n<p><span style=\"font-size: 12pt;font-family: arial, helvetica, sans-serif\"><span style=\"font-weight: 400\">I do not see this framework as a replacement for security research. Instead, I see it as a force multiplier.<\/span><span style=\"font-weight: 400\">\u00a0<\/span><\/span><\/p>\n<p><span style=\"font-weight: 400;font-size: 12pt;font-family: arial, helvetica, sans-serif\">When it works, it lets me cover more ground, spend less time on obvious dead ends, and put my own attention where it\u2019s most likely to pay off. When it doesn\u2019t work, it\u2019s a pretty good reminder of why this job still comes down to judgment, skepticism, and actually verifying things.<\/span><\/p>\n<p><span style=\"font-size: 12pt;font-family: arial, helvetica, sans-serif\"><span style=\"font-weight: 400\">And looking at the bounty platforms right now \u2014 Patchstack, Wordfence, and similar \u2014 submitting findings has started to feel like a race.<\/span><\/span><\/p>\n<p><a href=\"https:\/\/cdn.fpt-is.com\/en\/sites\/3\/2026\/06\/Building-a-Scalable-WordPress-Vulnerability-Hunting-Framework-with-AI-Assisted-Analysis-18-1781320081.webp\"><img decoding=\"async\" class=\"aligncenter size-full wp-image-24868\" src=\"https:\/\/cdn.fpt-is.com\/en\/sites\/3\/2026\/06\/Building-a-Scalable-WordPress-Vulnerability-Hunting-Framework-with-AI-Assisted-Analysis-18-1781320081.webp\" alt=\"Building A Scalable WordPress Vulnerability Hunting Framework With Ai Assisted Analysis 18 1781320081\" width=\"821\" height=\"307\" srcset=\"https:\/\/cdn.fpt-is.com\/en\/sites\/3\/2026\/06\/Building-a-Scalable-WordPress-Vulnerability-Hunting-Framework-with-AI-Assisted-Analysis-18-1781320081.webp 821w, https:\/\/cdn.fpt-is.com\/en\/sites\/3\/2026\/06\/Building-a-Scalable-WordPress-Vulnerability-Hunting-Framework-with-AI-Assisted-Analysis-18-1781320081-700x262.webp 700w\" sizes=\"(max-width: 821px) 100vw, 821px\" \/><\/a><\/p>\n<p><span style=\"font-size: 12pt;font-family: arial, helvetica, sans-serif\"><span style=\"font-weight: 400\">Many researchers are reporting similar classes of vulnerabilities at significant scale and speed<\/span><span style=\"font-weight: 400\">, which tells me they\u2019re likely running frameworks similar to mine, or even more advanced.<\/span><\/span><\/p>\n<p><span style=\"font-weight: 400;font-size: 12pt;font-family: arial, helvetica, sans-serif\">What\u2019s made this clearer to me is going back through disclosed reports from top researchers on the Patchstack leaderboard. Many of the bugs they found are genuinely complex \u2014 the kind that would be very hard, maybe nearly impossible, to catch with static analysis alone. Looking at those reports, I can see clearly what my framework would have missed.<\/span><\/p>\n<p><span style=\"font-size: 12pt;font-family: arial, helvetica, sans-serif\"><span style=\"font-weight: 400\">So while the framework is useful for covering ground quickly, I think there\u2019s still a lot of room \u2014 both to improve the tooling, and for <\/span><span style=\"font-weight: 400\">traditional manual research<\/span><span style=\"font-weight: 400\"> \u2014 to find the kind of deep, high-impact bugs that static-analysis-driven approaches just aren\u2019t built to catch.<\/span><\/span><\/p>\n<p>&nbsp;<\/p>\n<table style=\"border-collapse: collapse;width: 100%\">\n<tbody>\n<tr>\n<td style=\"width: 100%\"><span style=\"font-family: arial, helvetica, sans-serif;font-size: 12pt\"><b>Exclusive article by FPT expert<\/b><\/span><\/p>\n<p><span style=\"font-weight: 400;font-family: arial, helvetica, sans-serif;font-size: 12pt\">B\u00f9i \u0110\u1ee9c T\u00e0i is a cybersecurity specialist at FPT IS. His work focuses on vulnerability research, application security assessment, offensive security, and the development of automation frameworks that support large-scale security testing and analysis.<\/span><\/p>\n<p><span style=\"font-family: arial, helvetica, sans-serif;font-size: 12pt\"><i><span style=\"font-weight: 400\">This article is adapted from the author&#8217;s <\/span><\/i><a href=\"https:\/\/medium.com\/@ductai126\/how-i-structure-my-wordpress-vulnerability-hunting-workflow-0a236760096f\" rel=\"nofollow noopener\" target=\"_blank\"><i><span style=\"font-weight: 400\">original Medium publication<\/span><\/i><\/a><i><span style=\"font-weight: 400\"> and republished with permission.<\/span><\/i><\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n","protected":false},"author":21,"featured_media":24869,"parent":0,"template":"","nang_luc":[821],"danh_muc_goc_nhin_so":[789],"dich_vu":[],"linh_vuc":[],"platform":[],"san_pham":[],"the_goc_nhin_so":[],"class_list":["post-24847","goc_nhin_so","type-goc_nhin_so","status-publish","has-post-thumbnail","hentry","nang_luc-security","danh_muc_goc_nhin_so-expert-sharing"],"acf":[],"_links":{"self":[{"href":"https:\/\/fpt-is.com\/en\/wp-json\/wp\/v2\/goc_nhin_so\/24847","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fpt-is.com\/en\/wp-json\/wp\/v2\/goc_nhin_so"}],"about":[{"href":"https:\/\/fpt-is.com\/en\/wp-json\/wp\/v2\/types\/goc_nhin_so"}],"author":[{"embeddable":true,"href":"https:\/\/fpt-is.com\/en\/wp-json\/wp\/v2\/users\/21"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/fpt-is.com\/en\/wp-json\/wp\/v2\/media\/24869"}],"wp:attachment":[{"href":"https:\/\/fpt-is.com\/en\/wp-json\/wp\/v2\/media?parent=24847"}],"wp:term":[{"taxonomy":"nang_luc","embeddable":true,"href":"https:\/\/fpt-is.com\/en\/wp-json\/wp\/v2\/nang_luc?post=24847"},{"taxonomy":"danh_muc_goc_nhin_so","embeddable":true,"href":"https:\/\/fpt-is.com\/en\/wp-json\/wp\/v2\/danh_muc_goc_nhin_so?post=24847"},{"taxonomy":"dich_vu","embeddable":true,"href":"https:\/\/fpt-is.com\/en\/wp-json\/wp\/v2\/dich_vu?post=24847"},{"taxonomy":"linh_vuc","embeddable":true,"href":"https:\/\/fpt-is.com\/en\/wp-json\/wp\/v2\/linh_vuc?post=24847"},{"taxonomy":"platform","embeddable":true,"href":"https:\/\/fpt-is.com\/en\/wp-json\/wp\/v2\/platform?post=24847"},{"taxonomy":"san_pham","embeddable":true,"href":"https:\/\/fpt-is.com\/en\/wp-json\/wp\/v2\/san_pham?post=24847"},{"taxonomy":"the_goc_nhin_so","embeddable":true,"href":"https:\/\/fpt-is.com\/en\/wp-json\/wp\/v2\/the_goc_nhin_so?post=24847"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}