Repository navigation
1.7.0: fewer false alarms, new PHP2Shell and wp2shell indicators - #15
Merged
Merged
Conversation
CptNope
force-pushed
the
fewer-false-alarms
branch
2 times, most recently
from
November 5, 2026 05:02
1dd2fab to
d06954c
Compare
False alarms on clean sites came from newly installed plugins and host files, and from two signatures that matched ordinary code: - PHP in an uploads/cache folder named exactly after an installed plugin or theme names its owner: older files low, recent or request-handling files medium (not high). Code signatures still apply; generic names never count. - Packages left half-unpacked in wp-content/upgrade/ (WordPress's real layout only) are one medium finding per folder, not high per file. - Must-use files that only require an installed plugin, and drop-ins that load one, are low; more host and tool names are known. - Firewall bootstraps (Wordfence, AIOS, MalCare) are trusted only at the site root while their plugin is installed; auto_prepend_file into host vendor folders or an installed plugin is low; session files, temp folders and ".." paths stay high. - A method named exec()/system() is not a shell call; file_put_contents() with form input is medium unless the file name comes from the request, a PHP file is written, or decoded input is written. - CI's false-positive test also covers ~55 wordpress.org plugins and 7 themes as shipped. An independent adversarial review found ways to hide a webshell behind the first draft (attacker-chosen folder names, fake upgrade folders, session files as "system" paths, firewall names anywhere, comment-only loaders); all are closed and tested. New indicators: PHP2Shell honeypot markers, shell_<8 hex>.php, session IDs and addresses (Oct 22-24); wp2shell persistence (fake plugin folders, w2s_/wpsvc_ admins, _site_transient_health_<hex> incl. multisite, WP_Core_Integrity and wp_compat_<hex> markers); a reminder for WordPress's Oct 28 security release (7.1.4 and backports). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011ejUFSkKi2KuJi647biNmu
CptNope
force-pushed
the
fewer-false-alarms
branch
from
November 5, 2026 05:04
d06954c to
9b92d26
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fewer false alarms
Clean sites were getting "Suspicious" or "Compromised" verdicts. The causes were files that newly installed plugins and hosts create, and two signatures that matched ordinary code.
uploads/<plugin>/orcache/<plugin>/: high when recentcache,files,backups…) are never claimed by a plugin.wp-content/upgrade/: highwordpress-<ver>/wordpress/…,<slug>[.<ver>]/<slug>/…)requirean installed plugin. Files that also log people in or read requests stay medium.aios-bootstrap.phpfirewall: high "backdoor"wordfence-waf.php,malcareorimunifywas trusted.auto_prepend_fileinto host vendor folders (/usr/local/<x>/,/opt/<x>/,/usr/share/<x>/,/var/imunify360/) or an installed plugin's folder: high..paths and site data folders stay high.public function exec( $request ): criticalfile_put_contents()with$_POST(custom CSS, imports): highaios-bootstrap.php,malcare-waf.phpin the site root; GoDaddy'sgd-config.php: "unknown file"CI: the false-alarm job now also scans the shipped zips of about 55 of the most-installed wordpress.org plugins (security, backup, cache, snippets, SEO, forms, management) and 7 themes.
Independent adversarial review. A separate review found ways to hide a webshell behind the first draft:
uploads/users/counted as User Switching's folderupgrade/wordpress-1/counted as a core update/var/lib/php/sessionscounted as a host-only folderaios-bootstrap.phpanywhere was trustedAll are fixed and have regression tests.
New indicators (sources checked)
PHP2SHELL_CORE_…,…CHAIN_OK,…CHECK, the p2s_v2 "alive" probe,shellflow_canary,recon0xdeadbeef,p2s-rider, fixed session IDs and boundaries,/pwn-<ip>shell_<8 hex>.phpwebshell namesadvanced-cache-handler-<hex>,database-repair-assistant-<hex>,wp2shell-<hex>w2s_/wpsvc_admin accounts_site_transient_health_<hex>optionWP_Core_Integrityandwp_compat_<hex>markersclass-wp-cache-<hex>.phpChecks
tab,done,err), now all annotated.https://claude.ai/code/session_011ejUFSkKi2KuJi647biNmu
Generated by Claude Code