JavaScript Challenge is Enabled in Azure Front Door WAF
ZTA.27019 is in Maester 3.0.0-preview and not in the stable 2.3.0 release yet. It will be in the next stable release. To use it now, install the preview:
Install-Module Maester -AllowPrerelease -ForceHow to get the preview, and go backUse the preview in GitHub Actions
Overview
Section titled “Overview”Azure Front Door Web Application Firewall (WAF) supports JavaScript challenge as a defense mechanism against automated bots and headless browsers across the global edge network. JavaScript challenge works by serving a small JavaScript snippet that must be executed by the client browser to prove that the request originates from a real browser capable of running JavaScript, rather than a simple HTTP client or bot.
When a request triggers a JavaScript challenge, the WAF responds with a challenge page containing JavaScript code that the browser must execute to obtain a valid challenge cookie. Bots and automated tools that cannot execute JavaScript fail this challenge and are blocked from accessing protected resources.
The javascriptChallengeExpirationInMinutes setting controls how long the challenge cookie remains valid before the client must complete another challenge. JavaScript challenge provides a middle ground between allowing all traffic and blocking suspected bots outright.
This check identifies Azure Front Door WAF policies that are attached to an Azure Front Door and verifies that at least one custom rule with JavaScript challenge action is configured and enabled.
Remediation
Section titled “Remediation”- Azure Web Application Firewall on Azure Front Door
- Web Application Firewall custom rules for Azure Front Door
- Configure JavaScript challenge for Azure Front Door WAF
- Tutorial: Create a Web Application Firewall policy on Azure Front Door
Run it
Section titled “Run it”The check runs as part of the whole assessment, with the ZeroTrustAssessment module installed:
Install-Module ZeroTrustAssessment -Scope CurrentUserConnect-MaesterInvoke-Maester -Pack ZTA -SkipBuiltInLeave out -SkipBuiltIn to run Maester’s own checks in the same run.
About this check
| Severity | Medium |
| Effort to fix | Low |
| Impact on users | Low |
| Pillar | Network |
| Category | Azure Network Security |
| Product | Azure |
| Feature | Network security |
| Area | Infrastructure hardening |
| ATT&CK | T1110.004 Credential Stuffing |
| Licence | Azure WAF |
| Tenant | Workforce |
Product, feature, area and ATT&CK are Maester’s: the assessment does not record them, so Maester keeps them in the pack’s taxonomy.json.
A Microsoft check, part of the Zero Trust Assessment pack. Text from ZeroTrustAssessment 3.1.0, © Microsoft, MIT licence.
About this check
- Severity
- Medium
- Effort to fix
- Low
- Impact on users
- Low
- Product
- Azure
- Feature
- Network security
- Area
- Infrastructure hardening
- Pack
- Microsoft Zero Trust Assessment