April 27th – What happened with our feature flag configuration
Disclosures

27 april – Wat is er gebeurd met de configuratie van onze functies?

Op 27 april 2026 maakte een beveiligingsonderzoeker bekend dat de configuratie van de feature flags aan de clientzijde bij ClickUp persoonlijk identificeerbare informatie blootlegde. Concreet waren 893 e-mailadressen van klanten opgenomen in de targetingregels voor feature flags, samen met één flag die ten onrechte verwees naar het API-token van een klant, dat tijdens een incidentrespons was gebruikt om de limiet voor verkeer vanuit die werkruimte te beperken.

We hadden dit eerder moeten opmerken. Dat is niet gebeurd, en we zijn jullie een duidelijke uitleg verschuldigd over wat er is gebeurd, waarom, wat we er inmiddels aan hebben gedaan en hoe we het in de toekomst beter gaan aanpakken.

Heeft u hier last van?

De inbreuk bleef beperkt tot 893 e-mailadressen van klanten die werden gebruikt in targetingregels voor feature flags om te bepalen welke gebruikers tijdens de uitrol bepaalde functies te zien krijgen.

Als u vóór of op 29 april (nog steeds) een rechtstreeks bericht van ons hebt ontvangen, stond uw e-mailadres vermeld in een configuratie van een feature flag. Als u niets van ons hebt gehoord, stond uw e-mailadres niet op de lijst met e-mailadressen.

  • Er is voor geen enkele klant content van de werkruimte (taken, documenten, bestanden of projectgegevens) blootgesteld — met één mogelijke uitzondering die hieronder wordt beschreven.
  • Er zijn geen wachtwoorden, factuurgegevens of inloggegevens gelekt.
  • Er zijn geen systemen voor verificatie gehackt.

Het technische probleem

ClickUp maakt gebruik van Split.io (nu onderdeel van Harness) voor het beheer van feature flags. Net als de meeste browser-side feature flag SDK's vereist Split.io een client-side SDK-sleutel die in de JavaScript-bundel van de applicatie is ingebed. Deze sleutel is opzettelijk openbaar en op deze manier evalueert de SDK flags voor de huidige gebruiker in de browser. Dit is standaard, gedocumenteerd gedrag bij Split.io, LaunchDarkly en vergelijkbare platforms, en het is geen kwetsbaarheid.

Het probleem is niet de sleutel zelf, maar wat onze technici in de vlagconfiguraties hebben ingebouwd.

Dit is wat er op architecturaal vlak gebeurde: met feature flag-platforms kunnen ontwikkelaars bij de uitrol van functies specifieke gebruikers targeten. De engineeringteams van ClickUp hadden e-mailadressen rechtstreeks in de targetingregels voor flags gebruikt. Een voorbeeld hiervan is het inschakelen van een functie voor een specifieke groep bètatesters. Het openbaar doorzoekbare splitChanges-eindpunt van de Split.io SDK retourneert de volledige set flagdefinities, inclusief deze targetingregels. Dit betekent dat iedereen met de client-side sleutel (die, nogmaals, opzettelijk in onze frontend-code staat) die flagdefinities kon ophalen en de daarin ingebedde e-mailadressen kon extraheren.

Ontwikkelaars beschouwden vlagconfiguraties als interne hulpmiddelen, terwijl de SDK-architectuur deze per definitie openbaar toegankelijk maakt. Daardoor konden de e-mailadressen zich ophopen op een plek waar ze nooit hadden mogen staan. Bij updates van functie-vlaggen is een peer review met +1 vereist, net als bij code. Deze stap heeft dit niet opgemerkt.

De enige uitzondering – Een vlag die is geconfigureerd voor de limiet voor één enkele klant

Een technicus die op afroep beschikbaar was en reageerde op API-misbruik, had het API-token van een klant opgenomen in een configuratie voor limietbeperking om het verkeer af te remmen, waardoor het mogelijk via het SDK-eindpunt kon worden ingezien. Dit had nooit mogen gebeuren: inloggegevens horen niet thuis in configuraties voor limietbeperking. We hebben het token onmiddellijk uitgeschakeld en uit ons logboekonderzoek blijkt tot nu toe dat er geen aanwijzingen zijn voor kwaadwillige toegang buiten het onderzoek van de onderzoeker zelf. Er was geen toegang tot andere klanttokens of werkruimtegegevens, en we werken rechtstreeks samen met deze klant.

Wat wel en wat niet aan het licht kwam

