OPENAI ChatGPT-nedbrud: Redis fejl resulterer i læk af andres Brugeres søgehistorik

chatgpt_ai

Der skete et nedbrud i CHATGPT mandag, det skriver Open AI i dag. Brugeres for- og efternavn, sidste fire cifre i betalingskortnummeret og betalingskortets udløbsdato blev for en uge siden lækket i forbindelse med et nedbrud på ChatGPT.

  • ChatGPT blev mandag for en uge siden taget offline som følge af en fejl i systemet.
  • Mandag oplevede flere brugere at de pludselig at kunne se andre brugeres chathistorik og e-mail-adresser, hvorefter OpenAI tog ChatGPT offline.
  • CHAT GPT benyttes af mange brugere hos OPENAI og af en række partnere både hos OPENAI og Microsoft.

Ni-timers vinduet var fra mandag 20. marts klokken 10:00 til 19:00 dansk tid.

Hvad er REDIS?

Redis (Remote Dictionary Server) er et datastrukturlager i hukommelsen, der bruges som en distribueret nøgleværdidatabase i hukommelsen, cache og meddelelsesmægler med valgfri holdbarhed. Redis understøtter forskellige former for abstrakte datastrukturer, såsom strenge, lister, kort, sæt, sorterede sæt, HyperLogLogs, bitmaps, strømme og rummelige indekser. Redis populariserede ideen om et system, der kan betragtes som en database og en cache på samme tid. Det blev designet, så data altid ændres og læses fra hovedcomputerens hukommelse, men også gemmes i et format, der er uegnet til tilfældig dataadgang.

Her er presseinformationen fra OPENAI i sin fulde ordlyd:

Vi tog ChatGPT offline tidligere på ugen på grund af en fejl i et open source-bibliotek, som gjorde det muligt for nogle brugere at se titler fra en anden aktiv brugers chathistorik. Det er også muligt, at den første besked i en nyoprettet samtale var synlig i en andens chathistorik, hvis begge brugere var aktive på samme tid.

Fejlen er nu rettet. Vi var i stand til at gendanne både ChatGPT-tjenesten og senere dens chathistorikfunktion med undtagelse af et par timers historie. Som lovet offentliggør vi flere tekniske detaljer om dette problem nedenfor.

Efter nærmere undersøgelse opdagede vi også, at den samme fejl kan have forårsaget utilsigtet synlighed af betalingsrelaterede oplysninger hos 1,2% af ChatGPT Plus-abonnenterne, der var aktive i løbet af et specifikt ni-timers vindue. I timerne før vi tog ChatGPT offline i mandags, var det muligt for nogle brugere at se en anden aktiv brugers for- og efternavn, e-mailadresse, betalingsadresse, de sidste fire cifre (kun) i et kreditkortnummer og kreditkortets udløbsdato. Fulde kreditkortnumre blev ikke eksponeret på noget tidspunkt. 

Vi mener, at antallet af brugere, hvis data faktisk blev afsløret for en anden, er ekstremt lavt. For at få adgang til disse oplysninger skulle en ChatGPT Plus-abonnent have gjort et af følgende:

  • Åbn en e-mail med abonnementsbekræftelse, der sendes mandag den 20. marts mellem kl. 1 og 10 Pacific time. På grund af fejlen blev nogle abonnementsbekræftelses-e-mails, der blev genereret i løbet af dette vindue, sendt til de forkerte brugere. Disse e-mails indeholdt de sidste fire cifre i en anden brugers kreditkortnummer, men fulde kreditkortnumre blev ikke vist. Det er muligt, at et lille antal e-mails med abonnementsbekræftelse er blevet adresseret forkert før den 20. marts, selvom vi ikke har bekræftet nogen tilfælde af dette.
  • I ChatGPT skal du klikke på “Min konto” og derefter “Administrer mit abonnement” mellem kl. 1 og 10. Pacific time mandag den 20. marts. I dette vindue kan en anden aktiv ChatGPT Plus-brugers for- og efternavn, e-mailadresse, betalingsadresse, de sidste fire cifre (kun) i et kreditkortnummer og kreditkortets udløbsdato have været synlige. Det er muligt, at dette også kunne have fundet sted før den 20. marts, selvom vi ikke har bekræftet nogen tilfælde af dette.

