✦ Preferences saved
// security scanner  ·  false positive  ·  data loss  ·  primary evidence
0 BYTES
A working, actively maintained PHP file manager was flagged malicious on two unrelated accounts at the exact same minute, then erased with no backup and no chance to respond.
manager.php · monarx / hostinger malware scanner · 2026-08-07, 18:25 CEST
0 B
File size after cleanup
2
Accounts flagged, same minute
$0
Compensation offered
24h
Daily backup risk window
// the incident

A legitimate tool, erased on two servers at once

manager.php is a custom, password-protected, session-authenticated PHP file manager, built in-house, not pulled from a forum or a public repo. It has served as internal admin tooling for a commercial product for months, used daily, without a single security flag against it, until now.

On August 7, 2026, at 18:25 CEST, Hostinger's malware scanner (Monarx) flagged manager.php as Malicious on two unrelated hosting accounts at the exact same moment: this site, tyrus.dk, where the file was under active development, and a second, unrelated client account, where the same file had sat unchanged for over six weeks. Both copies were truncated to 0 bytes automatically. No warning, no quarantine, no isolated backup before the action.

hpanel · malware scanner · automated cleanup log
2026-08-07 18:25:03 CEST
account_1: tyrus.dk → manager.php → status: MALICIOUS
account_2: [client account, unrelated] → manager.php → status: MALICIOUS
action taken: REMOVED (truncated to 0 bytes, no isolated backup)
file age: tyrus.dk actively edited · account_2 unchanged 6+ weeks
human review before action: none · quarantine state: none

The result was a blank admin panel, a broken product, and a customer who found out by accident the next morning, not because anyone was notified.

// timeline

From "page is blank" to written admission, in about an hour

Every timestamp below comes directly from hPanel logs and live support chat transcripts, kept exactly as received.

1
2026-08-07 · 18:25 CEST
manager.php flagged and truncated, on 2 accounts, same minute
No prior warning. No pre-action backup. Status changes directly to "Removed." Even the internal audit trail isn't fully consistent: the flag is logged at 16:25:03 UTC (18:25:03 CEST), while the quarantine record lands separately around 17:52–17:53 CEST, a ~30-minute gap the AI assistant surfaced on its own, never addressed by a human afterward.
2
2026-08-08 · ~05:25 CEST
Discovery: blank page where the admin panel used to be
Roughly 11 hours pass between the deletion and the moment anyone finds out, because nobody was told.
3
2026-08-08 · ~05:40 CEST
Cause identified: Malware Scanner, "Actions taken: Removed"
hPanel security log confirms the automated action. No rule ID, no code fragment, no confidence score attached.
4
2026-08-08 · ~06:05 CEST
Human support confirms: no backup was made before the truncation
The AI assistant is escalated after it contradicts itself on whether the two file hashes were even compared.
5
2026-08-08 · ~06:22 CEST
Support confirms: automated cleanup, no quarantine, no human review before action
Files execute in milliseconds, they say, so the system is built to destroy first and explain later.
6
2026-08-08 · ~06:39 CEST
Support states explicitly: no compensation for confirmed scanner false positives
The fix offered is the same "daily backup" that already failed to cover the exact window this incident happened in.
// in their own words

Eight direct admissions, nothing paraphrased

Everything in this section is quoted exactly as it was written by Hostinger staff in the support chat. No editing, no interpretation. Read them in order and the picture builds itself.

Transcript 01/08

"When custom or commercial management scripts contain encoded, password-protection, or obfuscated execution patterns, security scanners like Monarx can identify them as unknown web shells or false positives during automated signature updates."

On why the detection happened · 08/08/2026, 06:17 CEST
Transcript 02/08

"Automated cleanup neutralizes threats immediately by truncating flagged files to 0 bytes to prevent execution. The scanner does not generate an isolated backup prior to cleanup, so account backups or external backups are required for restoration."

On the truncation process itself, no backup, by design · 08/08/2026, 06:22 CEST
Transcript 03/08

"When Monarx deploys a global signature update across our infrastructure, an automated scan runs across all hosted accounts simultaneously against the new detection heuristics. Because the updated rule checked for specific obfuscation/execution patterns rather than file modification timestamps, it flagged matching code structures across separate accounts at that exact same time."

