Bug Bounty Report May 18, 2019

HackerOne #4561 — Stored XSS via Slackbot Messages on Slack

Source: HackerOne Report #4561

Vulnerability Summary

A stored Cross-Site Scripting (XSS) vulnerability in Slack's Slackbot messaging feature allowed the injection of malicious JavaScript that would execute in the browsers of users viewing Slackbot messages.

Technical Details

Slackbot is Slack's automated messaging assistant that can send messages on behalf of applications and integrations. The vulnerability allowed an attacker to:

The XSS payload executed with the origin of the Slack web application, meaning it had access to:

Why Stored XSS Is Particularly Dangerous

Unlike reflected XSS (which requires a victim to click a malicious link), stored XSS:

Impact

Remediation

Slack fixed the vulnerability by implementing proper output encoding and Content Security Policy:

  1. All user-controlled content in Slackbot messages is now HTML-encoded before rendering
  2. Content Security Policy (CSP) headers restrict script execution sources
  3. Input validation rejects obviously malicious content

Lessons for Web Application XSS Defense