1. Anasayfa
  2. 100 Günde Solidity

🧵 100GündeSolidity 074 – Hacks : tx.origin ile Kimlik Avı (Phishing with tx.origin)

🧵 100GündeSolidity 074 – Hacks : tx.origin ile Kimlik Avı (Phishing with tx.origin)
Kimlik Avı
0

Kimlik Avı

Merhaba,

Solidity Öğren E-Bülten Serisi’nin 74. sayısına hoş geldiniz. Bu sayımızda, tx.origin ile yapılan kimlik avı saldırılarını ele alacağız. Tx.origin, Ethereum blok zincirindeki bir değişkendir ve bu değişken, bir işlemi başlatan hesabın orijinal kimliğini sağlar. Ancak, tx.origin kullanımı, kötü niyetli kişiler tarafından istismar edilebilir ve kullanıcıların bilgilerini ele geçirmek için kullanılabilir.

Bu sayıda, tx.origin ile kimlik avı saldırılarını tanımlayacak, nasıl yapıldığını ve nasıl önlem alınabileceğini açıklayacağız. Ayrıca, akıllı sözleşmelerde güvenlik önlemlerini ve tx.origin ile yapılan saldırılara örnekleri de inceleyeceğiz.

tx.origin kullanımının riskleri ve önlemleri hakkında bilinçlenmek için bu e-bülteni dikkatlice okumanızı öneriyoruz.

tx.origin nedir ve ne işe yarar?

Tx.origin, Ethereum blok zincirindeki bir değişkendir ve bir işlemi başlatan hesabın orijinal kimliğini sağlar. Yani, bir akıllı sözleşme bir işlemi işlediğinde, tx.origin değişkeni, bu işlemi başlatan hesabın Ethereum hesap adresini sağlar.

Tx.origin, birçok akıllı sözleşme tarafından kullanılan bir değişkendir. Örneğin, bir sözleşme, bir işlemi başlatan hesabın bakiyesini kontrol etmek veya işlemleri izlemek için tx.origin değişkenini kullanabilir. Ancak, tx.origin kullanımı kötü niyetli kişiler tarafından istismar edilebilir ve kimlik avı saldırılarına yol açabilir.

Kimlik avı nedir ve neden önemlidir?

Kimlik avı, sahte web siteleri, e-postalar veya mesajlar aracılığıyla kişisel veya hassas bilgileri elde etmek için kullanılan bir dolandırıcılık yöntemidir. Bu bilgiler arasında kullanıcı adları, parolalar, kredi kartı bilgileri, sosyal güvenlik numaraları ve diğer kimlik bilgileri bulunabilir.

Kimlik avı saldırıları son yıllarda artmıştır ve özellikle kripto para birimleri gibi dijital varlıkların yükselişiyle birlikte, kripto yatırımcıları hedef alan kimlik avı saldırıları da artmıştır. Bu saldırıların sonucu olarak, kullanıcılar ciddi maddi kayıplar yaşayabilir ve kişisel bilgileri de açığa çıkabilir.

Bu nedenle, kimlik avı saldırılarını önlemek ve kullanıcıların bilgilerini korumak için alınması gereken önlemler oldukça önemlidir. Tx.origin ile kimlik avı da bu tür saldırılardan biridir ve bu konuda farkındalık yaratmak ve önlemler almak önemlidir.

tx.origin ile kimlik avı nasıl yapılır?

Tx.origin ile kimlik avı saldırısı, bir akıllı sözleşmenin tx.origin değişkenini kullanarak, bir kullanıcının kimliğini ele geçirmek için yapılan bir saldırıdır. Bu saldırı, bir dolandırıcının sahte bir web sitesi veya uygulama oluşturarak kullanıcıları bu web sitesine veya uygulamaya yönlendirmesiyle gerçekleştirilir.

Saldırganlar, kullanıcılara bu sahte web sitesinde veya uygulamada, bir işlem yapmaları için talimatlar verirler. Bu işlem, akıllı sözleşmenin tx.origin değişkenini kullanarak, kullanıcının kimliğini ele geçirir. Saldırganlar daha sonra, bu kimlik bilgilerini kullanarak, kullanıcının hesabını ele geçirebilir ve varlıklarını çalabilir.