The admission that closes the case: this was a mass scan, not a per-file decision · 08/08/2026, 06:34 CEST
Transcript 04/08

"Because potential web shells can execute malicious actions in milliseconds, the scanner truncates flagged execution patterns right away to protect the broader server infrastructure, rather than placing files in an unblocked holding state."

On why there is no quarantine state, only destroy-first · 08/08/2026, 06:46 CEST
Transcript 05/08

"While we don't offer financial compensation for scanner false positives, we do provide automated backup tools in hPanel so you can quickly restore original file versions whenever code changes or security events occur."

On compensation for confirmed false positives: none · 08/08/2026, 06:46 CEST
Transcript 06/08

"You are correct about the specific timing for that individual daily run: since the file was neutralized at 18:25, the daily snapshot taken at 06:23 the following morning would indeed capture the file in its post-cleanup state."

On whether their own "daily backup" would have helped in this exact case: no, it would have saved the empty file · 08/08/2026, 07:00 CEST
Transcript 07/08

"The Malware cleaned indicator in hPanel displays a 30-day historical log of scanner actions. It serves as an audit trail and will clear automatically as clean daily scans run."

On why the "Malware cleaned" warning stays up after the case is closed · 08/08/2026, 07:13 CEST
Transcript 08/08

"To be completely direct with you: a vendor-level or publisher-level allowlisting program is not currently planned or under active policy review. [...] Policy ownership: Infrastructure & Security owns security policy, and their current framework strictly uses hash-based allowlisting."

On whether a vendor-level allowlist is even planned: no, and no one owns changing that · 08/08/2026, 07:27 CEST
// the contradiction

The AI support agent caught contradicting itself, in the same chat

Before a human ever entered the conversation, the AI support assistant ("Kodee") was asked to explain the detection. It first claimed the two flagged files had "different SHA-256 hashes," implying it had compared real hash records.

Two messages later, asked whether the detection was caused by a scanner-side signature update, the same assistant said the available records contained no hash data at all to compare. Both statements cannot be true. Read the exchange below, unedited.

kodee · chat, 05:53 CLAIMS HASHES WERE COMPARED
[Kodee] I found the following account-level facts: [...] They have different SHA-256 hashes, so the scanner evaluated two distinct file contents. Both were classified as malicious and quarantined, not cleaned.
kodee · chat, 05:54 CLAIMS NO HASH DATA EXISTS
[Kodee] I cannot confirm a Monarx ruleset update at August 7, 2026, 18:25 CEST. The available scanner records contain no engine version, signature ID, heuristic name, matched function, or before/after file hash, so they also cannot prove this was scanner-side rather than file-side.
kodee · chat, 05:58 CONTRADICTION ACKNOWLEDGED
[Kodee] You're right to challenge that inconsistency. The current file hashes were present; what was unavailable was any historical before/after hash comparison. My later wording incorrectly implied that no hash data existed, and I apologize.

A support layer built to sound confident before it has checked whether it can be will produce exactly this: two answers that cancel each other out, three minutes apart. The customer caught the contradiction himself and had to demand a human before anyone with real log access got involved.

// structural failures

Seven things wrong with the system itself, not just this one incident

Every point below is a confirmed, written-down fact about how the system is designed to behave, every time, for anyone hosting custom software on this infrastructure. None of it is opinion.

