본문 바로가기
프로그래밍/Web

지그재그 로그인 오류 왜 발생한걸까?

by 물고기고기 2023. 11. 10.

 

이번 지그재그에서 다른 사람 계정으로 로그인되는 등 보안이슈가 있었죠. 해당 원인은 Redis문제 였던 걸로 보이는데요.
이미 Chat GPT를 사용하는 OPEN AI에서도 비슷한 문제를 일으킨 적이 있어 관련 분석 기사가 있습니다. 

https://thehackernews.com/2023/03/openai-reveals-redis-bug-behind-chatgpt.html?m=1

 

OpenAI Reveals Redis Bug Behind ChatGPT User Data Exposure Incident

OpenAI discloses a Redis bug causing certain ChatGPT users' personal info and chat titles to be exposed.

thehackernews.com

 

해당 기사를 요약하자면


OpenAI는 최근 Redis 오픈 소스 라이브러리의 버그로 인해 ChatGPT 서비스에서 사용자들의 개인 정보가 노출되었다고 밝혔습니다. 이 버그는 2023년 3월 20일에 발견되었으며, 일부 사용자들이 다른 사용자들의 채팅 내역을 볼 수 있게 했습니다. 문제는 redis-py 라이브러리에서 시작되어 취소된 요청이 연결 문제를 일으키고 예상치 못한 데이터를 반환하게 했습니다. 이로 인해 OpenAI는 서비스를 임시 중단했습니다.

이 사건으로 인해 ChatGPT Plus 구독자 중 약 1.2%의 결제 관련 정보가 노출되었을 가능성이 있습니다. OpenAI는 영향을 받은 사용자들에게 연락을 취했으며, Redis 캐시의 데이터 일치를 확인하는 중복 검사를 추가했습니다.

또한, OpenAI 나글리라는 보안 연구원이 발견한 계정 탈취 취약점도 수정했습니다. 취약점은 특별히 제작된 링크를 통해 사용자의 JSON 토큰을 수집하고 계정을 탈취할 있는 방법이었습니다. OpenAI 취약점을 발견 시간 내에 수정했습니다.


 

이렇습니다. 지그재그나 Chat GPT 모두 파이썬을 사용하는데 그 중 Redis 연결 라이브러리가 말썽을 일으킨 것으로 보이네요.
저는 파이썬을 잘 사용하지 않아 해당 라이브러리의 문제가 무엇인지 GPT에게 물어보니 이러한 답변이 왔습니다.

redis-py 라이브러리에서 발생한 문제의 원인은 취소된 요청이 연결을 손상시키고 데이터베이스 캐시에서 예상치 못한 데이터를 반환하는 것이었습니다. 이러한 유형의 문제는 일반적으로 몇 가지 가능한 원인이 있습니다:

  • 버그 또는 구현 오류: 라이브러리 내부에 존재하는 버그나 구현 오류로 인해 연결 관리 또는 데이터 처리 과정에서 예상치 못한 동작이 발생할 수 있습니다.
  • 동시성 문제: 동시에 여러 요청이 처리될 때, 적절한 동기화 없이 여러 스레드나 프로세스가 동일한 자원(예: 캐시된 데이터)에 접근하면, 데이터 무결성이 손상될 수 있습니다.
  • 요청 취소와 연결 관리: redis-py와 같은 네트워크 기반 라이브러리에서는 요청 취소가 제대로 처리되지 않으면, 연결이 손상되거나 오용될 수 있습니다. 예를 들어, 한 연결이 다른 요청의 결과를 잘못 반환하게 될 수 있습니다.
  • 리소스 재사용 문제: 연결 풀링과 같은 리소스 재사용 전략이 잘못 구현되면, 한 사용자의 데이터가 다른 사용자에게 잘못 전달될 수 있습니다.

경우, OpenAI 서버 변경으로 인해 요청 취소가 증가했으며, 이러한 취소된 요청들이 연결 문제를 일으켜 잘못된 데이터 반환으로 이어졌다고 설명했습니다. 이는 redis-py 라이브러리가 특정 상황에서 요청 취소와 연결 관리를 적절히 처리하지 못한 것으로 보입니다.

앞으로 해당 라이브러리를 사용할땐 서버측 코드에서 정합성 검사를 한번 더 해주어야할 것 같네요!

댓글