openAI 이슈 / 챗gpt /
ChatGPT 에서 다른 사용자의 개인정보와 채팅제목이 노출되던 이슈, 2023-03-20
2023년 3월 20일, chatgpt에서 특정사용자가 채팅기록 사이드바에서 다른 사용자의 대화에 대한 간략한 설명을 볼 수 있었다.(ref. 3)
redis-py library 의 이슈로 다른 사용자의 개인 정보와 채팅 제목이 노출되었다고 한다.
redis-py library 의 이슈
github issue 에 가면, 아래와 같은 재현 code를 확인할 수 있다.
import asyncio
from redis.asyncio import Redis
import sys
async def main():
myhost, mypassword = sys.argv[1:]
async with Redis(host=myhost, password=mypassword, ssl=True, single_connection_client=True) as r:
await r.set('foo', 'foo')
await r.set('bar', 'bar')
t = asyncio.create_task(r.get('foo'))
await asyncio.sleep(0.001)
t.cancel()
try:
await t
print('try again, we did not cancel the task in time')
except asyncio.CancelledError:
print('managed to cancel the task, connection is left open with unread response')
print('bar:', await r.get('bar'))
print('ping:', await r.ping())
print('foo:', await r.get('foo'))
if __name__ == '__main__':
asyncio.run(main())
$ python redis_cancel.py hostname password
managed to cancel the task, connection is left open with unread response
bar: b'foo'
ping: False
foo: b'PONG'
대략 그림으로 설명하면 이런 모습이다.
위 그림에서 ’파란색’부분이 t
에서 사용했던 부분인데, 이것이 connection 이 cancel 됐을때도 계속 남아있어서, 그 다음 command 인 r.get('bar')
를 send 할 때, r.get('foo')
가 대신 보내지는 것인 듯 하다. 그래서 결과가 하나씩 밀려서 나온다.
댓글 없음:
댓글 쓰기