1
No quarantine, no holding state
Flagged files are truncated immediately. There is no disabled-but-preserved state a developer can inspect and appeal before the content is gone for good.
2
No backup before deletion
A system that is about to permanently destroy the only copy of a file, based on an automated guess, does not take a snapshot of what it is destroying first. Confirmed, in writing, by support.
3
"Daily backup" doesn't cover the real risk window
A daily backup is one snapshot at a fixed time. Any work done after that snapshot and before a false-positive incident has zero protection, and the scanner acts in milliseconds, with no awareness of when the last backup ran. Confirmed for this exact incident, in writing: since the file was neutralized at 18:25, the next morning's automated snapshot would simply have captured the file already empty, not a working version.
4
Allowlisting works only on an exact file hash
Change a single character in a file under active development and the hash changes with it. The protection disappears the moment you save. It protects a screenshot of the file, not the product.
5
No vendor or publisher-level trust, no pre-registration
Confirmed directly: there is no program letting a developer register their software in advance so future signature updates skip it. The process is strictly reactive: you find out after you've already lost something. Asked point blank whether this was even under review, Hostinger's own answer was that a vendor-level or publisher-level allowlisting program is not currently planned or under active policy review.
6
No compensation model for confirmed false positives
Even after acknowledging the file was legitimate and the deletion was a mistake, the only remedy offered is the same backup system that already failed to prevent the loss.
7
Asked for the full source code, over a public link, as a precondition
Before agreeing to allowlist the file, support asked for "the file content/code, shared securely via pwpush.com": the full source of a commercial product, over a public link-sharing tool, as a condition for basic help. It was declined; a SHA256 hash was offered and eventually accepted instead.
// what should happen instead

None of this requires new technology, only a different design decision

Every point below is a standard practice already used elsewhere in the security industry. None of it is exotic or expensive to build.

Hold, then notify, instead of destroy on sight
Disable execution (chmod, rename, sandbox) instead of destroying content. A file that can't run is just as safe as one that no longer exists, and it can be reviewed and restored.
Snapshot before any destructive action, always
A single copy of the flagged file, kept for 30 days, costs nearly nothing to store and removes the entire data-loss risk from every false positive.
Publish the rule or signature ID on request
A customer whose product was destroyed has a direct interest in knowing exactly what triggered the flag. Treating that as "internal telemetry" protects the vendor, not the customer.
A vendor or publisher-level trust registry
Instead of allowlisting one exact hash, let a verified developer register their product identity, so new versions of their own software are trusted by default, not flagged from zero every time.
Reset dashboard state after a confirmed false positive
A "Malware cleaned" warning that stays visible after the case is closed and the file is restored tells every future support agent, and the customer, that something is still wrong. It isn't. Hostinger's own explanation is that the indicator is a 30-day historical log kept as an audit trail, clearing automatically once clean daily scans run, which only strengthens the case for surfacing that context inline, instead of leaving a bare warning that reads as unresolved.
A defined remediation process, not case-by-case goodwill
Right now, remediation for a confirmed false positive depends entirely on which support agent picks up the chat and how far the customer is willing to push. Luck, not policy.
// full analysis

Why this matters to every developer hosting their own product

One broken file is the smallest part of this. The real story is what happens the moment your product looks, structurally, like the thing security software is trained to fear.

Any custom tool that manages files, uploads content, edits code live, or executes commands on a server, exactly the kind of functionality countless developers build for their own admin panels, matches the heuristic signature of a web shell closely enough that an automated scanner cannot always tell the difference. The gap between "legitimate internal tool" and "malicious backdoor" can be zero at the code level.

That alone would just be a hard technical problem. What turns it into a structural one is how the response is built around that uncertainty: destroy first, in milliseconds, with no snapshot, no holding state, and no way for the actual owner of the file to weigh in before it is gone.

· · ·

The dashboard shows "Backups: Daily" as if that settles the matter. It does not. A daily backup is a single snapshot at a fixed point in time, usually early morning. Any work done after that snapshot and before an incident has no safety net at all, and the scanner has zero awareness of when the last backup ran when it decides to act.

A developer actively working on a critical file, which is the exact situation here, can lose hours or days of recent work regardless of having "daily backup" turned on, simply because the hosting provider's backup policy and the scanner's security policy were never designed to talk to each other.

· · ·

The severity here did not stay flat. It escalated with every answer. What first looked like one file wrongly deleted turned out to be a mass scan applied identically to every hosted account, regardless of how old or how recently modified each file was.

Then it turned out the "safety net" of daily backups has a built-in gap that covers almost nobody who works daily on their own files. Then it turned out the allowlist offered as the fix breaks on the very next code change, protecting a version of the file rather than the product. Then it turned out there is no proactive path at all, only a reactive one: submit a hash after you've already been burned, and hope the next signature update doesn't burn you again.

· · ·