ClaimOnze bevinding
SDK-sleutel hardgecodeerd in de bundelDat is correct en zo is het ook bedoeld. Zo werken SDK’s voor feature flags aan de browserzijde. Het is op zichzelf geen kwetsbaarheid.
893 e-mailadressen van klanten in regels voor doelgroepsegmentatie op basis van vlaggenCorrect op het moment van rapportage. Alle e-mailadressen van derden zijn op 28 april om 03:25 UTC verwijderd.
API-token voor live-klanten in vlagconfiguratieBevestigd. Toegevoegd op 7 oktober 2025. Ongeldig verklaard op 27 april 2026 om 12:05 UTC.
Schrijftoegang tot Split.ioDit is correct en zo ontworpen. De telemetrie-eindpunten van de browser-SDK (gebeurtenissen/bulk, testImpressions) staan schrijfbewerkingen toe als onderdeel van het standaardgedrag van de SDK. Dit is geen verkeerde configuratie van ClickUp.
“15 maanden lang geen sanering”Onjuist weergegeven; de datums kloppen. Het oorspronkelijke bug bounty-rapport van 17 januari 2025 over de SDK-sleutel had geen resultaat voor een technische taak, aangezien de sleutel op zichzelf niet de kwetsbaarheid vormt. De e-mailadressen en vlagconfiguraties waren het daadwerkelijke probleem en waren niet opgenomen in dit oorspronkelijke rapport. De vlagconfiguraties werden pas op 8 april 2026 aan HackerOne bekendgemaakt en waren pas op 27 april 2026 bekend bij ClickUp.

tijdlijn

We streven ernaar volledig transparant te zijn over de punten waarop onze processen tekortschoten, met inbegrip van tekortkomingen bij onze externe bugbounty-provider en onze eigen interne communicatiemiddelen.

DatumGebeurtenis
17 januari 2025Een onderzoeker heeft de openbaarmaking van de Split.io SDK-sleutel gemeld bij ons bugbountyprogramma op BugCrowd. Gezien de content van de melding is deze door BugCrowd en ClickUp terecht aangemerkt als ‘informatief’.
3 juni 2025ClickUp verplaatst het bugbountyprogramma naar HackerOne. Alle eerdere meldingen zijn succesvol overgezet, inclusief het bovenstaande probleem.
8 april 2026Onderzoeker met de gebruikersnaam „impulsive“ heeft een nieuw, gedetailleerd rapport op HackerOne ingediend waarin de uitgebreide gevolgen worden beschreven: 893 e-mailadressen van klanten in de regels voor het markeren van kwetsbaarheden, het actieve API-token van een klant en andere operationele gegevens.
10 april 2026Een triage-analist van HackerOne heeft het rapport ten onrechte gesloten als een duplicaat van het rapport van januari 2025, waarbij hij over het hoofd zag dat het nieuwe rapport een wezenlijk andere en grotere impact beschrijft. Bij nader onderzoek hebben we nog twee gevallen ontdekt waarin soortgelijke rapporten ten onrechte waren gesloten: één op 6 september 2025 en één op 1 januari 2026
21 april 2026De onderzoeker reageert op de afsluiting met aanvullende informatie aan HackerOne.
25 april 2026De onderzoeker voert de druk op: via HackerOne stuurt hij een e-mail naar de CEO van ClickUp en naar security@clickup.com, en via DM’s op X stelt hij een deadline van 2 mei vast voor openbaarmaking. Deze e-mails aan de CEO van ClickUp en aan security@ worden door spamfilters tegengehouden en komen niet bij de beoogde ontvangers terecht. De DM’s op X aan ClickUp werden automatisch gefilterd en niet gelezen.
27 april 2026 ~ 10:42 UTCDe onderzoeker maakt dit openbaar op X.
27 april 2026 11:06 UTCClickUp wordt hiervan op de hoogte gesteld. Er wordt een incident gemeld. Het incidentresponsproces wordt in gang gezet en er wordt een procedure gestart om het API-token van de klant te vernieuwen.
27 april 2026, 12:53–14:12 UTCEerste opruimacties van split-vlaggen binnen de engineeringteams.
27 april 2026 ~ 17:00 UTCDe volledig geautomatiseerde controle van alle 4.809 feature flags is voltooid.
27 april 2026 23:13 UTCDe technici van ClickUp en Harness (Split) bespreken de technische details.
28 april 2026 03:25 UTCAlle e-mailadressen van klanten zijn verwijderd uit de vlagconfiguraties. Aantekening: sommige e-mailadressen van derden blijven bewust in twee vlaggen staan; dit houdt verband met frauduleus gebruik.

Waar ons proces tekortschoot

Er zijn hier drie dingen misgegaan, en we willen ze allemaal duidelijk benoemen. In het volgende hoofdstuk bespreken we de aanpassingen.

1. Er is geen vervolg gegeven aan het oorspronkelijke rapport. Het bugbounty-rapport van januari 2025 had kunnen leiden tot een technische Taak en een onderzoek naar welke gegevens er in de vlagconfiguraties stonden. Dat is niet gebeurd. We passen ons triageproces aan om te voorkomen dat dit in de toekomst nog eens gebeurt.

