Vigilante File integrity report
-
Vigilante File integrity report, any way to make this simpler or auto ?
at the moment anytime anything updates, the user need to manually check. most of the time its something that’s standard.
-
Hi @akgt
If you’re referring to false positives, I usually check them as you report them to me. If you’re referring to changes to files, security measures can be annoying, and they rely heavily on having the right information. Of course, you can add any folder you know is safe to the exclusion list, especially for updates you always install manually, but there’s still a risk with automatic updates that come with “surprises” like the recent supply chain vulnerabilities and code injections.
I understand that so many alerts can be annoying, but that’s just how security works.
That said, if you’re referring to false positives, assuming they are indeed false as I mentioned at the beginning, I review them frequently and add them to the exclusion list by default, provided they are genuine false positives.
In any case, let me know about specific instances and we’ll improve it. I’m the first one to use the plugin, and any suggestions are very helpful to me.
Fernando
I’m referring to the latter, it happens with core, plugin, updates or change in settings.
Example
”
Modified files
Checksum mismatch with WordPress.org originals.wp-content/languages/en_GB-a2796e57f680e25d84c4b352ee6d7280.jsonwp-content/languages/en_GB-f70806bf0c7d62f2908bd5a1c3fe4efc.jsonwp-content/languages/en_GB-7d5ca435e60d92f024d46c9257aaa0f7.jsonwp-content/languages/en_GB-81d6f084cb273e02e15b01bd9ece87f7.jsonwp-content/languages/en_GB-e2791ba830489d23043be8650a22a22b.jsonwp-content/languages/en_GB-aabfce98c410957228848dc581e3c420.jsonwp-content/languages/en_GB-0ce75ad2f775d1cac9696967d484808c.jsonwp-content/languages/en_GB-4a38fe1c0c45989e44682ba6109d9f46.jsonwp-content/languages/en_GB-529362903a5a05b34b06b5e793fb4cf8.jsonwp-content/languages/en_GB-7b74c8457eaa7fcc50db41b431f8a003.jsonwp-content/languages/en_GB-e27bebe3fddf8417462a3872bb213dd5.jsonwp-content/languages/en_GB-9b256ea9cd54df92095e04c76758ceb0.jsonwp-content/languages/en_GB-81c889563f09dd13de1701135dc62941.jsonwp-content/languages/en_GB-7c90cd4398ee2d9d3628c387a87a70e5.jsonwp-content/languages/en_GB-8240df461220d1d3a028a9a4c5652a5b.json
“
Ah, I see. The recent inclusion of no fewer than 61 JSON files in the latest WordPress update (the 7.0.4 security update) also surprised me.
As for the other thing, the changes in the settings are part of the security audit, not the file integrity check, and you can disable those warnings in the settings on that tab.
Back to the topic of (possible) false positives, in this case JSON (text) files for translations, I’ll review it, because although not all JSON files should be excluded by default, since even plain text files can contain sensitive information and are increasingly used for all kinds of purposes, I’ll see if I can exclude specific strings in language files.
Have you noticed anything else like this?
The other issue i noticed was when a plugin would update setting or configuration
for my example it was litespeed. again manual review.
Critical config files modified
These files are common targets for code injection. Review the changes and approve if they are legitimate ..htaccess 7,086 → 7,179 bytes (+14 / -7 lines)
But that’s not an issue, it’s a warning, and an important one. It’s not at all common for something (a plugin or whatever) to modify files as important and sensitive as .htaccess or wp-config.php, and the plugin shows you this, even letting you preview the changes. It’s not that it’s a bug, it’s a feature, and an important one.
Seriously, that’s not even close to being a bug or a problem; it’s one of the greatest strengths of any security plugin, and I think that specific feature is extremely important.
Of course, you can disable any type of warning in the file integrity settings, which you’ll find on the same tab, but I don’t recommend it. I understand that so many warnings can be overwhelming, especially at first, but the opposite is “taking things for granted” or “trusting blindly,” and security is exactly the opposite: staying informed and always being cautious.
As for the JSON part, I’m looking into it, and I might be able to add a rule to the plugin to prevent warnings in cases where there’s no risk. I really appreciate you bringing this to my attention 😉
Fernando
Hi again @akgt
Thanks again for pushing on this, and for coming back with concrete examples.
You’re right about the core of it. Alert fatigue is a security problem, not just an annoyance. A report that fires 61 times about translation files is training you to close it without reading, and the day something real shows up in your
.htaccessit will be buried in that same flat list. That is a regression, and I’m going to fix it.Here’s what I found digging into your case.
The language JSON files aren’t multiplying. Checked against the wp.org checksums API for en_GB: 54 files in WP 5.9, 60 in 6.5, 68 in 7.0.4. Six major versions, fourteen files. What actually happens is that they all get rewritten at once. Between 6.8 and 7.0.4, 76 of the 77 shared language files changed hash. They’re the JED files behind
wp_set_script_translations(), one per JS file with translatable strings, and they carry a revision-date header, so any rebuild of the language pack changes their content even when the translation itself is identical.On top of that, wp.org regenerates the checksum manifest every time GlotPress rebuilds a language pack, which happens constantly and independently per locale (all four of these are on 7.0.4: de_DE rebuilt 15 Aug, en_GB 7 Aug, es_ES 10 Jul, fr_FR 24 Jul), while Vigilant caches that manifest for 24 hours under a key that only changes with the WordPress version. So the two sides drift, and you get a burst of “modified” files that either clears itself or, if your cron or translation auto-updates are off, never clears at all. That’s a bug on my side and it’s getting fixed.
On excluding
wp-content/languages: I’m taking your point seriously, and you’ve raised useful things here before, so this isn’t me brushing it off. But a blanket exclusion of that folder would be a bad trade. Since WP 6.5 it also holds.l10n.phpfiles, which are executable PHP that WordPressrequires on every request. Excluding the folder would leave a writable, executable, unmonitored directory, which is exactly where I’d want to hide a backdoor if I were the attacker. So instead of excluding the path, I’ll add safe rules: extension-scoped exclusions inside that folder for.json,.moand.po, with.phpnever excludable there.The real fix isn’t exclusions at all, though. It’s splitting the report in two: changes I can attribute, and changes I can’t explain. Attributed means the new hash matches the current wp.org checksum (so it isn’t merely expected, it’s verified against the authoritative source), or the change landed entirely inside a known plugin’s marker block (LiteSpeed writes between
# BEGIN LSCACHEand# END LSCACHE, which is a different class of event from 14 loose lines outside every marker), or it coincides with an update event I already log. Nothing gets silenced and nothing gets excluded, but after a normal update the second list is empty, and an.htaccesschange that matches no update becomes the only thing on screen instead of item 62.What I won’t do is stop watching
.htaccessandwp-config.php. Those are prime persistence vectors and going quiet there wouldn’t make the plugin more convenient, it would make it stop doing its job. But you were never really asking for that, and I read your point too narrowly at first.One more thing: your report surfaced an actual bug, so thank you. The localized core checksum manifest includes translations for Akismet and the default themes, which aren’t core and update on their own cycle. So if you delete an unused default theme or Akismet, which my own Security Check explicitly tells you to do, File Integrity reports missing core files forever, on any non-English site. Two parts of the same plugin contradicting each other. That one I’m treating as a genuine fix.
No dates from me, since the 3.0 cycle is already scoped and I’d rather not promise a schedule I can’t keep. But all of this is written down and it’s getting done.
Thanks (again) 🙂
Fernando
Thanks, I do agree it is ‘one of the greatest strengths of any security plugin’, and I would not want to stop watching
.htaccessandwp-config.php, as this is important for security. It’s just about trying to reduce the annoyance when you receive warnings multiple times for minor changes and updates. While they can be disabled, that is not a wise choice. However, from your reply, I think you have understood what I meant.Also, I did have a small issue a few weeks ago where my verification code was not being accepted, which triggered a login lockout. I have no idea why.
Absolutely, I’ve understood your concern and it’s a real pain 🙂
Regarding the issue with the verification code, if it come back please open a new thread to check it out 😉
You must be logged in to reply to this topic.