Nobody at Hostinger set out to destroy a customer's product; bad intent isn't the problem here. The problem is a security model that, by design, cannot reliably tell the difference between actively developed legitimate software and a threat, and that has no structural mechanism to fix that over the long term, only case-by-case cleanup after the fact.

The clearest written admission of that came late in the thread, from a human agent, in plain language: this represents an ongoing operational risk for the customer's software distribution model. Not a one-time inconvenience. An ongoing risk, acknowledged in writing, with no fix planned.

For a junior developer reading this: the lesson is not "don't build admin tools." It's that any file manager, upload handler, or command runner you build, even fully authenticated and access-controlled, needs a plan for what happens if your host's automated security ever decides it looks suspicious, because "it's legitimate" is not a defense a scanner understands.

For a senior developer or a technical lead evaluating hosting providers: ask, before you sign anything, what your provider's automated security does the moment it flags one of your files. Ask if there's a holding state. Ask if there's a snapshot before deletion. Ask what remediation looks like for a confirmed false positive. "We'll truncate it and you can restore from your own backup" is a liability you'd be accepting on behalf of every product you host there, dressed up as a feature.

// the fine print

The contract already answers the question a lawyer would ask

These clauses come directly from Hostinger's own publicly published Universal Terms of Service Agreement and Hosting Agreement. None of them are unusual for a hosting provider on their own, but together they show exactly how much of the risk sits on the customer's side by default.

Backup is explicitly the customer's job
Straight from the Hosting Agreement: Hostinger is not responsible for files and data on the account, and the customer must maintain their own backups, regardless of any automatic backup offered "as a courtesy."
Liability excluded for any data loss
The Terms of Service exclude liability for "any loss of data, whether due to hardware and/or software issues, unauthorized access or any other unforeseen circumstances." That wording alone is broad enough to cover this exact incident.
Liability excluded for the scan itself
A separate clause excludes liability for "any review, scanning, access to Services (including any hosted environment)." That covers, in writing, the exact scanning action that destroyed the file.
Liability excluded even for the removal action
The same section excludes liability for viruses "including any removal or attempted removal thereof." That covers their own deletion process, whether the threat was real or a false positive.
Damages capped, claim window short
Even in the best-case legal scenario, total liability is capped at fees paid in the past 12 months or €10,000, whichever is less, and any claim must be filed within 12 months of it arising.
Luxembourg law, and no consumer protection
The agreement is governed by Luxembourg law, not Danish law, and the customer is treated as a B2B client, so EU consumer-protection rules (Directive 2005/29/EC) do not apply.

Source: Hostinger's Universal Terms of Service Agreement and Hosting Agreement, publicly published, current as of this writing.

// the official record

Their own filings and policies say something different

The two points below aren't from the support chat. They come from Hostinger's own public legal filings and published policies, and they contradict, in writing, the very basis this case was built on.

A public EU filing reports zero automated-detection actions, ever
In its official EU Digital Services Act Transparency Report, covering the period 17 February 2024 – 16 February 2025 and published 30 May 2025, Hostinger discloses 6,875 self-initiated content actions for the reporting period, 34 of them for malware, and lists exactly zero of them as triggered by "automated detection." That directly contradicts the support explanation given in this case: a scanner acting purely on its own, "in milliseconds," with no human review before the file was destroyed.
Their own abuse policy promises a warning first, just not from this scanner
Hostinger's published Abuse Handling Policy states that for a compromised or hacked domain reported by a third party, "a warning will be sent to the domain registrant," and suspension only follows "if the registrant fails to remove the unauthorized content." That is the exact opposite of what happened here: content flagged by Hostinger's own internal scanner got no warning and no window to respond, only immediate destruction.

Sources: Hostinger's EU Digital Services Act Transparency Report 2024–2025 (public filing, reporting period 17 Feb 2024 – 16 Feb 2025, published 30 May 2025) and Hostinger's published Abuse Handling Policy (hostinger.com/legal/abuse-policy), both current as of this writing.

A hosting provider's own written words: "this represents an ongoing operational risk" for legitimate software, with no fix planned.
Open case · documented in full · updated if Hostinger's position changes
TRACE