2. HackerOne heeft de afsluiting als dubbel gemeld onjuist afgehandeld. Het rapport van april 2026 beschreef aanzienlijk nieuwe gevolgen in vergelijking met het rapport van januari 2025. Het had door HackerOne niet als dubbel gemeld mogen worden afgesloten. Bij nader onderzoek hebben we nog twee andere gevallen geïdentificeerd waarin soortgelijke rapporten werden gesloten – één op 6 september 2025 en één op 1 januari 2026. We werken samen met HackerOne om hiaten in hun triageprocessen aan te pakken. We zullen een secundaire beoordeling van alle HackerOne-rapporten opnemen om ervoor te zorgen dat we in de toekomst niet afhankelijk zijn van processen van derden.

3. Onze e-mailservice heeft de melding van de onderzoeker als spam gemarkeerd. Op zaterdag 25 april stuurde de onderzoeker een e-mail naar zowel onze CEO als security@clickup.com, en stuurde hij een privébericht naar het X-account van ClickUp.

We hebben deze e-mails pas gezien nadat het bericht op X openbaar was gemaakt. Ze zijn aan het licht gekomen na een intern onderzoek naar spammaps en de filtering van DM’s op X.

We zijn bezig met het aanpassen van onze procedures voor e-mailfiltering en spamcontrole om ervoor te zorgen dat inkomende berichten die van belang zijn voor de veiligheid niet ongemerkt worden verwijderd.

Dit alles neemt het kernprobleem niet weg: klantgegevens hadden überhaupt nooit in onze feature flag-configuraties mogen staan.

Wat we hebben gedaan

Onmiddellijk (voltooid)

  • Het blootgestelde API-token van de klant is ongeldig verklaard.
  • Alle e-mailadressen van klanten zijn verwijderd uit de configuraties van de feature flags.
  • Er is een probleem met het gebruik van persoonsgegevens of inloggegevens in vlagconfiguraties in de hele engineeringafdeling.
  • De volledige controle is voltooid met betrekking tot alle feature flags met betrekking tot persoonsgegevens, inloggegevens en gevoelige gegevens.

Korte termijn (in uitvoering)

  • De regels voor e-mailfiltering zijn bijgewerkt om ervoor te zorgen dat security@clickup.com alle inkomende berichten over veiligheid weergeeft; er is een extra stap toegevoegd om spamberichten (veilig) te controleren.
  • Evaluatie van de werkstroom voor bugbounty-programma’s met HackerOne om te voorkomen dat geldige meldingen ten onrechte worden gesloten.
  • Training van beoordelaars van feature flags over wat als goedgekeurde content geldt.

Op lange termijn

  • Automatisch scannen van alle configuraties van feature flags op patronen van persoonlijk identificeerbare informatie (e-mailadressen, tokens, API-sleutels) bij elke wijziging van een flag, met automatische blokkering.
  • Een proces en hulpmiddelen voor de automatisering van de beoordeling van alle triagebeslissingen van HackerOne.
  • Implementeer een proxy of technische maatregel om front-end-vlaggen en back-end-vlaggen van elkaar te scheiden.

Een aantekening over de onderzoeker

Toen ClickUp eenmaal contact had gelegd met de onderzoeker die dit aan het licht had gebracht – die opereert onder de gebruikersnaam impulsive / @weezerOSINT – handelde het bedrijf verantwoord en verstrekte het alle gevraagde informatie.

De onderzoeker, die onder de gebruikersnaam impulsive / @weezerOSINT opereert, heeft via de juiste kanalen (HackerOne, vervolgens via een rechtstreekse e-mail aan security@clickup.com en onze CEO) melding gedaan en heeft constructief meegewerkt toen wij contact met hem opnamen. Onze interne processen hebben er niet in geslaagd zijn rapport en de daaropvolgende escalaties tijdig aan het licht te brengen.

Na de samenwerking met de onderzoeker ontving ClickUp op 28 april om 01:47 UTC het volgende bericht: „Bedankt [ClickUp], ik waardeer het enorm hoe snel jullie hierop hebben gereageerd. Dat zie ik niet vaak en het maakt echt een verschil.”

ClickUp beloont de onderzoeker met een bugbounty voor zijn of haar bevindingen. Andere onderzoekers worden aangemoedigd om deel te nemen aan ons bugbountyprogramma, op verantwoorde wijze melding te maken via ons programma voor het melden van kwetsbaarheden, of rechtstreeks via e-mail op security@clickup.com.

Samenvatting

De gegevens die bij dit incident zijn blootgesteld, bleven beperkt tot 893 e-mailadressen – er zijn geen werkruimte-inhoud, wachtwoorden of factuurgegevens van klanten aangetast, met uitzondering van één klant waarnaar hierboven wordt verwezen – we werken rechtstreeks met deze klant samen om na te gaan of er geen ongeoorloofde toegang tot de sleutel heeft plaatsgevonden.

Wij bieden onze klanten onze oprechte excuses aan voor wat er is gebeurd en zullen er alles aan doen om ervoor te zorgen dat zoiets niet nog eens gebeurt.

We zullen dit bericht bijwerken zodra er nieuwe informatie bekend wordt. Neem bij vragen contact op via veiligheid@ClickUp.com.