Örneğin, bir saldırgan bir sahte kripto borsası oluşturarak, kullanıcılara borsada işlem yapmaları için talimatlar verebilir. Bu işlemler, bir akıllı sözleşme aracılığıyla gerçekleştirilebilir ve bu sözleşme, tx.origin değişkenini kullanarak kullanıcının kimliğini ele geçirebilir. Saldırgan daha sonra, kullanıcının varlıklarını bu borsada çalabilir.

Bu nedenle, kullanıcıların sahte web siteleri ve uygulamaları tanımaları ve kimlik bilgilerini paylaşmadan önce dikkatli olmaları önemlidir. Ayrıca, akıllı sözleşmeleri ve tx.origin değişkenini kullanmadan önce, güvenlik önlemlerini ve iyi kodlama uygulamalarını takip etmek de önemlidir.

tx.origin kullanımını önlemek için öneriler nelerdir?

tx.origin kullanımını önlemek için aşağıdaki önerileri uygulayabilirsiniz:

  1. msg.sender kullanın: Akıllı sözleşmelerde tx.origin yerine msg.sender kullanılması daha güvenlidir. Çünkü msg.sender, işlemi başlatan hesabın değil, sözleşmenin doğrudan çağrıldığı hesabın adresini sağlar.
  2. Veri validasyonu yapın: Sözleşmelerinize giriş parametrelerinin doğru olduğunu kontrol edin. Veri validasyonu, kötü amaçlı girişlerin işlenmesini engelleyerek sözleşmenizin güvenliğini artırır.
  3. Erişim kontrolü sağlayın: Kullanıcıların sözleşmelerinize erişimini kontrol etmek için erişim kontrol mekanizmaları ekleyin. Bu mekanizmalar, sözleşmelerinize erişim izinlerini kontrol ederek, istenmeyen kullanıcıların sözleşmelerinizi çağırmalarını engeller.
  4. İki faktörlü kimlik doğrulama kullanın: Sözleşmelerinize erişim için iki faktörlü kimlik doğrulama gibi güvenlik önlemleri ekleyin. Bu, saldırganların sözleşmelerinize erişimini engeller.
  5. Doğru adresi kullanın: Kullanıcıları, doğru adresi kullanmaları konusunda uyarın. Kullanıcılar, resmi web sitesinden veya doğrudan doğru adresi kullanarak sözleşmelerinize erişmelidirler.
  6. Güvenlik açıklarını test edin: Sözleşmelerinize güvenlik testleri uygulayarak, güvenlik açıklarını tespit edebilir ve giderilebilirsiniz.

Bu öneriler, tx.origin kullanımını önlemenin yanı sıra, akıllı sözleşmelerinizi daha güvenli hale getirecektir.

Akıllı sözleşmelerde güvenlik önlemleri nelerdir?

Akıllı sözleşmelerde güvenlik önlemleri şunları içerir:

  1. Veri validasyonu: Akıllı sözleşmelerdeki girdilerin doğruluğunu doğrulamak için veri validasyonu yapılmalıdır. Bu, kötü amaçlı girdilerin işlenmesini engelleyerek sözleşmenin güvenliğini artırır.
  2. Erişim kontrolü: Sözleşmelere erişimi kontrol eden bir mekanizma eklemek önemlidir. Bu mekanizmalar, sözleşmelere erişim izinlerini kontrol ederek, istenmeyen kullanıcıların sözleşmeleri çağırmalarını engeller.
  3. Sınırlandırılmış fonksiyonlar: Sadece gerektiğinde çalışan, sınırlı işlevlere sahip sözleşmeler oluşturun. Bu, kötü amaçlı kullanıcıların sözleşmelerinizi manipüle etmelerini engeller.
  4. Gas limiti: Akıllı sözleşmelerin işlem yaparken kullanabileceği maksimum gas limitini belirleyin. Bu, istenmeyen işlemlerin sözleşmelerinizi boğmasını engelleyebilir.
  5. İki faktörlü kimlik doğrulama: Sözleşmelerinize erişim için iki faktörlü kimlik doğrulama gibi güvenlik önlemleri ekleyin. Bu, saldırganların sözleşmelerinize erişimini engeller.
  6. Ayrıntılı ve açık kaynak kodlu sözleşmeler: Akıllı sözleşmelerinizi mümkün olduğunca ayrıntılı ve açık kaynak kodlu olarak yazın. Bu, diğer geliştiricilerin ve güvenlik uzmanlarının sözleşmelerinizi inceleyerek güvenlik açıklarını tespit etmelerine yardımcı olur.
  7. Testler: Sözleşmelerinizi test edin ve güvenlik testleri uygulayın. Bu, güvenlik açıklarını tespit ederek, düzeltilebilir hale getirebilir.
  8. Güncelleme mekanizması: Sözleşmelerinizi güncellemek için bir mekanizma ekleyin. Bu, güvenlik açıklarını düzeltmek veya yeni özellikler eklemek için gerektiğinde sözleşmeleri güncellemenize olanak tanır.

