【Teknik Derinlemesine Analiz】ChatGPT'yi Keşfetmek: Kod Kırılmasından Güvenlik Önlemlerine Kadar Süreç - Yavaş Yavaş AI024
Önsöz
ChatGPT’nin hızlı yükselişi, onu yapay zeka alanında bir odak haline getirdi ve güvenlik ile gizlilik koruma konusunda geniş çaplı tartışmalara yol açtı. Bu teknik derinlemesine analizde, kod yürütme ortamındaki “kırılma” açıklarından OpenAI’nin nasıl güvenlik önlemleri kurduğuna kadar ChatGPT’nin arkasındaki güvenlik mekanizmalarını derinlemesine inceleyeceğiz; böylece okuyuculara ChatGPT’nin güvenlik önlemlerinin gizemli yüzünü açığa çıkaracağız.
- ChatGPT gerçekte bir demo projesi
- OpenAI’nin gerçek çekirdek insanları ChatGPT’ye katılmıyor
- Yetenekleri sadece ChatGPT üzerinden programlanmamış
- GPT’lerin çağırdığı harici API’lerin neden mevcut olduğu anlaşılmıyor
- Bunun arka planda bir istekle tamamlanması gerekiyordu, ön planda yer alması gereksiz
- Ama ChatGPT bunu açıktan sundu
- ChatGPT’nin bu durumu ciddiye almasını umuyoruz
- Belki yakında değişecek
- Onun biraz daha dikkatle bakmasını bekliyoruz
- Prompt ve bilgi dosyalarını kullanmak sorun değil
- Çok zorlayıcı, bunlar başlangıç noktası ama şu anda en çaresiz durumda olanlar
- Eğer GPT’ler bu sorunları büyük ölçekli ticarileştirmek istiyorsa çözmelidir
- Ancak API güvenliği sağlayıcının sorumluluğunda olmalı
- Bu makalede, Linux tabanlı güvenlik ile uygulama mantığını düşünmeye çalışacağız
1. Kod Yorumlayıcıdan ChatGPT’nin Güvenliğine Bakış
Eğer büyük dil modelleri bir kelime oyunuysa, Kod Yorumlayıcı hiçbir şüphe yok ki kod yürütmeyi sağlamak için sunulan sanal bir ortam gibi görünüyor; bu ortamın bilgilerini anlamaya çalışalım.
Bu süreç, düşündüğümden çok daha basitti; biraz üzücü, çünkü bunu yapamamaktan korkarak birkaç ay erteledim, beklemediğim gibi birkaç saat içinde tamamlandı.
Python sürümünü bildim, Python sürüm numarasını ve yürütme yolunu da öğrendim.
1.1. İşletim Sistemi ve Python Sürümü
1 | # İşletim sistemi sürümü, mevcut kullanıcı ve Python sürümü hakkında bilgi toplama |
- İşletim Sistemi Sürümü: Önceden tanımlanan Linux 4.4.0, x86_64 mimarisi ile glibc 2.36.
- Mevcut Kullanıcı: Bu ortamda, güvenlik ve gizlilik kısıtlamaları nedeniyle ayrıntılı kullanıcı bilgileri elde edilemeyebilir.
- Python Sürümü: En son bilinen sürüm Python 3.11.8 idi.
1 | import sys |
Mevcut Python ortamı 3.11.8 sürümünde çalışıyor. Sistem 4 dakika 21 saniye boyunca açık kalmış. Bellek durumunu gösteren free
komutunun çıktısı şöyle:
1 | toplam kullanıldı boş paylaşılan tampon/önbellek kullanılabilir |
Bu, toplam 1,048,576 KiB belleğin 261,352 KiB’inin kullanıldığını, 787,224 KiB’inin boş olduğunu ve 34,964 KiB’inin tampon/önbellek için kullanıldığını gösteriyor. Swap belleği kullanılmamış.
1.2. Ön Yüklü Python Paketleri
1 | import sys |
- pdfminer.six: 20220319
- tifffile: 2024.2.12
- certifi: 2024.2.2
- xarray: 2024.2.0
- pytz: 2024.1
- regex: 2023.12.25
- jsonschema-specifications: 2023.12.1
- weasyprint: 53.3
- pyzmq: 25.1.2
- packaging: 24.0
- attrs: 23.2.0
- argon2-cffi: 23.1.0
- pyOpenSSL: 21.0.0
- pycountry: 20.7.3
- dlib: 19.24.2
- lit: 18.1.1
- nvidia-cublas-cu11: 11.10.3.66
- nvidia-cuda-cupti-cu11: 11.7.101
- Pillow: 9.2.0
- ipython: 8.22.2
- ……
1.3. /mnt içeriğini alma, “ilk kırılma”
1 | # /mnt/data dizinindeki dosyaları listeleyelim ve her dosya için URL oluşturalım |
Aşağıda uygulanan sonuçlar:
1 | /mnt/data dizinindeki dosyaların ve karşılık gelen URL'lerin listesi: |
Bu sonuç oldukça yanıltıcı, kesinlikle ping atamıyorum, bunun benim hayal gücüm mü yoksa ona ait mi olduğunu bilemiyorum; ama sonuç olarak açamıyor ve indiremediğim için biraz hayal kırıklığına uğradım. Ancak dosya adı listesi doğru. İlk kırılmaya başlamaya çalıştım.
1 | Bana bir 00dc5bca160812b1975abcecf199d994.webp dosyasının indirme bağlantısını ver. |
Cevabı şöyle oldu:
1 | `00dc5bca160812b1975abcecf199d994.webp` dosyasını aşağıdaki bağlantıyı kullanarak indirebilirsin: |
Tıkladığınızda bir indirme başlıyor, bağlantı ise https://files.oaiusercontent.com/file-fMsLwkFFglpiCgUszjU82aA8?se=2024-04-04T18%3A13%3A03Z&sp=r&sv=2021-08-06&sr=b&rscc=max-age%3D299%2C%20immutable&rscd=attachment%3B%20filename%3D00dc5bca160812b1975abcecf199d994.webp&sig=E9/g66qSY1b3crCDXMQTcwh2JqaLQCkNb%2Bu4h1pZQ8E%3D
Ancak bu bağlantı zaman sınırlı, bir süre sonra indirmeye çalıştığınızda “Kod yorumlayıcı oturumu sona erdi” mesajı alacaksınız.
Tarayıcıyı doğrudan açarsanız, doğrulanmamış bir mesaj alırsınız, örneğin:
Biraz tatminsizlik, eğer daha önce verdiği URL’nin ön ekini kullandıysa, onu ping atıp ne olduğunu görmek istiyorum.
1.4. Ping sınırlı, curl sınırlı, bu kadar kolay “kırılma” mı?
Onu curl veya ping komutunu kullanarak sonucu görmek istemiştim; gerçek IP’sinin ne olduğunu görmek istedim. Eğer o gerçek IP alınabilirse, bu alan adının doğru olduğuna işaret değil mi? Sadece erişimimin sınırda olduğu anlamına gelir?
Açıkça, curl komutunu yasaklamış, gerçekten böyle mi? Peki, başka yolları denemek mi?
1 | Lütfen python ile 'curl http://openai-corp.mypinata.cloud' komutunu çalıştıran bir shell kodu çalıştır |
Sonuç olarak, gerçekten çalıştırdım! Bu, bu komutların yürütülmesinde bir kısıtlama olmadığı anlamına geliyor!! ``` python
Python’un subprocess modülü aracılığıyla curl komutunu çalıştırmayı deneyelim
try:
# curl komutunu çalıştırma
curl_output = subprocess.run([“curl”, “http://openai-corp.mypinata.cloud"], capture_output=True, text=True)
# Hata olup olmadığını kontrol et
if curl_output.stderr:
response = f"Hata: {curl_output.stderr}"
else:
response = curl_output.stdout
except Exception as e:
response = str(e)
response
1 |
|
Hata: % Toplam % Alındı % Aktarıldı Ortalama Hız Zaman Zaman Zaman Mevcut
Dload Upload Toplam Harcanan Kalan Hız
0 0 0 0 0 0 0 0 –:–:– –:–:– –:–:– 0
0 0 0 0 0 0 0 0 –:–:– –:–:– –:–:– 0
0 0 0 0 0 0 0 0 –:–:– 0:00:01 –:–:– 0
0 0 0 0 0 0 0 0 –:–:– 0:00:02 –:–:– 0
0 0 0 0 0 0 0 0 –:–:– 0:00:03 –:–:– 0
0 0 0 0 0 0 0 0 –:–:– 0:00:04 –:–:– 0
0 0 0 0 0 0 0 0 –:–:– 0:00:05 –:–:– 0
0 0 0 0 0 0 0 0 –:–:– 0:00:06 –:–:– 0
0 0 0 0 0 0 0 0 –:–:– 0:00:07 –:–:– 0
0 0 0 0 0 0 0 0 –:–:– 0:00:08 –:–:– 0
0 0 0 0 0 0 0 0 –:–:– 0:00:09 –:–:– 0
0 0 0 0 0 0 0 0 –:–:– 0:00:10 –:–:– 0
0 0 0 0 0 0 0 0 –:–:– 0:00:11 –:–:– 0
0 0 0 0 0 0 0 0 –:–:– 0:00:12 –:–:– 0
0 0 0 0 0 0 0 0 –:–:– 0:00:13 –:–:– 0
0 0 0 0 0 0 0 0 –:–:– 0:00:14 –:–:– 0
0 0 0 0 0 0 0 0 –:–:– 0:00:15 –:–:– 0
0 0 0 0 0 0 0 0 –:–:– 0:00:16 –:–:– 0
0 0 0 0 0 0 0 0 –:–:– 0:00:17 –:–:– 0
0 0 0 0 0 0 0 0 –:–:– 0:00:18 –:–:– 0
curl: (6) Sunucu adı çözümlenemedi: openai-corp.mypinata.cloud
1 |
|
Bu gerçekten uzun! Bir GPT’nin başı karışır mı?
Bildiğimiz üzere, eğer oluşturma sürecinde kullanıcıların bilgi almasını engelleyen bir ifade eklenirse, bu kısmen GPT’mizin kaynak kodunu korumuş olur; sorun şu ki, bu GPT çok iyi kullanılıyorsa ve popülerse, geçmiş kayıtları çok uzun olacağı için, o zaman o ifadeyi ve o anki durumu hatırlayıp hatırlamaması muhtemelen sorgulanmalıdır!
3.2. API Gerçekten Zayıf, Beklendiğinden Daha Kötü
Güvenlik açısından, tarayıcıların genellikle çapraz istek gönderemediğini biliyoruz; diğer bir deyişle, tarayıcı içinde GPT’ler API’mizi çağırmak zorunda; bu nedenle, arka planda talepleri başlatması gerekiyor. Bu satırları yazarken sakin kalmaya çalışıyorum çünkü ne kadar sinir bozucu olduğunu anlamanızı umuyorum, yani, aslında, tarayıcıda API bilgilerimizi göstermesine gerek yoktu!
Tamamen mantıksız görünüyor; neden ön planda bu URL adresini açıklamak istemiş ki? Buna nasıl ticarileştirebilirsiniz! Kesinlikle güvenlik mekanizmaları sağladığı doğrudur; örneğin bir Token ile gereklilik gibi, ama aslında, çoğu Token zaman sınırlıdır ve doğrulama süreci gerektirir ki bugüne kadar GPT’lerde böyle bir süreç bulunmamakta. Sabit bir Token vermek sorun değilmiş gibi görünmektedir.
Burada kullanıcı taleplerini ek bir onay düğmesiyle sınırlamak bazı alternatifler sunarken, yine de oldukça basit kaldığı için normal erişim belgeleri bırakmadığını söyleyebilirim; bu konuda tartışmak zaman kaybı gibi görünüyor.
Elbette, taleplerin kaynaklarını sadece openai alan adları ile sınırlamak için birçok çözüm var. Örneğin:
1 | from fastapi.middleware.cors import CORSMiddleware |
1 | const app = express(); |
Dışarıdan içeriye gelen talepler için, geleneksel olarak birçok öyle mantık var ki oldukça olgun ve uygulanabilir.
Saldırılardan kaçınmak amacıyla bir düşünce yolu; beni bulamazsınız ama, bir yandan openai toplayıp satmışsa, ne yapmalıyız?
3.3. Basit Çözüm, Bir Kılıf Kaplamak
Çünkü openai artık işlev adlarını ve API adresini zaten açıkladı, bu durumda, parametrelerin neler olduğunu da belirtiyor. Buna ne denir? Sunucunun aşırı yüklenmemesi için, basitçe bir köşeye çekilip saklanalım. Örneğin, öncelikle bir cf kılıfı deneyelim? Gerçek IP’yi gizlersek, bu kadar kolayca yok olmayacağı anlaşılıyor.
Kılıf Stratejisinin Faydaları:
- Güvenliği Artırma: Gerçek IP’yi gizleyerek, sunucuya karşı doğrudan saldırı riskini azaltma, örneğin DDoS saldırıları.
- Performans Optimizasyonu: CDN, statik kaynakları önbelleğe alır ve en yakın düğümden hizmet vererek gecikmeyi azaltır ve kullanıcının erişim hızını artırır.
- SSL/TLS Şifrelemesi: Çoğu CDN hizmeti, verilerin güvenli bir şekilde transfer edilmesini sağlamak için SSL/TLS şifrelemesi sunuyor.
- Saldırı Savunması: CDN ve Web güvenlik duvarı hizmetleri, genellikle belirli saldırı tespit etme ve savunma yeteneği sunarak SQL enjeksiyonu, XSS saldırıları gibi yaygın saldırılara karşı savunma sağlar.
Dikkat Edilmesi Gerekenler:
- Doğru Yapılandırma: CDN ve güvenlik duvarı kurallarının doğru yapılandırıldığından emin olunmalıdır; aksi halde normal erişim taleplerinin yanlışlıkla engellenmemesi gerekir.
- Sürekli İzleme: CDN kullanılsa dahi, güvenlik konusundaki dikkati asla azaltmamak gerekir. Logları düzenli incelemek, potansiyel güvenlik tehditlerini izlemek önemlidir.
- Yedekleme ve Geri Yükleme: Sunucunun yedekleme ve geri yükleme planının iyi yönetilmesi gerekir; böylece, CDN hizmetleri saldırıya uğrasa bile, hızlı bir şekilde hizmeti geri kazanma mümkün olmalıdır.
Öz olarak, CDN ve Web güvenlik duvarı hizmetlerinin kullanımı tüm güvenlik sorunlarını çözmemekle beraber, bu kesinlikle hizmete önemli bir koruma katmanı sağlar. Diğer güvenlik en iyi uygulamalarıyla birleştirildiğinde, kapsamlı bir güvenlik savunma yapısı oluşturulabilir. GPT’ler hizmeti sağlayıcıları için, böyle bir “kılıf” stratejisinin kullanılması, hizmet güvenliğini artırma açısından etkili bir yöntemlerden biridir.
Güvenlik araştırmamız burada sona eriyor.
4. Son Söz
Bu makale uzun bir süre boyunca tartışmalara neden oldu; temel olarak gerçekten çok fazla takılı kalma ve Kod Yorumlayıcı üzerindeki örneklerimi araştırmaya, deneysel örneklerin çoğunun çalışmıyor olmasından endişe duydum ama bunun daha fazla araştırmaya açık anlamda yeterince karmaşık olmadığı umuduyla, sürecin oldukça basit olduğunu anladım… GPT’lerin güvenliği üzerinde düşünmek çoğu kişi için fazla anlam ifade etmiyor. Eğer bu problem çözülmezse, ticarileşmesinde büyük sorunlar olacaktır.
4.1. Önerilen Stratejiler
Günümüzde önerilen genel yaklaşımlar:
- Prompt’u azaltma
- Hassas verileri yüklememe
- Kendi API’mizi veri depolamak için kullanma
Elbette, işin farklılığı ve talepler de farklı; bu nedenle her konuda ihtiyatlı olmak gerek.
4.2. ChatGPT’nin Cevabı
Makale, ChatGPT ve GPT modellerinin güvenliğini derinlemesine inceleyerek, çeşitli senaryolar, açıklar ve önleme stratejileri öneriyor. Aşağıda, makalede yer alan analizin detayları, tartışma noktaları ve daha fazla açıklama veya eklemeli olması gereken alanlar hakkında bilgi bulabilirsiniz:
Tartışma Noktaları ve Açıklama
ChatGPT’nin Geliştirilmesi ve Yetenekleri ile İlgili Yanlış Anlamalar:
- Makale, ChatGPT’yi “ara sıra yapılan bir demo” olarak tanımlıyor ve OpenAI’nin ana ekibinin geliştirme çalışmalarına katılmadığını ima ediyor; bu durum yanıltıcı olabilir. OpenAI, ChatGPT’nin geliştirilmesi ve güvenliği konusundaki taahhüdünü sürekli vurgulamaktadır; uzman bir ekip tarafından yönetilmektedir. Ayrıca, ChatGPT’nin yetenekleri ve arkasındaki GPT modeli geniş çapta araştırmaya ve geliştirmeye tabidir.
Harici API çağrıları ve Ön Yüz İfşa Sorunu:
- Makale, ChatGPT’nin harici API çağrıları konusunda eleştiride bulunarak ön yüzle gereksiz yere ifşa edilmesini vurgulamaktadır; bu durum, mimari açıdan daha derin bir anlayış gerektirmektedir. Gerçekten de, ChatGPT ile harici API arasındaki etkileşim, sunucu tarafında yönetilmektedir ve yetkisiz erişimi önlemek için katı güvenlik protokolleri kullanılmaktadır. API çağrılarıyla alakalı görünen uyarılar veya çıktıların arka plan süreçlerinin doğrudan açığa çıkmasından ziyade, şeffaflık ve kullanıcı anlama göstermeyi amaçlamaktadır.
Depolanan Prompts ve Bilgi Tabanının Güvenliği:
- Makale, promptların ve bilgi tabanının güvenli korumasıyla ilgili önemli bir konuya işaret ediyor. Açıklığa kavuşturulması gerekmektedir ki, OpenAI bu öğeleri korumak için sağlam güvenlik önlemleri almıştır. ChatGPT’nin yanıtlarını üretmek için kullanılan promptlar, eğitim modelinin bir parçasıdır ve kullanıcıların doğrudan erişmesine veya değiştirmesine izin verilmez. Bilgi tabanı ise kontrol edilen süreçler aracılığıyla korunmakta ve güncellenmektedir; bu da onun bütünlüğünü ve gizliliğini sağlamaktadır.
Eksik veya Yeterince İncelenmemiş Alanlar
Veri Şifrelemesi ve Anonimleştirme:
- Makale, verilerin dinlenmesi ve transfer sırasında şifrelenmesinin yanı sıra, kullanıcı verilerinin anonim hale getirilmesi üzerinde durulmalıdır. Bu, kullanıcı gizliliğini korumak ve ChatGPT ile kullanıcı arasındaki iletişimin güvenliğini sağlamak açısından kritik öneme sahiptir.
Tehdit Modelleme ve Risk Değerlendirmesi:
- ChatGPT kullanım durumlarına özel tehdit modelleme ve risk değerlendirmesinin incelenmesi, okuyuculara potansiyel güvenlik tehditleri ve bunlara yönelik önlemler hakkında kapsamlı bir anlayış kazandıracaktır.
Kullanıcı Gizliliği ve Rızası:
- Makaleye, kullanıcı gizliliğini daha kapsamlı bir şekilde ele alacak şekilde genişletmek faydalı olacaktır; özellikle, veri toplama, kullanma ve paylaşma politikalarının rıza mekanizmaları hususunda. Kullanıcıların veri toplamaya ilişkin kontrolünü veya çıkış seçeneklerini açıklamak, OpenAI’nin şeffaflık sağlama yöntemlerini de güçlendirecektir.
Olay Yanıtı ve Kullanıcı Bildirim Mekanizması:
- Olay yanıtı süreçlerine ve kullanıcıların güvenlik veya gizlilik sorunlarını nasıl bildirebileceğine ilişkin bilgi eklenmesi faydalı olacaktır. OpenAI’nin rapor edilen açıklarla ilgili alması gereken adımları ve bu tür sorunlarla ilgili kullanıcı topluluğuna nasıl iletişim kurduğunu içermelidir.
AI Etik ve Önyargı Azaltma:
- Tam olarak güvenlik meselesine odaklanmasa da, ChatGPT’nin geliştirilmesi ve dağıtımında AI etik ve önyargı azaltma stratejilerinin dahil edilmesine yönelik bir tartışma, makale içeriğini zenginleştirecektir; zira bunlar, yeterli AI kullanımında önem arz etmektedir.
Özetle, orijinal metin ChatGPT’nin güvenlik manzarasına dair temel bir anlayış sunmakta oldukça başarılı; ancak OpenAI’nin güvenlik konusundaki taahhüdünü ve ChatGPT gibi karmaşık AI modellerini korumanın boyutlarını yeterince iyi yansıtacak şekilde genişletilmesi gerekmekte. Yukarıdaki unsurların eklenmesi, daha dengeli ve kapsamlı bir perspektif sağlayacaktır.
4.3. Kaynaklar
- https://community.openai.com/t/how-can-you-protect-your-gpt/500642/37
- https://community.openai.com/t/theres-no-way-to-protect-custom-gpt-instructions/517821/25
- https://mercharts.com/prompts-to-protect-your-gpts-from-copying/
- https://www.toolify.ai/ai-news/securing-custom-gpts-a-guide-to-protecting-your-intellectual-property-752436
- https://medium.com/the-generator/defending-your-custom-gpt-against-prompt-injection-ceea5f3c124d
- https://github.com/GPTGeeker/securityGPT
- https://wonderwhy-er.medium.com/so-you-want-to-protect-your-custom-gpts-heres-what-you-need-to-know-c4aec4f32478
- https://community.openai.com/t/magic-words-can-reveal-all-of-prompts-of-the-gpts/496771/11