Son dönemde ChatGPt'nin web arayüzü üzerinden gönderilen paketleri inceliyordum. Keşfettiğim bir davranışı teknik olarak açıklamayı olası etkilerini olabildiğince açıklamak istiyorum;
Keşfedilen Davranış;
ChatGPT'ye normal bir mesaj gönderdiğimizde (örneğin tarayıcı üzerinden), arka planda /backend-api/f/conversation endpoint'ine bir POST isteği gönderilir. bu isteğin JSON gövdesinde mesajın yazarını belirten şu alan bulur yani sizin rolünüzü belirten:
"author": {"role": "user"}
Burp Suite gibi bir proxy aracı kullanarak bu isteği yakalayıp role değerini "user" yerine "developer" olarak değiştirdiğimizde, sunucu isteği reddetmek yerine geçerli bir yanıt döndürmeye devam ediyor. Fakat bu ChatGPT'nin eski sürümlerinde olan 'Developer Mod' gibi bir mod değil. Yani politikaları kuralları yok sayarak kullanamazsınız. Nasıl bir zafiyeti tetikleyebilir pek bilemiyorum fakat gözlemlediğim davranış değişiklikleri şu şekilde;
- Yanıtlar genellikle daha sade ve net oluyor
- Emoji kullanımı ya azalıyor yada tamamen ortadan kalkıyor
- Yanıtların tonu biraz daha ciddi ve teknik hale geliyor
Denemeler sırasında başka değerlerde test edildi
"admin", "system" gibi değerler sunucu tarafından reddediliyor ve hata döndürülüyor denediğim bazı değerler;
system: 403
critic: 403
assistant: 403
Birde "tool" değeri var user kısmını tool olarak değiştirdiğimizde streaming bağlantısını başlatıyor ancak kısa süre sonra "Mesaj akışında hata" mesajıyla sonlanıyor. Bu muhtemelen mevcut web sürümüyle uyumlu olmayan bir rol.
Anti-Abuse Mekanizması;
ChatGPT web arayüzü kötüye kullanımı önlemek amacıyla proof-of-work (PoW) benzeri bir mekanizma kullanıyor. Bir mesaj gönderdiğinizde genellikle iki önemli istek sırayla gider;
Birinci istek (sentinel/prepare) istemcinin belirli bir hesaplama yükünü yerine getirdiğini kanıtlayan bir token hazırlar. Bu istek engellenir veya değiştirilirse ikinci istek (asıl mesajı taşıyan) başarısız olur ve yanıt alınamaz. Bu nedenle proxy ile test yaparken sentinel/chat-requirements/prepare bu isteği değiştirmeden ilk olarak iletmeniz gerekir. Yoksa yanıt alamazsınız.
Bu davranışın ciddi bir güvenlik açığı olduğunu düşünmüyorum fakat paylaşmak istedim.
Keşfedilen Davranış;
ChatGPT'ye normal bir mesaj gönderdiğimizde (örneğin tarayıcı üzerinden), arka planda /backend-api/f/conversation endpoint'ine bir POST isteği gönderilir. bu isteğin JSON gövdesinde mesajın yazarını belirten şu alan bulur yani sizin rolünüzü belirten:
"author": {"role": "user"}
Burp Suite gibi bir proxy aracı kullanarak bu isteği yakalayıp role değerini "user" yerine "developer" olarak değiştirdiğimizde, sunucu isteği reddetmek yerine geçerli bir yanıt döndürmeye devam ediyor. Fakat bu ChatGPT'nin eski sürümlerinde olan 'Developer Mod' gibi bir mod değil. Yani politikaları kuralları yok sayarak kullanamazsınız. Nasıl bir zafiyeti tetikleyebilir pek bilemiyorum fakat gözlemlediğim davranış değişiklikleri şu şekilde;
- Yanıtlar genellikle daha sade ve net oluyor
- Emoji kullanımı ya azalıyor yada tamamen ortadan kalkıyor
- Yanıtların tonu biraz daha ciddi ve teknik hale geliyor
Denemeler sırasında başka değerlerde test edildi
"admin", "system" gibi değerler sunucu tarafından reddediliyor ve hata döndürülüyor denediğim bazı değerler;
system: 403
critic: 403
assistant: 403
Birde "tool" değeri var user kısmını tool olarak değiştirdiğimizde streaming bağlantısını başlatıyor ancak kısa süre sonra "Mesaj akışında hata" mesajıyla sonlanıyor. Bu muhtemelen mevcut web sürümüyle uyumlu olmayan bir rol.
Anti-Abuse Mekanizması;
ChatGPT web arayüzü kötüye kullanımı önlemek amacıyla proof-of-work (PoW) benzeri bir mekanizma kullanıyor. Bir mesaj gönderdiğinizde genellikle iki önemli istek sırayla gider;
Birinci istek (sentinel/prepare) istemcinin belirli bir hesaplama yükünü yerine getirdiğini kanıtlayan bir token hazırlar. Bu istek engellenir veya değiştirilirse ikinci istek (asıl mesajı taşıyan) başarısız olur ve yanıt alınamaz. Bu nedenle proxy ile test yaparken sentinel/chat-requirements/prepare bu isteği değiştirmeden ilk olarak iletmeniz gerekir. Yoksa yanıt alamazsınız.
Bu davranışın ciddi bir güvenlik açığı olduğunu düşünmüyorum fakat paylaşmak istedim.

