The vulnerability lies in several webhook handlers (BlueBubbles, Google Chat, LINE) that parse or read the request body before performing authentication. This creates an opportunity for an unauthenticated attacker to cause a denial of service (DoS) through slow-request attacks, where they send a large request body very slowly, tying up server resources.
The analysis of the patch d3e8b17aa6432536806b4853edc7939d891d0f25 reveals a pattern of fixes across these handlers:
-
handleBlueBubblesWebhookRequest and handleGoogleChatWebhookRequest: The patch refactors these functions to perform authentication (checking for passwords or bearer tokens) before attempting to read the full request body. The vulnerable versions read the body first and authenticated second.
-
createLineNodeWebhookHandler: For this handler, the request body is required to validate the request's signature. The fix was to introduce and enforce much stricter pre-authentication limits on the size and read timeout of the request body. This minimizes the window for a DoS attack while still allowing the signature to be calculated.
The identified vulnerable functions are the primary entry points for these webhooks. During an exploit, these functions would be active, attempting to read the slow-moving request from the unauthenticated client, making them key indicators in a runtime profile or stack trace.