fix: strip smuggled payload from ssl_check requests#2898
Conversation
When ssl_check=1 is present in a form-encoded body, signature verification is skipped. An attacker can include a payload field alongside ssl_check that gets extracted and processed as a real event, bypassing authentication entirely. Fix: rewrite rawBody to only contain the ssl_check field before returning, so parseHTTPRequestBody can't extract a smuggled payload. Fixes slackapi#2897
|
|
Thanks for the contribution! Before we can merge this, we need @homanp to sign the Salesforce Inc. Contributor License Agreement. |
|
Can't sign the contract, getting: |
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #2898 +/- ##
=======================================
Coverage 93.62% 93.62%
=======================================
Files 44 44
Lines 7855 7858 +3
Branches 687 687
=======================================
+ Hits 7354 7357 +3
Misses 496 496
Partials 5 5 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
|
@homanp your changes look good 💯 could you try signing the CLA again, sometimes we need to close and reopen the pull request We can merge these changes as is and I can follow up with some unit tests and edge case around evaluating sll_check truthy, but if you want o add these you're more then well come 🙏 |
Still can't. same issue. tried with multiple different emails. get the same error of contacting oss-bot |
|
Tried signing with incognito mode as well and still get the error. Tried with safari as well, but still the same. |
I get this though @WilliamBergamin
|
|
@homanp would you be able to try signing the cla again, we will try to review the logs when you do it 🙏 |
doing now. |
still the same |
|
I got internal confirmation that you signed the CLA 🚀 it seems like its just not showing up here |
Cool |

Fixes #2897
When
ssl_check=1is in a form-encoded body,parseAndVerifyHTTPRequestskips signature verification and returns the buffered request as-is. Problem is, the raw body can also contain apayloadfield thatparseHTTPRequestBodywill extract and process as a real event — no signing secret needed.This rewrites
rawBodyto only contain thessl_checkfield before returning, so nothing else can be smuggled through.Tested that:
ssl_check=1&payload={...}no longer triggers event handlersssl_checkrequests still return 200ssl_checkstill require valid signatures