FreePBX Emergency Checklist — Minimal immediate actions (copy/paste for chat/Slack) CVE-2025-57819
- Isolate
- Immediately block public access to Admin UI (80/443). Example (iptables):
- iptables -I INPUT -p tcp --dport 443 -s x.x.x.x -j ACCEPT # allow your admin IP
- iptables -I INPUT -p tcp --dport 443 -j DROP # drop all other 443
- iptables -I INPUT -p tcp --dport 80 -j DROP # drop HTTP
- If possible: place the PBX behind VPN or on a management VLAN.
- Confirm Endpoint module presence
- fwconsole ma list | egrep -i "endpoint"
- If Endpoint installed AND you have valid Sangoma support: update immediately
- fwconsole ma downloadinstall endpoint --edge
- OR (vendor-fixed tags)
- fwconsole ma downloadinstall endpoint --tag 17.0.2.31
- fwconsole ma downloadinstall endpoint --tag 16.0.88.19
- If you do NOT use Endpoint: uninstall & remove it
- fwconsole ma uninstall endpoint
- fwconsole ma remove endpoint
- Quick Indicators-of-Compromise (IoC) checks (run now)
- Find attacker files:
- find /var/www/html -maxdepth 2 -type f ( -name ".clean.sh" -o -name "monitor.php" -o -name "backend.php" ) -ls
- Check shared memory/temp:
- ls -al /dev/shm
- find /tmp /var/tmp /dev/shm -type f -mtime -7 -ls
- Search logs for Symfony error:
- grep -R "Symfony\Component\Console\Application" /var/log 2>/dev/null || true
- Check fwconsole failure and module list:
- fwconsole --version
- fwconsole ma list | egrep -i "endpoint"
- Quick process/network snapshot:
- ps auxf | egrep -i "php|httpd|asterisk|fwconsole"
- ss -tulpn | egrep -i "http|asterisk|sip|5060|5061"
- Preserve simple artifacts before any removals
- If /var/www/html/.clean.sh exists, copy it immediately (do NOT execute it):
- mkdir -p /root/forensics
- cp --preserve=mode,ownership,timestamps /var/www/html/.clean.sh /root/forensics/.clean.sh.$(date -u +%Y%m%dT%H%M%SZ)
- stat /var/www/html/.clean.sh > /root/forensics/.clean.sh.$(date -u +%Y%m%dT%H%M%SZ).stat
- Save recent logs and a few command outputs:
- cp -a /var/www/html /root/forensics/www-html.$$ # quick copy
- tail -n 500 /var/log/asterisk/full > /root/forensics/asterisk-full.$(date -u +%s).log
- tail -n 500 /var/log/httpd/error_log > /root/forensics/http-error.$(date -u +%s).log
- fwconsole ma list > /root/forensics/fwconsole-ma-list.$(date -u +%s).txt
- fwconsole --version > /root/forensics/fwconsole-version.$(date -u +%s).txt
- If you find IoCs or any suspicious items: assume compromise
- Isolate host (network-level) and snapshot/dump disks (cloud: create image/snapshot).
- Rotate all credentials (web admin, root, SIP/trunk credentials, API keys).
- Rebuild from known-good backup or fresh OS image. Do not trust in-place cleanup.
- Monitoring and provider checks
- Check provider CDRs/trunk usage for unusual outgoing calls.
- Notify/tell SIP provider to rotate trunk credentials if compromise suspected.
- For immediate follow-up actions (after containment)
- Collect full forensic set (see script provided).
- If compromised: rebuild, restore only from verified pre-compromise backups, rotate secrets, revoke/reissue TLS certs if needed.
Minimal notes:
- The vendor-supplied EDGE fix prevents new exploitation but does NOT clean already-compromised systems.
- If you have a complicated environment, schedule a controlled rebuild and forensic analysis.