<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>articles on Shelltrap</title><link>https://shelltrap.com/articles/</link><description>Recent content in articles on Shelltrap</description><generator>Hugo</generator><language>en-GB</language><lastBuildDate>Fri, 04 Sep 2026 09:00:00 +0200</lastBuildDate><atom:link href="https://shelltrap.com/articles/index.xml" rel="self" type="application/rss+xml"/><item><title>ClamAV alone is not enough for webshells</title><link>https://shelltrap.com/articles/clamav-alone-is-not-enough-for-webshells/</link><pubDate>Fri, 04 Sep 2026 09:00:00 +0200</pubDate><guid>https://shelltrap.com/articles/clamav-alone-is-not-enough-for-webshells/</guid><description>&lt;!-- hero: four stacked detection layers — hashes, signatures, heuristics, known-good — with a single file descending through them and picking up a marker at each layer -->
&lt;p>&amp;ldquo;We run ClamAV&amp;rdquo; is the most common answer to &amp;ldquo;what scans your customers&amp;rsquo; files&amp;rdquo;, and it is a reasonable starting point. It is a poor finishing point, and the clearest statement of why comes from the ClamAV project itself.&lt;/p>
&lt;h2 id="clamavs-own-framing">ClamAV&amp;rsquo;s own framing&lt;/h2>
&lt;p>From &lt;a href="https://docs.clamav.net/" rel="noopener">the ClamAV documentation&lt;/a>
, verbatim:&lt;/p></description></item><item><title>CXS alternatives in 2026: the honest field guide</title><link>https://shelltrap.com/articles/cxs-alternatives-2026/</link><pubDate>Fri, 04 Sep 2026 09:00:00 +0200</pubDate><guid>https://shelltrap.com/articles/cxs-alternatives-2026/</guid><description>&lt;!-- hero: a shelf of labelled boxes representing scanner products, one box empty and outlined in dashes where cxs stood, an amber price tag lying beside it -->
&lt;p>ConfigServer&amp;rsquo;s eXploit Scanner is the product most CyberPanel and cPanel operators used for this job, and it no longer exists. This is the field as it stands on 4 September 2026: what actually happened, what a stalled cxs installation means in practice, and what the replacements cost.&lt;/p></description></item><item><title>CXS is gone: what CyberPanel operators should do next</title><link>https://shelltrap.com/articles/cxs-end-what-cyberpanel-operators-should-do/</link><pubDate>Fri, 04 Sep 2026 09:00:00 +0200</pubDate><guid>https://shelltrap.com/articles/cxs-end-what-cyberpanel-operators-should-do/</guid><description>&lt;!-- hero: a wall calendar with two torn-off pages, 30 July and 31 August 2025, and a server rack behind it; one rack unit still lit (csf, GPLv3 tag), the unit above it dark and sealed with a small padlock (cxs). Amber signal on the dark unit. -->
&lt;p>On 30 July 2025, Way to the Web Ltd published a short notice on its blog and on &lt;code>configserver.com&lt;/code>. A month later the company was gone, and with it the commercial exploit scanner that a generation of hosting operators had installed as a matter of routine.&lt;/p></description></item><item><title>CyberPanel malware scanner setup with Shelltrap</title><link>https://shelltrap.com/articles/cyberpanel-malware-scanner-setup-shelltrap/</link><pubDate>Fri, 04 Sep 2026 09:00:00 +0200</pubDate><guid>https://shelltrap.com/articles/cyberpanel-malware-scanner-setup-shelltrap/</guid><description>&lt;!-- hero: an isometric CyberPanel host outline with three stacked layers — kernel watcher, unprivileged worker, panel UI — connected by a single amber line marked "report only" -->
&lt;p>CyberPanel ships no malware scanner of its own, and the documented alternatives all come with a condition. This guide is the practical path to a host-level scanner on a stock CyberPanel box, in the order we actually do it: nothing enforcing on day one, everything visible.&lt;/p></description></item><item><title>CyberPanel's security history, and what it teaches operators</title><link>https://shelltrap.com/articles/cyberpanel-security-incidents-and-lessons/</link><pubDate>Fri, 04 Sep 2026 09:00:00 +0200</pubDate><guid>https://shelltrap.com/articles/cyberpanel-security-incidents-and-lessons/</guid><description>&lt;!-- hero: a timeline ribbon running left to right with four marked notches — Oct 2024, Nov/Dec 2024, an empty stretch labelled 2025, then a dense cluster in 2026. A small padlock icon sits at the 2024 notch; the 2026 cluster carries a port-8888 tag. -->
&lt;p>CyberPanel is our beachhead, and it is also a product with a documented security history. Writing honestly about both is the only version of this article worth publishing — the panel is a distribution channel for us, not a target, and the operators reading this are the people who had to clean up after October 2024.&lt;/p></description></item><item><title>False positives on WordPress core, and what to do</title><link>https://shelltrap.com/articles/false-positives-in-malware-scanning-wordpress-core/</link><pubDate>Fri, 04 Sep 2026 09:00:00 +0200</pubDate><guid>https://shelltrap.com/articles/false-positives-in-malware-scanning-wordpress-core/</guid><description>&lt;!-- hero: a grid of file tiles, most cool cyan, three amber; a magnified tile shows two heuristic signal bars — escape density and variable call — neither long enough on its own to cross a marked threshold line -->
&lt;p>Every discussion of malware scanners is about detection. Every actual deployment is about false positives, because that is the failure mode your customers experience. This article is about which files trip generic heuristics on a WordPress host, why that happens, and what the tuning path looks like.&lt;/p></description></item><item><title>fanotify vs inotify for file monitoring</title><link>https://shelltrap.com/articles/fanotify-vs-inotify-for-file-monitoring/</link><pubDate>Fri, 04 Sep 2026 09:00:00 +0200</pubDate><guid>https://shelltrap.com/articles/fanotify-vs-inotify-for-file-monitoring/</guid><description>&lt;!-- hero: two parallel pipelines from a mount point to a listener — the upper one a single wide channel labelled mount-wide with a gate symbol, the lower one a fan of many thin channels each labelled with a directory, several of them dropping events -->
&lt;p>If a scanner claims real-time detection, it is using one of two kernel interfaces, and the difference between them decides what it can promise. Both are documented in detail by the kernel&amp;rsquo;s own man pages, which is a pleasant change from a field where most architecture claims are marketing.&lt;/p></description></item><item><title>Find webshells on a CyberPanel server manually</title><link>https://shelltrap.com/articles/find-webshells-on-a-cyberpanel-server-manually/</link><pubDate>Fri, 04 Sep 2026 09:00:00 +0200</pubDate><guid>https://shelltrap.com/articles/find-webshells-on-a-cyberpanel-server-manually/</guid><description>&lt;!-- hero: a terminal window whose scrollback is a column of file paths; three paths are highlighted amber and joined by a thin line to a magnifier over a directory tree on the right -->
&lt;p>This is the sweep we run before anything else when a CyberPanel host is suspected of hosting a webshell. Everything below uses tools that are already on the box. Everything below also has a limit, and the limits are the reason the article is longer than the command list.&lt;/p></description></item><item><title>GDPR and data residency in malware scanning</title><link>https://shelltrap.com/articles/gdpr-data-residency-malware-scanning/</link><pubDate>Fri, 04 Sep 2026 09:00:00 +0200</pubDate><guid>https://shelltrap.com/articles/gdpr-data-residency-malware-scanning/</guid><description>&lt;!-- hero: a server outline inside a dashed EU border; three arrows leave the server — two blocked and greyed, one thin amber arrow labelled licence and signatures leading to a small building marked Germany -->
&lt;p>Buying a malware scanner is a data-protection decision as much as a security one, because the product&amp;rsquo;s job is to read every file your customers put on your server. Whether those bytes stay on the machine decides how much paperwork, and how much risk, comes with the purchase.&lt;/p></description></item><item><title>How the PHP upload gate works (auto_prepend_file)</title><link>https://shelltrap.com/articles/php-upload-gate-auto-prepend-file/</link><pubDate>Fri, 04 Sep 2026 09:00:00 +0200</pubDate><guid>https://shelltrap.com/articles/php-upload-gate-auto-prepend-file/</guid><description>&lt;!-- hero: a PHP request drawn as a horizontal lane; at the point where the temp file is handed over, a narrow amber gate with two exits marked allow and deny, and a dotted line back to a policy card -->
&lt;p>The most useful moment to look at an uploaded file is before the application accepts it. At that point the file is still a temporary file, nothing has been moved into a document root, and refusing it costs one HTTP 403 instead of an incident.&lt;/p></description></item><item><title>How webshells get into WordPress uploads</title><link>https://shelltrap.com/articles/how-webshells-get-into-wordpress-uploads/</link><pubDate>Fri, 04 Sep 2026 09:00:00 +0200</pubDate><guid>https://shelltrap.com/articles/how-webshells-get-into-wordpress-uploads/</guid><description>&lt;!-- hero: cross-section of a WordPress uploads directory drawn as stacked folder layers; an image file descends normally while a second file, half image and half code, is intercepted at the boundary line and lit amber -->
&lt;p>Almost every webshell on a shared host arrives through the same short story: a plugin accepts a file it should have rejected, the file lands somewhere the web server will execute it, and an HTTP request turns it into a shell. The details are worth knowing, because each step has a different control.&lt;/p></description></item><item><title>Imunify360 vs Shelltrap on CyberPanel: a fair comparison</title><link>https://shelltrap.com/articles/imunify360-vs-shelltrap-for-cyberpanel/</link><pubDate>Fri, 04 Sep 2026 09:00:00 +0200</pubDate><guid>https://shelltrap.com/articles/imunify360-vs-shelltrap-for-cyberpanel/</guid><description>&lt;!-- hero: two balance pans on a plain beam. Left pan holds a stack labelled OS + licence + cloud arrow pointing off-server; right pan holds a single server outline with a closed loop arrow inside it. The beam is level, not tipped — the point is a comparison, not a verdict. -->
&lt;p>Both products scan a Linux hosting server for malware in real time. They are not the same purchase, and the differences that matter to a CyberPanel operator are not the ones on either vendor&amp;rsquo;s feature grid.&lt;/p></description></item><item><title>Linux Malware Detect (maldet) vs Shelltrap</title><link>https://shelltrap.com/articles/linux-malware-detect-maldet-vs-shelltrap/</link><pubDate>Fri, 04 Sep 2026 09:00:00 +0200</pubDate><guid>https://shelltrap.com/articles/linux-malware-detect-maldet-vs-shelltrap/</guid><description>&lt;!-- hero: two scanners side by side fed by one pipe each; the left pipe is dated and dusty at the joint, the right pipe carries small sealed envelopes marked with a signature glyph -->
&lt;p>Linux Malware Detect — maldet — is the default free answer to server-side malware scanning on Linux, and it deserves a fair hearing rather than a sales comparison. This article is mostly about the thing both products depend on and only one of them can control: the signature feed.&lt;/p></description></item><item><title>NIS2, GDPR and malware scanning for hosting providers</title><link>https://shelltrap.com/articles/nis2-gdpr-hosting-providers-malware-scanning/</link><pubDate>Fri, 04 Sep 2026 09:00:00 +0200</pubDate><guid>https://shelltrap.com/articles/nis2-gdpr-hosting-providers-malware-scanning/</guid><description>&lt;!-- hero: a German federal-style document outline on the left with a small clock at 24h/72h, and on the right a single server with a closed loop inside it; a dotted line between them labelled "evidence". No flags, no gavel. -->
&lt;p>&lt;strong>This article is not legal advice.&lt;/strong> It summarises published legal texts and official guidance with links to the primary sources so you can read them yourself. Whether any of it applies to your company, and what you must then do, is a question for your own counsel or data protection officer.&lt;/p></description></item><item><title>Quarantine or delete? Handling malware finds</title><link>https://shelltrap.com/articles/quarantine-vs-delete-malware-files/</link><pubDate>Fri, 04 Sep 2026 09:00:00 +0200</pubDate><guid>https://shelltrap.com/articles/quarantine-vs-delete-malware-files/</guid><description>&lt;!-- hero: two paths leaving one detected file — one ends in a shredder icon rendered flat grey, the other in a sealed amber evidence box with a chain of small hash links running out of it -->
&lt;p>Two buttons, one irreversible. The choice between quarantining and deleting a detected file looks like an operational preference and is actually a decision about evidence, about how you handle being wrong, and — in the EU — about what you will be able to put in an incident report.&lt;/p></description></item><item><title>Shared hosting: the cross-account risk</title><link>https://shelltrap.com/articles/shared-hosting-cross-account-risk/</link><pubDate>Fri, 04 Sep 2026 09:00:00 +0200</pubDate><guid>https://shelltrap.com/articles/shared-hosting-cross-account-risk/</guid><description>&lt;!-- hero: three account cages side by side under one server floor; a thin amber thread runs beneath the cages from one to another, visible only from the layer below -->
&lt;p>A customer reports a defaced site. You clean it, patch the plugin, rotate the passwords, and two days later it is back. The reason is usually not that you missed a file in that site. It is that you were looking at the wrong scope.&lt;/p></description></item><item><title>Shelltrap in report-only mode: the first week</title><link>https://shelltrap.com/articles/shelltrap-report-only-mode-first-week/</link><pubDate>Fri, 04 Sep 2026 09:00:00 +0200</pubDate><guid>https://shelltrap.com/articles/shelltrap-report-only-mode-first-week/</guid><description>&lt;!-- hero: a seven-day strip; each day a column of small file marks, amber marks appearing on days one and two and thinning out by day seven, with a policy switch at the end of the strip -->
&lt;p>This is what the first week with a host-level scanner actually looks like, taken from our own internal test stage on a production CyberPanel host on 3 September 2026 — not from a lab, and not from a slide.&lt;/p></description></item><item><title>Signed signature feeds explained</title><link>https://shelltrap.com/articles/signed-signature-feeds-explained/</link><pubDate>Fri, 04 Sep 2026 09:00:00 +0200</pubDate><guid>https://shelltrap.com/articles/signed-signature-feeds-explained/</guid><description>&lt;!-- hero: a chain of three signed generation blocks moving left to right into a gate; the gate holds two small corpora labelled good and bad, and one block is being pushed back with a rollback arrow -->
&lt;p>A signature feed is not data. It is a stream of matching logic that runs against every customer file on your server, and it arrives from outside your machine on a schedule. That makes it a supply chain, with the three failure modes every supply chain has: someone tampers with it, it silently stops, or a legitimate update turns out to be wrong.&lt;/p></description></item><item><title>The WordPress webshell wave, 2024–2026: what the data shows</title><link>https://shelltrap.com/articles/wordpress-webshell-wave-2024-2026/</link><pubDate>Fri, 04 Sep 2026 09:00:00 +0200</pubDate><guid>https://shelltrap.com/articles/wordpress-webshell-wave-2024-2026/</guid><description>&lt;!-- hero: a stream of file glyphs flowing left to right into a web root; three of them are disguised — a JPEG icon with PHP tags leaking out of its corner, an .htaccess tag, and a plain uploads/ folder with a lit .php file inside. One glyph passes straight through untouched and is labelled "database only". -->
&lt;p>WordPress runs &lt;a href="https://w3techs.com/technologies/details/cm-wordpress" rel="noopener">40.7% of all websites and 58.9% of sites whose CMS is known&lt;/a>
 (W3Techs, checked 4 September 2026 — the two numbers are routinely conflated, so it is worth naming which one you mean). That share is why the file-upload bug in a form plugin is, from a hosting operator&amp;rsquo;s chair, an infrastructure problem rather than a customer problem — and why it landed on the desks of operators who had just lost their scanner, as we covered in &lt;a href="https://shelltrap.com/articles/cxs-end-what-cyberpanel-operators-should-do/">what CXS operators should do next&lt;/a>