Bu önlemler, akıllı sözleşmelerinizi daha güvenli hale getirerek, kullanıcıların fonlarının veya verilerinin çalınmasını önleyebilir.

tx.origin ile yapılan saldırılar örnekleri ve çözümleri

tx.origin ile yapılan saldırılar örnekleri şunlardır:

  1. Kimlik avı saldırısı: Saldırganlar, tx.origin kullanarak sahte bir kimlik oluşturarak kullanıcıları sahte web sitelerine yönlendirir ve kullanıcıların özel anahtarlarını veya diğer hassas bilgilerini ele geçirirler.
  2. Erişim kontrolü saldırısı: Saldırganlar, tx.origin kullanarak sözleşmeye doğrudan erişemezler, ancak sözleşmeye erişmeye çalışan bir aracı kullanarak sözleşmeye erişebilirler.
  3. Fon çalma saldırısı: Saldırganlar, tx.origin kullanarak sözleşmeler arasında fon transferi yaparlar ve kullanıcıların fonlarını çalarlar.

tx.origin ile yapılan saldırıların çözümleri şunlardır:

  1. Doğrulama ve erişim kontrolü mekanizmaları ekleyin: Akıllı sözleşmelerinize doğrulama ve erişim kontrolü mekanizmaları ekleyerek, kötü amaçlı kullanıcıların sözleşmelerinize erişimini engelleyebilirsiniz.
  2. Fonksiyonlarınızı sınırlayın: Sadece ihtiyacınız olan fonksiyonları kullanarak, tx.origin kullanarak yapılabilecek saldırıların sayısını azaltabilirsiniz.
  3. İki faktörlü kimlik doğrulama gibi ek güvenlik önlemleri ekleyin: Kullanıcıların sözleşmelerinize erişimini güvenli hale getirmek için iki faktörlü kimlik doğrulama gibi ek güvenlik önlemleri ekleyin.
  4. Güvenlik testleri uygulayın: Sözleşmelerinizi güvenlik testlerine tabi tutarak, tx.origin ile yapılabilecek saldırıları tespit edebilir ve düzeltme şansınızı artırabilirsiniz.
  5. Ayrıntılı ve açık kaynak kodlu sözleşmeler: Sözleşmelerinizi mümkün olduğunca ayrıntılı ve açık kaynak kodlu olarak yazarak, diğer geliştiricilerin ve güvenlik uzmanlarının sözleşmelerinizi inceleyerek güvenlik açıklarını tespit etmelerine olanak tanıyabilirsiniz.

Akıllı Sözleşme Analizi

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.17;

/*
Wallet is a simple contract where only the owner should be able to transfer
Ether to another address. Wallet.transfer() uses tx.origin to check that the
caller is the owner. Let's see how we can hack this contract
*/

/*
1. Alice deploys Wallet with 10 Ether
2. Eve deploys Attack with the address of Alice's Wallet contract.
3. Eve tricks Alice to call Attack.attack()
4. Eve successfully stole Ether from Alice's wallet

What happened?
Alice was tricked into calling Attack.attack(). Inside Attack.attack(), it
requested a transfer of all funds in Alice's wallet to Eve's address.
Since tx.origin in Wallet.transfer() is equal to Alice's address,
it authorized the transfer. The wallet transferred all Ether to Eve.
*/

contract Wallet {
    address public owner;

    constructor() payable {
        owner = msg.sender;
    }

    function transfer(address payable _to, uint _amount) public {
        require(tx.origin == owner, "Not owner");

        (bool sent, ) = _to.call{value: _amount}("");
        require(sent, "Failed to send Ether");
    }
}

contract Attack {
    address payable public owner;
    Wallet wallet;

    constructor(Wallet _wallet) {
        wallet = Wallet(_wallet);
        owner = payable(msg.sender);
    }

    function attack() public {
        wallet.transfer(owner, address(wallet).balance);
    }
}
function transfer(address payable _to, uint256 _amount) public {
  require(msg.sender == owner, "Not owner");

  (bool sent, ) = _to.call{ value: _amount }("");
  require(sent, "Failed to send Ether");
}