Vi har kontaktet for at underrette berørte brugere om, at deres betalingsoplysninger kan være blevet eksponeret. Vi er overbeviste om, at der ikke er nogen løbende risiko for brugernes data.

Alle hos OpenAI er forpligtet til at beskytte vores brugeres privatliv og holde deres data sikre. Det er et ansvar, vi tager utrolig alvorligt. Desværre levede vi i denne uge ikke op til denne forpligtelse og til vores brugeres forventninger. Vi undskylder igen over for vores brugere og hele ChatGPT-fællesskabet og vil arbejde ihærdigt på at genopbygge tilliden.

Tekniske detaljer

Fejlen blev opdaget i Redis-klientens open source-bibliotek, redis-py. Så snart vi identificerede fejlen, kontaktede vi Redis-vedligeholderne med en patch for at løse problemet. Sådan fungerede fejlen:

  • Vi bruger Redis til at cache brugeroplysninger på vores server, så vi ikke behøver at kontrollere vores database for hver anmodning.
  • Vi bruger Redis-klyngen til at fordele denne belastning over flere Redis-forekomster.
  • Vi bruger redis-py-biblioteket til at interface med Redis fra vores Python-server, der kører med Asyncio.
  • Biblioteket vedligeholder en delt pulje af forbindelser mellem serveren og klyngen og genbruger en forbindelse, der skal bruges til en anden anmodning, når den er færdig.
  • Når du bruger Asyncio, opfører anmodninger og svar med redis-py sig som to køer: den, der ringer op, skubber en anmodning til den indgående kø og popper et svar fra den udgående kø og returnerer derefter forbindelsen til puljen.
  • Hvis en anmodning annulleres, efter at anmodningen er skubbet til den indgående kø, men før svaret dukkede op fra den udgående kø, ser vi vores fejl: forbindelsen bliver således beskadiget, og det næste svar, der dequeues for en ikke-relateret anmodning, kan modtage data, der er efterladt i forbindelsen.
  • I de fleste tilfælde resulterer dette i en uoprettelig serverfejl, og brugeren bliver nødt til at prøve deres anmodning igen.
  • Men i nogle tilfælde matcher de beskadigede data tilfældigvis den datatype, som anmoderen forventede, og det, der returneres fra cachen, ser derfor gyldigt ud, selvom det tilhører en anden bruger.
  • Kl. 1 om natten Pacific time mandag den 20. marts introducerede vi utilsigtet en ændring på vores server, der forårsagede en stigning i annulleringer af Redis-anmodninger. Dette skabte en lille sandsynlighed for, at hver forbindelse returnerede dårlige data.

Denne fejl dukkede kun op i Asyncio redis-py-klienten til Redis Cluster og er nu rettet.

Handlinger, vi har foretaget

Efterhånden som vores undersøgelse afsluttes, er det vores højeste prioritet at støtte og informere vores brugere.

Vi har truffet følgende foranstaltninger for at forbedre vores systemer:

  • Grundigt testet vores rettelse til den underliggende fejl.
  • Tilføjet overflødige kontroller for at sikre, at de data, der returneres af vores Redis-cache, matcher den anmodende bruger.
  • Programatisk undersøgt vores logfiler for at sikre, at alle meddelelser kun er tilgængelige for den korrekte bruger.
  • Korrelerede flere datakilder for præcist at identificere de berørte brugere, så vi kan underrette dem.
  • Forbedret logføring for at identificere, hvornår dette sker, og fuldt ud bekræfte, at det er stoppet.
  • Forbedret robustheden og skalaen af vores Redis-klynge for at reducere sandsynligheden for forbindelsesfejl ved ekstrem belastning.

Hvor vi går herfra

Redis open source-vedligeholderne har været fantastiske samarbejdspartnere, der hurtigt adresserede fejlen og udrullede en patch. Redis spiller sammen med anden open source-software en afgørende rolle i vores forskningsindsats. Deres betydning kan ikke undervurderes – vi ville ikke have været i stand til at skalere ChatGPT uden Redis. Vi er dedikerede til løbende at støtte og bidrage til Redis-fællesskabet.

Kilde: OPENAI
Fotokredit: OPENAI logo