.&lt;/p></description></item><item><title>What is a webshell? A definition for hosting operators</title><link>https://shelltrap.com/articles/what-is-a-webshell/</link><pubDate>Fri, 04 Sep 2026 09:00:00 +0200</pubDate><guid>https://shelltrap.com/articles/what-is-a-webshell/</guid><description>&lt;!-- hero: a stream of ordinary files (jpg, css, php) flowing left to right through a lit frame; one file carrying a small shell prompt glyph is caught and held in the amber beam, the rest pass through -->
&lt;p>Ask ten people what a webshell is and you get ten answers, most of them about a hacker in a hoodie. The useful definition is much more boring, and it comes from a neutral source: a webshell is a script placed in a directory your web server serves, which turns an HTTP request into a command on your machine.&lt;/p></description></item><item><title>What to ask a security vendor: DPA, EULA, exit</title><link>https://shelltrap.com/articles/security-tool-questions-to-ask-vendors-dpa-eula/</link><pubDate>Fri, 04 Sep 2026 09:00:00 +0200</pubDate><guid>https://shelltrap.com/articles/security-tool-questions-to-ask-vendors-dpa-eula/</guid><description>&lt;!-- hero: a checklist card with twelve rows, three of them stamped with small document icons labelled DPA, EULA and docs, and a divergence arrow between two of the icons -->
&lt;p>Buying a malware scanner used to be a technical decision with a purchase order attached. For a European hosting provider it is now a supply-chain decision with a documentation requirement attached, and the questions below are the ones we would want answered before signing — including about ourselves.&lt;/p></description></item><item><title>Why webshell detection belongs on the server, not the site</title><link>https://shelltrap.com/articles/why-server-level-webshell-detection/</link><pubDate>Fri, 04 Sep 2026 09:00:00 +0200</pubDate><guid>https://shelltrap.com/articles/why-server-level-webshell-detection/</guid><description>&lt;!-- hero: a cutaway of a server in three stacked layers — kernel at the bottom with a fanotify eye watching a mount, an unprivileged sandboxed worker in the middle behind a namespace wall, and two tenant sites on top, one of them dark with a crossed-out plugin icon. An amber arrow shows a file write being caught at the bottom layer, below the compromised tenant. -->
&lt;p>There is a dishonest version of this argument: &lt;em>plugin scanners are bad, buy a server scanner.&lt;/em> A competent reader can dismantle it in a paragraph.&lt;/p></description></item><item><title>Wordfence vs a server-level scanner</title><link>https://shelltrap.com/articles/wordfence-vs-server-level-scanner/</link><pubDate>Fri, 04 Sep 2026 09:00:00 +0200</pubDate><guid>https://shelltrap.com/articles/wordfence-vs-server-level-scanner/</guid><description>&lt;!-- hero: a WordPress site drawn as a box with a scanner inside it; the same box viewed from below sits on a server floor where a second watcher observes the box's writes from outside -->
&lt;p>This comparison has to start with a disclaimer, because the topic invites bad-faith versions of itself.&lt;/p>
&lt;p>&lt;strong>This is an architectural argument, not a quality one.&lt;/strong> Wordfence is a good product. It does things a server-side file scanner does not do at all: it filters requests with WordPress context, it maintains vulnerability intelligence about specific plugins, and it puts all of that in front of a site owner who has no shell access. Nothing below asserts that Wordfence does not work, and any comparison that did would be wrong.&lt;/p></description></item><item><title>WordPress backdoor removal: a server-side checklist</title><link>https://shelltrap.com/articles/wordpress-backdoor-removal-checklist-server-side/</link><pubDate>Fri, 04 Sep 2026 09:00:00 +0200</pubDate><guid>https://shelltrap.com/articles/wordpress-backdoor-removal-checklist-server-side/</guid><description>&lt;!-- hero: a horizontal cleanup timeline with five gates — preserve, contain, inventory, patch, verify — and a small amber file icon held in an evidence box beside the second gate -->
&lt;p>Most WordPress cleanups fail in one of two ways: the operator deletes the evidence before understanding it, or the operator cleans the site and not the account. This checklist is written for the host, where you can do both properly.&lt;/p></description></item></channel></rss>