(no title)
abhas9 | 5 months ago
File Integrity Monitoring gives you a way to prove whether critical code or configuration has been changed after deployment. That’s valuable not only for security investigations but also for compliance.
For example, PCI DSS (Payment Card Industry Data Security Standard) explicitly requires this. Requirement 11.5.2 states:
"Deploy a change-detection mechanism (for example, file-integrity monitoring tools) to alert personnel to unauthorized modification of critical content files, configuration files, or system binaries."
Sure, a "sufficiently advanced" attacker could try to tamper with the monitoring tool, but (1) defense in depth is about making that harder, and (2) good implementations isolate the baseline and reports (e.g. write-only to S3, read-only on app servers), which raises the bar considerably.
teraflop|5 months ago
> for example, through misconfigured deployments, command injection, [...] or overly broad privileges.
Seems to me like it would be more useful to build something into your deployment process that verifies that permissions are set correctly.
I don't really buy that `mount -o ro` is inherently more prone to being misconfigured than `kekkai verify` or whatever.
> supply chain attacks
This wouldn't actually do anything to stop or detect supply chain attacks, right? Even if one of your dependencies is malicious, you're not going to be able to spot that by checking a hash against a deployment that was built with the same malicious code.
> good implementations isolate the baseline and reports (e.g. write-only to S3, read-only on app servers), which raises the bar considerably.
I don't see how that raises the bar at all. The weakness is that it's easy for an attacker to bypass the verifier on the app server itself. Making the hashes read-only in whatever place they're stored isn't a barrier to that.
> For example, PCI DSS (Payment Card Industry Data Security Standard) explicitly requires this.
This seems like the best actual reason for this software to exist. But if the point is just to check a compliance box, then I think it would make sense to point that out prominently in the README, so that people who actually have a need for it will know that it meets their needs. Similar to how FIPS-compliant crypto exists to check a box but everyone knows it isn't inherently any more secure.
catatsuy|5 months ago
viraptor|5 months ago
I really don't see this as a good explanation. You can say that about any security measure, but we can't keep slapping more layers that check the previous layer. At some point that action itself will cause issues.
> for example, through misconfigured deployments, command injection, supply chain attacks, or overly broad privileges.
Those don't apply if the file owner is not the app runner or the filesystem is read-only. If you can change the file in that case, you can disable the check. Same for misconfiguration and command injection.
> For example, PCI DSS
Ah, BS processes. Just say it's about that up front.
chucky_z|5 months ago
catatsuy|5 months ago