tx.origin ile kimlik avı:

Bu akıllı sözleşme, tx.origin ve msg.sender arasındaki farkı açıklamak için bir örnek sunuyor. Ancak, tx.origin’in kullanımının güvenlik açısından zararlı olduğunu gösteriyor. Bu nedenle, tx.origin yerine msg.sender kullanılması daha güvenlidir.

Güvenlik Açığı:

Bu akıllı sözleşme, bir sahibinin yalnızca kendisinin çağırabileceği bir işlevi, kötü niyetli bir akıllı sözleşme tarafından sahibini kandırarak çağrılabilmesi durumunda bir zafiyet içeriyor. Bu zafiyet, bir saldırganın sahibi yanıltarak Wallet.transfer() işlevini çağırmasına izin veriyor ve tx.origin ile sahiplik doğrulanıyor. Sonuç olarak, tüm Ether sahibinin cüzdanından saldırgana transfer ediliyor.

Önleyici Teknikler:

Bu akıllı sözleşme, msg.sender’ın kullanımının daha güvenli olduğunu vurguluyor. msg.sender, doğrudan sözleşme tarafından çağrılan adresi temsil ederken, tx.origin, ilk çağıran adresi temsil eder ve bu, sahte kimlik doğrulama saldırılarına izin verebilir. msg.sender kullanımı, sahibi yalnızca kendisinin transfer yapabileceği gibi, bu tür bir saldırıya karşı koruma sağlar.

Sonuç: Tx.origin kullanımının riskleri ve önlemleri hakkında bilinçlenmek

Tx.origin kullanımının riskleri, bir saldırganın kullanıcının kimliğini çalmasına izin vermesidir. Bu saldırı türü, sahte kimlik doğrulama saldırısı olarak adlandırılır ve bir akıllı sözleşme, kullanıcının ilk çağıran adresi doğruladığı durumlarda gerçekleştirilebilir. Tx.origin yerine msg.sender kullanmak, bu tür saldırıları önleyebilir çünkü msg.sender, doğrudan sözleşme tarafından çağrılan adresi temsil eder ve sahte kimlik doğrulama saldırılarını engeller.

Bu nedenle, akıllı sözleşme geliştiricileri, tx.origin yerine msg.sender kullanmayı tercih etmelidirler. Ayrıca, akıllı sözleşmelerin doğru bir şekilde test edilmesi ve güvenliği sağlamak için en iyi uygulamaların kullanılması, kullanıcıların cüzdanlarındaki varlıklarının güvenliğini sağlamak için önemlidir. Kullanıcılar da, cüzdanlarında varlıklarıyla ilgili işlemleri yapmadan önce işlemin kaynağına ve güvenlik önlemlerine dikkat etmelidirler. Bu, Ethereum topluluğunun güvenliğini sağlamak için önemli bir adımdır.

🔒 #Solidity geliştiricileri ve #Ethereum kullanıcıları, tx.origin kullanımının doğurabileceği kimlik avı riskleri hakkında bilinçlenmeli! Tx.origin yerine msg.sender kullanımının önemi ve akıllı sözleşme güvenliği hakkında daha fazla bilgi için Solidity Öğren e-bülten serisine göz atın. #100DaysOfSolidity

Solidity Programlama Dili Öğrenme yolculuğunuz hakkında daha iyi rehberlik almak için Solidity nedir? Ethereum Akıllı Sözleşmelerinin Dili Rehberi içeriğimize göz atın. Dilerseniz Yeni Başlayanlar için Solidity – Akıllı Sözleşme Geliştirme Hızlandırılmış Kursuna katılın.

Çalışmaya nereden başlayacağım diyenler için Blockchain ​​Developer Olmak İçin Yol Haritası içeriğine de muhakkak bakın.

Gelin aklınızdaki soruları SUPERPEER sohbetinde cevaplayalım.

Bu makaleyi okuduğunuz için teşekkürler! Bana destek olmak isterseniz;

Beni TwitterLinkedin ve YouTube‘da takip edin.

Kısa bir yorum bırakmayı UNUTMAYIN!

solidity101 - Solidity, 2015 yılında Christian Reitwiessner liderliğinde piyasaya sürülen, büyük harf kullanımına göre ikinci en büyük kripto para piyasası olan Ethereum tarafından oluşturulan yepyeni bir programlama dilidir.

Yazarın Profili

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir