Attack surface review and hardening
Where a public platform is exposed — application versions, admin paths, upload handling, third-party integrations, credential practice — prioritised by exploitability rather than by checklist length.
Attack traffic mitigation
Absorbing hostile traffic without blocking legitimate users: rate limiting, filtering, caching strategy and edge protection sized against what the platform actually receives.
Compromise investigation
Establishing the entry point rather than clearing the symptom — what changed, when, how, and what else it touched. This is the step that determines whether the incident is over.
Malware and injected content removal
Removing injected content including in generated artefacts not tracked in version control, which is where it survives an otherwise complete cleanup.
Safety-flag remediation
Identifying which security vendors have flagged the domain, supplying the evidence each requires, and confirming clearance per vendor — because they do not clear in step with one another.
Search recovery after compromise
Re-establishing crawl and indexation once the flag is clear, including reconsideration requests where required and verification that traffic returns.
Monitoring and response readiness
Detecting change on the public surface — new files, altered responses, unexpected redirects — so the next incident is found by monitoring rather than by a customer.
Dependency and plugin hygiene
Establishing what is installed, which components are receiving security updates, which have been abandoned upstream, and which are duplicated. Most compromises begin with a component that was knowably out of date, so this is the most common finding rather than the least.
Access and administrative controls
Who can reach the application's administrative surface, through what, and with what privilege — replacing shared credentials, dormant accounts and undocumented access with named access that can be revoked. On a public platform this is usually the shortest path between an attacker and everything else.
Backup and restore testing
Confirming that backups exist, that they complete, and that a restore actually works. An untested backup is a routine rather than a recovery capability, and the difference is discovered at the worst possible moment.
Edge protection where it helps
WAF-equivalent filtering, rate limiting and CDN configuration sized to the attack patterns the platform actually receives. Useful as one layer and not a substitute for the application fixes below it — an edge rule does not compensate for an unpatched component or a reused credential.
Remediation handoff
A defect report precise enough for another team to act on, with the order of work, an owner for each item and the criteria that will show it is fixed. On most of these engagements a large part of the value is that document rather than our own hands on the code.