mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
81 lines
7.7 KiB
Markdown
81 lines
7.7 KiB
Markdown
# DApps - Merkeziyetsiz Uygulamalar
|
||
|
||
{{#include ../banners/hacktricks-training.md}}
|
||
|
||
## DApp Nedir?
|
||
|
||
DApp, merkezi bir sunucu yerine, eşler arası bir ağda çalışan merkeziyetsiz bir uygulamadır. DApp'ler genellikle **blok zinciri teknolojisi** üzerine inşa edilir ve bu, veri şeffaflığı, güvenliği ve değişmezliği sağlamalıdır.
|
||
|
||
## Web3 DApp Mimarisi
|
||
|
||
[**bu gönderiye**](https://www.certik.com/resources/blog/web2-meets-web3-hacking-decentralized-applications) göre, Web3 DApp mimarisinin 3 farklı türü vardır:
|
||
|
||
### "API-siz" DApp'ler
|
||
|
||
Bu DApp'ler bir blok zincirinin üzerine inşa edilmiştir ve herhangi bir merkezi API veya arka uca dayanmaz. Blok zincirinin uygulamanın gerçek arka ucu olduğunu düşünebilirsiniz. **Tamamen merkeziyetsizdirler** ve doğrudan blok zinciri üzerinden erişilebilirler.
|
||
|
||
Blok zinciri ile etkileşimde bulunmak için istemci genellikle bir **cüzdan** kullanır. Cüzdan, işlemleri imzalar ve bunları blok zincirine gönderir. İstemci ayrıca blok zincirinden veri okumak için bir **düğüm** de kullanabilir.
|
||
|
||
### "API-Destekli" DApp'ler
|
||
|
||
Bu DApp'ler bir blok zincirinin üzerine inşa edilmiştir ancak genellikle bilgi toplamak için merkezi API'lere dayanır. **Çoğunlukla merkeziyetsizdirler** çünkü merkezi bir API'ye dayanıyor olsalar bile, DApp'in temel işlevselliği hala blok zincirindedir. İstemcinin blok zinciri ile iletişimi genellikle bir **cüzdan** aracılığıyla yapılır.
|
||
|
||
Bu tür bir DApp için iyi bir örnek bir **NFT mintleme uygulaması**dır. Sunucu, resimleri yüklemeye izin verir ancak mintleme, istemci tarafından bir cüzdan aracılığıyla yapılır.
|
||
|
||
### "Tam Ölçekli" DApp'ler
|
||
|
||
Bu DApp'ler bir blok zincirinin üzerine inşa edilmiştir ancak merkezi API'lere ve arka uç sunucularına da dayanır. **Kısmen merkeziyetsiz olabilirler** çünkü istemci bir cüzdan kullanarak blok zincirinde işlemler gerçekleştirebilir. Ancak genellikle **arka uç da blok zincirinde işlemler gerçekleştirebilir**.
|
||
|
||
Bu tür bir DApp için iyi bir örnek, varlık transferini gerçekleştirmek için farklı blok zincirlerindeki akıllı sözleşmelerle **iletişim kurmak** için bir offchain bileşen gerektiren bir çapraz zincir köprüsüdür.
|
||
|
||
## Web2 Açıkları
|
||
|
||
Web2 açıkları, etkileri değişiklik gösterse de, bu tür uygulamaları hala etkilemektedir:
|
||
|
||
- **İstemci tarafı açıkları**, Web3 DApp'lerde istemcinin genellikle bir cüzdan aracılığıyla **blok zincirinde işlemleri gerçekleştiren** kişi olması nedeniyle artan bir etkiye sahiptir. Bu, istemci tarafında JS kodunu çalıştırmayı başaran veya sayfanın içeriğiyle oynayan XSS gibi saldırıların, cüzdanla **etkileşimde bulunabilmesi** ve kullanıcının blok zincirinde istenmeyen işlemler gerçekleştirmesi için ikna edebilmesi nedeniyle daha büyük bir etki yaratabileceği anlamına gelir.
|
||
- Genellikle bu tür uygulamalarda istemcinin işlemleri cüzdanla imzalamadan önce gözden geçirebileceğini unutmayın. Ancak, saldırgan sayfanın içeriğiyle oynayabilirse, kullanıcının blok zincirinde istenmeyen bir işlemi gerçekleştirecek bir işlemi imzalaması için ikna edebilir.
|
||
- **Sunucu tarafı açıkları**, bir arka uç sunucusuna dayanan DApp'lerde hala mevcuttur. Bu açıkların etkisi, DApp'in mimarisine bağlı olacaktır. Ancak, bir saldırgan arka uçta **şirketin anahtarlarını** bulabilir ve akıllı sözleşmelerin fonlarına erişebilir veya kullanıcıların fonlarını veya NFT'lerini çalmalarına olanak tanıyan hesap ele geçirme gerçekleştirebilir.
|
||
|
||
Elbette, DApp bir arka uç kullanmıyorsa veya kullanılan arka uç yalnızca kamu zinciri verileri veya statik sayfalar sunuyorsa, DApp'in saldırı yüzeyi azalır.
|
||
|
||
## Web3 Saldırı Yüzeyi
|
||
|
||
Genel olarak bir DApp'in saldırı yüzeyinin azaltılmış olmasına rağmen, blok zincirinde her zaman birkaç güvenlik kontrolü yapıldığından, hala bir saldırgan tarafından istismar edilebilecek bazı saldırı vektörleri vardır.
|
||
|
||
Web3 DApp açıklarını aşağıdaki kategorilere gruplamak mümkün olabilir:
|
||
|
||
- **Yanlış Yönetilen Zincir İçi İşlemler**: yanlış biçimlendirilmiş veya kısıtlanmamış işlem API'leri, yanıt bekleme ve blok onaylama mantığının eksikliği, hassas verilerin açığa çıkması ve kötü niyetli veri yüklemelerine izin veren başarısız, geri alınmış veya dahili türdeki işlemlerin yanlış yönetimi.
|
||
|
||
- **Akıllı Sözleşme Tabanlı Arka Uç Saldırıları**: sözleşmeler ve veritabanları arasında hassas verilerin doğrulama olmadan depolanması veya senkronize edilmesi, kontrolsüz olay yayılımları veya sözleşme adresleri ve arka uç mantığını zehirleyebilecek istismar edilebilir sözleşme açıkları.
|
||
|
||
- **Hatalı Kripto Varlık İşlemleri**: farklı token türlerinin (yerel vs. ERC-20) yanlış işlenmesi, ondalık hassasiyetin göz ardı edilmesi, başarısız transferler veya iç işlemler ve doğrulama olmadan sahte, deflasyonist, yeniden temel atma veya kayma eğilimli token'ların kabul edilmesi, token meta verileri aracılığıyla yük enjeksiyonlarına olanak tanıması.
|
||
|
||
[**bu gönderiden**](https://www.certik.com/resources/blog/web2-meets-web3-hacking-decentralized-applications) bazı örnekler:
|
||
|
||
### Fonları İsraf Etme: Arka Ucu İşlem Yapmaya Zorlama
|
||
|
||
**`Sınırsız API ile Gazda İsraf Edilen Kripto`** senaryosunda, saldırgan arka ucu gaz tüketen bir akıllı sözleşme fonksiyonunu çağırmaya zorlayabilir. Saldırgan, sadece bir ETH hesap numarası göndererek ve herhangi bir limit olmadan, arka ucu akıllı sözleşmeyi kaydetmeye zorlayacak ve bu da gaz tüketecektir.
|
||
|
||
### DoS: Kötü İşlem Yönetim Süresi
|
||
|
||
**`Kötü İşlem Süresi Yönetimi DoS'a Yol Açar`** senaryosunda, arka ucun bir işlem gerçekleştirilene kadar HTTP isteğini açık tutacağı açıklanmaktadır; bu nedenle bir kullanıcı, arka uca birkaç HTTP isteği gönderebilir, bu da arka ucun tüm kaynaklarını tüketir ve bir DoS'a yol açar.
|
||
|
||
### Arka Uç<-->Blok Zinciri Senkronizasyonu - Yarış Durumu
|
||
|
||
**`Kötü İşlem Süresi Yönetimi Yarış Durumuna Yol Açar`** senaryosunda, bir oyunda kullanıcının arka uca bir para çekme talebi göndermesi mümkün olduğu açıklanmaktadır; bu, kullanıcının paralarını gönderecek ancak işlem hala işlenirken, kullanıcı bu paraları oyunda öğeler satın almak için kullanabilecektir, bu da onlara ücretsiz olarak verilmesine neden olur.
|
||
|
||
Başka bir örnek, arka ucun işlemin onaylanmasını beklemeden kullanıcıya öğeyi hemen vermesi nedeniyle aynı paraları farklı öğeleri satın almak için kullanabilmektir; bu da kullanıcının blok zincirindeki bakiyesinin azaltılmasını beklemeden gerçekleşir.
|
||
|
||
### Akıllı Sözleşme Adresi Doğrulaması
|
||
|
||
**`Köprü Arka Ucu Akıllı Sözleşme Adresi Doğrulaması Yapmıyor`** senaryosunda, arka ucun akıllı sözleşmenin adresini kontrol ettiği açıklanmaktadır; bu nedenle bir saldırgan sahte bir akıllı sözleşme dağıtabilir, üzerine fon koyabilir, işlemi arka uca gönderebilir ve arka uç kullanıcının gerçek akıllı sözleşmeye fon gönderdiğini düşünecek ve kullanıcıya token verecektir.
|
||
|
||
### Varlık Sınıflarının Yanlış Yönetimi
|
||
|
||
**`Varlık Sınıflarının Yanlış Yönetimi`** senaryosunda, arka ucun bir adresteki bir dolandırıcılık NFT'sini 1 MATIC ile karıştırdığı açıklanmaktadır; bu da saldırgana adrese yüzlerce dolandırıcılık NFT'si göndermesine ve her biri için platformdan 1 MATIC almasına olanak tanımaktadır.
|
||
|
||
## Referanslar
|
||
- [https://www.certik.com/resources/blog/web2-meets-web3-hacking-decentralized-applications](https://www.certik.com/resources/blog/web2-meets-web3-hacking-decentralized-applications)
|
||
|
||
{{#include ../banners/hacktricks-training.md}}
|