티스토리 뷰
이번 지그재그에서 다른 사람 계정으로 로그인되는 등 보안이슈가 있었죠. 해당 원인은 Redis문제 였던 걸로 보이는데요.
이미 Chat GPT를 사용하는 OPEN AI에서도 비슷한 문제를 일으킨 적이 있어 관련 분석 기사가 있습니다.
https://thehackernews.com/2023/03/openai-reveals-redis-bug-behind-chatgpt.html?m=1
해당 기사를 요약하자면
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 라이브러리가 특정 상황에서 요청 취소와 연결 관리를 적절히 처리하지 못한 것으로 보입니다.
앞으로 해당 라이브러리를 사용할땐 서버측 코드에서 정합성 검사를 한번 더 해주어야할 것 같네요!
- Total
- Today
- Yesterday
- 알고있
- 조회수기능
- 목서버
- crudrepository
- 소숫점잘림
- 시간어떻게
- redis-py
- 데이터잘림
- jupyterlab
- 지도데이터
- visionAPI
- redis
- 조회수기능개발
- 구글클라우드스토리지
- 항해커톤
- 구글
- redisTemplate
- 네이버이미지검색
- 주피터랩
- 항해해커톤
- 모의서버
- 스마트렌즈
- PC시간어떻게
- 실시간클록
- 이미지검색
- ChatGPT
- 해커톤
- mockserver
- 실시간클락
- 빈해쉬맵
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |