After a year, over 50,000 vulnerability records have been accumulated, what order should the site follow to handle them?
Gathered over 50,000 vulnerability records in one year, how should the site handle them in order? First, give a conclusion: These over 50,000 are the cumulative total of public vulnerability libraries, covering the entire plugin ecosystem and spanning several years. They cannot be directly used as the to-do list for the site. The only feasible steps are: first, reduce the component list to the entries truly related to the site, then classify by whether an account is needed and whether it can be triggered remotely, and finally decide which to act on first based on the backup and rollback capabilities.
What do the total numbers indicate and what do they not indicate?
The wording provided on the page of the vulnerability library reviewed today is as follows: This vulnerability library for the WordPress ecosystem has a cumulative total of over fifty-five thousand and nine hundred entries, among which more than thirteen thousand are marked with 'no official patch available', over nine hundred are still in the diagnosis stage, and over eighteen thousand have缓解 rules established. These numbers describe the results of the ecosystem health check, not the risk rating of a single site. There are three things that cannot be directly read: whether your site has installed the affected component, which version it is installed, and whether this component is truly open on your site.
In reverse, an increase in total is not necessarily bad news. The library is becoming complete, indicating that the same defect is being collected more comprehensively; what the site administrator should always look at is 'the daily new additions related to this site', not how steep the cumulative curve is.
Step 1: Reduce the list to what is related to this site
The action of reducing the list is more valuable than reading the announcement. Three types of ledger accounts should be able to be exported at any time:
| Ledger content | What to record | How to use it to screen for vulnerabilities |
|---|---|---|
| Component list | Main version of the program, the name and version of each extension | Only keep entries that match the name and the version falls within the affected range |
| Exposure list | Which addresses allow anonymous access and which are only in the background | Entry downgrade processing that requires login |
| Backup and rollback points | Time of the last available backup and recovery time | Deciding whether to move on the same day or schedule a window |
AnQiCMS (AnQi CMS) such sites have ready-made handles at this step: the background itself organizes data according to the content model and modules, exporting components and version information does not require additional scripts; the built-in JWT authentication is responsible for identity verification at the interface layer, sensitive word filtering and anti-crawling interference codes are processed separately for content and copy issues, SQL injection and XSS belong to the protection scope of the program layer, which is not the same as the security of extension components, and you cannot skip the list verification because the 'system has protection'.
How to classify practical exploitation and theoretical risks
The risk level should be read along with the grade description. The list of Drupal security announcements reviewed on that day, the AI module issued six announcements at once, the highest one was rated as critical, the type is cross-site scripting, the affected range is before 1.4.11 and between 1.5.0 and 1.5.2, the fixed version is 1.4.11 and 1.5.2, and the exploitation conditions are marked as theoretically feasible. 'Theoretically feasible' means that there is no publicly available exploit code, but it does not mean 'it will not be attacked' - it only indicates that the attack path requires specific conditions.
The classification can be simplified into four categories: whether it can be triggered anonymously, whether it requires a privileged account, whether there is already a public exploitation, and whether it affects the modules you actually enable. The first two categories determine the priority, and the last two categories determine whether it should be done today or scheduled for later.
Processing order and rollback plan
The order recommendation is fixed as: first, those that are anonymous, accessible, and already in the wild; then those that are theoretically accessible anonymously; then those that require an account; finally, those that require custom code to trigger. Every upgrade action must have an available backup in front of it, and this step cannot be skipped.
The deployment method determines the rollback cost. For sites deployed using Docker images, the rollback involves pointing the tag back to the previous version and pulling it up, which can be completed in minutes; for sites deployed using Baota panel or LNMP, the rollback needs to include the database and site directory, and you need to back up the data (including static files) first to confirm that it can be recovered. Most sites that have encountered problems are not because they haven't applied patches, but because there was no rollback path after the patch was applied.
Common questions
Are you keeping an eye on the vulnerability library every day?No. Just check the new entries that match the component list of this site on a weekly basis, and track in-the-wild exploitation and security bulletins on a daily basis.
What should you do with entries that have no official patch?Use mitigation measures to hold on: close unnecessary entries, limit access surfaces, strengthen log alerts, list this item separately in the tracking list, and handle it all at once after the patch is released.
Is it possible to upgrade in batches if the list is too long?It can be done in batches, but the batches should be grouped by exposure surface, one group at a time, leave verification time between each group, and each group should have a backup first.