특정 User Agent 헤더 필터링

if ($http_user_agent ~* "Paros|ZmEu|nikto|dirbuster|sqlmap|openvas|w3af|Morfeus|JCE|Zollard|Arachni|Brutus|bsqlbf|Grendel-Scan|Havij|Hydra|N-Stealth|Netsparker|Pangolin|pmafind|webinspect")
{ return 404; }

이슈

필터링 값인 JCE가 포함된 문자열이 UA로 들어와서 정상적인 UA가 필터링 되는 경우가 발생하였다. 넘어온 UA 값은 Dalvik/2.1.0 (Linux; U; Android 10; M2004J19C MIUI/V11.0.7.0.QJCEUXM)로 샤오미 기기에서 붙어오는 UA 헤더이다.

해결책

웹스캐너의 타겟은 일반적으로 CDN의 캐싱된 정적 리소스가 아니다. 특정 웹사이트의 html을 받아서 해석하고 파라미터를 넣어서 XSS, SQLInjection 등의 공격을 하는 경우로 활용되기 때문에 정적 컨텐츠를 담고 있는 CDN에서는 굳이 필요가 없다고 판단 되었다.