ERC20 akıllı sözleşme tamsayı taşması güvenlik açığı açıklaması

Chen Libo, Yin Tingting, Ni Yuandong, Zhang Chao

(Tsinghua-360 Kurumsal Güvenlik Ortak Araştırma Merkezi (hazırlık aşamasında), Pekin 100015)

2016'da The DAO'nun 60 milyon $ 'lık çalınmasından başlayarak ABD zincirinin BEC değerinin sıfıra [2] döndürülmesine kadar, BAI ve EDU'nun keyfi hesaplarına [3-4], kötü niyetli sözleşmelerin sanal makinelere sızarak madencilere zarar vermesine izin veren son EOS güvenlik açığına aktarımlar Düğüm [5], "akıllı sözleşme" blockchain güvenliğinin en zor etkilenen alanı haline geldi. "Tsinghua-360 Kurumsal Güvenlik Ortak Araştırma Merkezi" ekibi, blok zinciri güvenliği konusunda sürekli araştırmalar yürüttü ve otomatik güvenlik açığı tarama araçları geliştirdi. Son zamanlarda, aşırı para basımına, madeni paraların aşırı satın alınmasına ve rastgele para basmaya neden olabilecek birkaç yeni tamsayı taşması güvenlik açığı keşfedildi. , Yüksek satış, düşük gelir, yetersiz ve artan holdingler ve diğer ciddi zararlar.

Çin Kütüphanesi Sınıflandırma Numarası: TP393.08

Belge tanımlama kodu: Bir

DOI: 10.19358 / j.issn.2096-5133.2018.08.001

Teklif biçimi: Chen Libo, Yin Tingting, Ni Yuandong, vb. ERC20 akıllı sözleşme tamsayı taşması güvenlik açığı açıklaması J Information. Bilgi Teknolojisi ve Ağ Güvenliği, 2018, 37 (8): 3-6.

ERC20 akıllı sözleşmelerinde bulunan düzinelerce tamsayı taşma güvenlik açığı

Chen Libo, Yin Tingting, Ni Yuandong, Zhang Chao

(Tsinghua Üniversitesi-360 Enterprise Security Group Ortak Araştırma Merkezi, Pekin 100015, Çin)

Öz: 2016'da, DAO 60 milyon ABD doları karşılığında çalındı ve daha sonra Güzellik Zinciri'nin (BEC) değeri sıfır oldu ve BAI ve EDU herhangi bir hesaba aktarıldı. Daha da kötüsü, EOS güvenlik açığı son zamanlarda kötü niyetli sözleşmelerin sanal makinelere girmesine izin verdi Akıllı sözleşme, blockchain'in en çok etkilenen alanı haline geldi. overMint, overBuy, mintAny, underSell, owerUnderfolw ve diğer ciddi tehditlere neden olabilecek güvenlik açıkları.

Anahtar kelimeler: akıllı sözleşme; blok zinciri; güvenlik açığı taraması

0 Önsöz

Blockchain 2.0'ın temsili teknolojisi olarak akıllı sözleşmeler, blok zincirlerinin merkezi olmayan ve dağıtılmış özelliklerine uyarlanmıştır.Bağımsız çalışma ve kurcalamama gibi mükemmel özelliklere sahiptirler ve finansal araçlar dahil çeşitli dağıtılmış uygulamaları uygulamak için kullanılabilirler. Geliştiriciler işlem mantığını kendileri tanımlayabilir ve geliştirme kodunu zincire yayınlayabilirler Sözleşme kodu, madenci düğümünün sanal makine ortamında (EVM gibi) yürütülür. Sözleşme işlemi bloğa paketlendikten sonra, zincir üzerindeki düğümler aynı kodu yürütür ve böylece zincir üzerindeki veri durumunu eşzamanlı olarak değiştirir. Bu nedenle, sözleşmenin birden fazla katılımcısının güven tesis etmesine gerek olmadığı gibi birbirlerini aldatamazlar.

Geleneksel programlar gibi, akıllı sözleşmelerin de kaçınılmaz olarak güvenlik açıkları vardır. Geleneksel programın aksine, sözleşme açık bir blok zinciri ağında çalışır ve keyfi olarak çağrılabilir ve sözleşmenin yürütülmesi "değişmez" bir etkiye sahiptir, bu da sözleşmenin savunmasızlığı istismar edildikten sonra daha fazla zarara yol açar [6] . BEC'deki ve diğer sözleşmelerdeki yukarıda bahsedilen tamsayı taşması güvenlik açığı tipik bir örnektir: Saldırganın güvenlik açığından yararlanması şaşırtıcı miktarda kayba neden olmuştur.

Tam sayı taşması, birçok ciddi kazaya neden olan yaygın bir yüksek riskli güvenlik açığıdır. 1996 yılında, Ariane 5 taşıyıcı roketi fırlatıldıktan 37 saniye sonra parçalandı ve patladı, bunun nedeni tamsayı taşmasıydı [7]. Tamsayı taşması prensibi şudur: bilgisayardaki tamsayı değişkeninin üst ve alt sınırları vardır.Aritmetik işlemde sınır dışı bir durum varsa, yani tamsayı türünün maksimum aralığının ötesinde, sayı kadrandaki saat ibresi gibi 12'den 1'e kadar maksimum bir değer olacaktır. Minimum bir değere değiştirin veya doğrudan sıfıra dönün. Bu tür bir sınır dışı durum, geleneksel yazılım programlarında çok yaygındır, ancak güvenlik risklerinin olup olmadığı programın içeriğine bağlıdır. Taşmanın bir kısmı zararsızdır (TCP sıra numaraları vb.) Veya kasıtlı olarak ortaya çıkar (karma işlemleri vb. İçin kullanılanlar gibi). Tamsayı taşması güvenlik açığı tespiti ve doğrulaması zordur, programcıların hata yapması çok kolaydır ve otomatik tespit yöntemlerinin en büyük zorluğu, çok sayıda yanlış alarmı önlemek için aday taşmalarının gerçekten zarara neden olup olmadığına karar vermektir.

1 Otomatik madencilik

"Tsinghua-360 Kurumsal Güvenlik Ortak Araştırma Merkezi" ChainTrust ekip üyeleri, yazılım güvenlik açığı madenciliğinde yılların deneyiminden tam anlamıyla yararlanır ve yüksek riskli tamsayı taşması güvenlik açıklarını verimli bir şekilde araştırabilen akıllı sözleşmeler için otomatik algılama araçları geliştirir. Algılama aracı, tamsayı taşma noktalarının bağlam anlamlarını doğru bir şekilde oluşturarak, zararsız taşmalar ve zararlı taşmalar arasında etkili bir şekilde ayrım yapmak için sembolik yürütme ve kusur analizi gibi teknikler kullanır; bu, güvenlik açıklarının yanlış pozitif ve yanlış negatif oranlarını önemli ölçüde azaltabilir.

Ekip şimdiye kadar Etherscan üzerinde en iyi 470 token sözleşmesini test etti.Kaynak kodu sağlamayan, kaynak kodunu tam olarak taramayan veya çok uzun süren sözleşmeler hariç, ekip sonunda 390 sözleşmeyi tamamen analiz etti. Ekip, analiz edilen sözleşmeler arasında tamsayı taşma güvenlik sorunları olan toplam 25 akıllı sözleşme buldu.Uygulama, temel olarak aşağıdaki 6 tür yeni tehlike içeren 5 CVE numarası aldı.

Ekip üyeleri, "Küresel EOS Geliştiricileri Konferansı" nda ilk kez bazı güvenlik açıklarını açıkladı. Bu rapor, toplumun güvenli ve sağlıklı gelişimini desteklemek için ayrıntılı açıklamalar yapacaktır.

2 Yeni güvenlik açıklarının ayrıntıları

2.1 underSell: pahalı ve yakın düşük satış (CVE-2018-11811)

Yönetici, sözleşmedeki parametreleri değiştirerek taşma boşlukları yaratır, bu da kullanıcıların jetonu çekip aktardıktan sonra ETH almamasına (veya çok az miktarda ETH almasına) neden olarak kullanıcıya ekonomik kayıplara neden olur.

Güvenlik açığı örneği: İnternet Düğüm Belirteci (INT) ile sözleşme yapın.

Güvenlik açığının konumu: Şekil 1'de gösterildiği gibi 175 numaralı satır.

Şekil 1 Yüksek satış ve düşük kapanıştaki güvenlik açıkları

Güvenlik açığı saldırı etkisi: Kullanıcı parayı çektikten sonra karşılık gelen ETH miktarını alamaz.

Güvenlik açığı ilkesi: sellPrice dikkatle oluşturulmuş büyük bir sayıya değiştirildikten sonra, miktar * sellPrice'ın sonucu, tamsayı değişkeninin (uint256) maksimum değerinden daha büyük olabilir, bir tamsayı taşması oluşur ve minimum değer veya hatta sıfır olur. Program anlambiliminde, bu değer kullanıcının çekmesi gereken ETH miktarını hesaplamak için kullanılır ve 175. satırda doğrulanır. Ancak, değer minimum değere taşındıktan sonra, 175. satırın doğrulamasından kaçabilir ve kullanıcıya neden olabilir. Token satıldıktan sonra yalnızca küçük bir miktar (veya hiç) ETH elde edilebilir.

2.2 ownerUnderflow: taşma birikimi (CVE-2018-11687)

Belirli koşullar altında yönetici, sözleşmedeki sızdıran madeni para verme işlevini çağırarak bir alt akış oluşturabilir, böylece kendi hesabının bakiyesinde keyfi bir artış gerçekleştirebilir.

Güvenlik açığı örneği: Bitcoin Red (BTCR) sözleşmesi

Güvenlik açığının konumu: Şekil 2'de gösterildiği gibi 41 numaralı satır.

Şekil 2 Underflow güvenlik açığı

Güvenlik açığı saldırı etkisi: Yönetici, bir adrese normal bir para basma işlemi gerçekleştirdi ve hesabının bakiyesini gizlice çok büyük bir rakama değiştirdi.

Güvenlik açığı ilkesi: distributeBTR işlevinin asıl amacı, yöneticinin belirli bir miktarda tokenı belirtilen adrese dağıtması ve ilgili token sayısını kendi hesabından azaltmasıdır. Yönetici hesabının bakiyesini azaltma işlemi bakiyelerdir [sahip] - = 2000 * 10 ** 8 ve işlemin sonucu, işaretsiz bir tam sayı türü olan bakiyelerde [sahip] saklanacaktır. Yöneticinin bakiyesinin kendisi 2000 * 10 ** 8'den az olduğunda, çıkarma hesaplama sonucu negatif bir değerdir ve maksimum değer olan işaretsiz bir tam sayı olarak yorumlanır.

2.3 mintAny: İsteyerek basım (CVE-2018-11812)

Yönetici, bir adrese jeton eklemek için para basma işlevini çağırdığında, taşma güvenlik açığı, yalnızca belirteçleri artırabilen işlev sınırını aşmak ve adresteki belirteç sayısını azaltmak, böylece herhangi bir hesap bakiyesinde keyfi tahrifat (artış veya azalma) elde etmek için kullanılabilir. . Testte, 18 sözleşmede benzer güvenlik sorunları var.

Güvenlik açığı örneği: PolyAi (AI) ile sözleşme yapın

Güvenlik açığının konumu: Şekil 3'te gösterildiği gibi 132 numaralı satır.

Şekil 3 Rastgele para basmanın savunmasızlığı

Güvenlik açığı saldırısı etkisi: Yönetici, sözleşme kısıtlamalarını atlayabilir ve tüm adreslerin belirteç bakiyesini keyfi olarak değiştirebilir.

Güvenlik açığı ilkesi: Son derece büyük bir mintedAmount oluşturarak, saldırgan balanceOf [target] + mintedAmount değerinin tamsayı taşmasına neden olur ve hesaplama sonucu minimum değer olur.

2.4 overMint: Fazla para basma (CVE-2018-11809)

Yönetici, kötü amaçlı parametreler oluşturarak, programda belirtilen jeton basımının üst sınırını atlayabilir ve fazla madeni para elde edebilir. Sözleşmede Playkey (PKT) bu tür güvenlik açıklarına sahiptir, bu da sözleşmedeki para basma sınırının boşuna olmasına neden olur ve böylece herhangi bir sayıda token çıkarır. Ek olarak, Nexxus (NXX) ve Fujinto (NTO) iki sözleşmenin benzer güvenlik açıklarına sahip olduğu da bulundu.Bu iki sözleşmenin jeton üst sınırı yoktur, ancak aynı yöntem, toplam coin arzını (totalSupply) kaydetmek için sözleşmelerden birini aşabilir. Değişkenin değeri, onu piyasada fiilen dolaşan toplam madeni para sayısıyla tutarsız hale getirir.

Güvenlik açığı örneği: Sözleşmeli Oyun Anahtarı (PKT)

Güvenlik açığının konumu: Şekil 4'te gösterildiği gibi 237 numaralı hat.

Şekil 4 Aşırı basmanın savunmasızlığı

Güvenlik açığı saldırı etkisi: Yönetici, çıkarılan coinlerin (totalSupply) herhangi bir değere kadar toplam arzını kurcalayabilir ve fazla token vermek için sözleşmedeki para basma sınırını atlayabilir.

Güvenlik açığı ilkesi: _value, işlev çağrıldığında dikkatlice oluşturulmuş bir maksimum değere ayarlanır, böylece totalSupply + _value hesaplama sonucu aşar ve tokenLimit'ten küçüktür, böylece 237 satırlık basım sınırı algılamasını kolayca atlar.

2.5 assignateAny: Aşırı derecelendirilmiş tahsis (CVE-2018-11810)

Yönetici, taşma oluşturarak, sözleşmedeki tek bir adrese para basmak için maksimum limiti atlar ve fazla jetonları belirtilen adrese tahsis ederek, tek bir adres verme sınırını geçersiz kılar.

Güvenlik açığı örneği: LGO (LGO) sözleşmesi

Güvenlik açığının yeri: Şekil 5'te gösterildiği gibi satır 286.

Şekil 5 Aşırı derecelendirilmiş tahsisatın savunmasızlığı

Güvenlik açığı saldırı etkisi: yönetici, sözleşmede belirtilen tek adresli düzenleme sınırını atlar ve fazla belirteçleri belirtilen adrese tahsis eder.

Güvenlik açığı ilkesi: Çok büyük bir _mount, aritmetik toplama işlemi holdersAllocatedAmount + _amount'ta minimum değer haline gelmek üzere bir tamsayı taşmasına neden olabilir ve böylece 286 satırının algılanmasını atlayabilir.

2.6 overBuy: Fazla satın alma coinleri (CVE-2018-11809)

Alıcılar yeterli ETH'ye sahipse, taşma oluşturmak için çok sayıda token gönderebilirler, böylece ICO verme limitini atlayabilir ve aşırı para alımına ulaşabilirler.

Güvenlik açığı örneği: EthLend (LEND) sözleşmesi

Güvenlik açığının konumu: Şekil 6'da gösterildiği gibi 236 numaralı hat.

Şekil 6 Aşırı satın alma para birimi güvenlik açığı

Güvenlik açığı saldırı etkisi: Arayan, sözleşmede öngörülen ICO token kapasitesinin üst sınırını aştı ve aşırı satın alma jetonları elde etti.

Güvenlik açığı ilkesi: Çok büyük bir _newTokens, aritmetik toplama işleminde totalSoldTokens + newTokens'ta bir tamsayı taşmasına neden olarak minimum değer haline gelmesine neden olabilir ve böylece 236 satırının algılanmasını atlayabilir.

3 Sonuç

Akıllı bir sözleşmenin "akıllı" olmasının nedeni, sözleşme kodu bir kez zincirde olduğunda, yürütme etkisinin, herhangi bir katılımcının güvenine güvenmeksizin tamamen görünür ve değişmez kod tarafından belirlenmesidir. Bununla birlikte, akıllı sözleşmeler beklendiği kadar "akıllı" değildir ve özellikle yöneticilerin yetkisi altında çok ciddi güvenlik sorunlarına neden olabilecek önemli güvenlik riskleri vardır. Yalnızca genel güvenlik açığı türü tamsayı taşması yoluyla, yöneticiler tüm hesap bakiyelerini keyfi bir şekilde değiştirebilir, miktarı kötü niyetle aşabilir ve hatta üst sınır olmaksızın madeni para basabilir. Bu tür bir sözleşme, sözleşmenin teknik raporundan saparak, birden fazla tarafın adaletini garanti edemez. . Yöneticilerin kötülük yapmak için tamsayı taşması kullanmaları için uzun süredir devam eden bir emsal var. 2018 Şubat ayının başlarında, Ethereum tabanlı Monero Gold (XMRG) Token'ın borsadaki fiyatı önce% 787 arttı ve ardından çökerek çok sayıda kullanıcının para kaybetmesine neden oldu [ Bunun arkasında, yönetim ekibinin aşırı basma yapmak için ayrılmış tamsayı taşma boşluklarını kullanması ve hiperenflasyona neden olmak için bunları borsalarda satması ve nihai değerin neredeyse sıfır olmasıdır [9]. Blockchain üzerinde çalışan akıllı sözleşmenin, güvenilir bir yürütme ortamı oluşturmak için blockchain'in değiştirilemez özelliğini kullanması amaçlanmıştır.Ancak, güvenlik açıklarının varlığı, akıllı sözleşmeye güvenilir bir temel getiren gizli bir saatli bomba gibidir. İşte büyük bir meydan okuma geliyor.

Referanslar

1 MARIA P, GOMEZ G L. Solidity'de yeni başlayanlar için DAO istismarını açıklama EB / OL. (2016-10-16) 2018-06-20 .https: //medium.com/@MyPaoG/ sağlamlıkta yeni başlayanlar için dao-istismarını açıklayan-80ee84f0d470.

2 MICHAELl Y. Daha güvenli bir kripto token oluşturma EB / OL. (2018-04-25) 2018-06-20. Https://medium.com/cybermiles/building-a-safer-crypto- jeton-27c96a7e78fd.

3 0x2. Bilgisayar korsanları tarafından saldırıya uğrayan EDU'yu geri yükleyin: vadeli işlemler ve spot nakit [EB / OL] kombinasyonu. (2018-05-24) 2018-06-20. Https://wallstreetcn.com/articles/3320043 .

[4] BAI akıllı sözleşmesi, herhangi bir hesapta [EB / OL] BAI Token aktarabilen EDU ile aynı boşluklara sahiptir. (2018-05-24) [2018-06-20]. Http: //www.chinaz .com / live / 2018/0524 / 891959.shtml.

5 CHEN Y, Peng Zhiniang. EOS Düğümü Uzaktan Kod Yürütme Güvenlik Açığı EOS WASM Sözleşme İşlevi Tablo Dizisi Sınır Dışı Z. (2018-05-29) 2018-06-20. Http: // bloglar .360.cn / blog / eos-node-uzaktan kod yürütme-güvenlik açığı /.

[6] 360 Kurumsal Güvenlik. Blok zinciri akıllı sözleşme boşlukları, sizi tamir etmenin kolay olmadığını söylemek istiyorum [EB / OL]. (2018-05-31) [2018-06-20] .http: //www.freebuf.com /articles/blockchain-articles/173481.html.

7 NEOHOPE. Yüksek fiyata neden olan bir hata EB / OL. (2016-05-03) 2018-06-20. Http://www.neohope.org/2016/05/03/%E5% AF% BC% E8% 87% B4% E6% 83% A8% E9% 87% 8D% E4% BB% A3% E4% BB% B7% E7% 9A% 84bug /.

8 Monero Gold - Zekice uygulanan 4 milyon dolarlık shitcoin dolandırıcılığının hikayesi ve teknik özellikleri EB / OL. 2018-02-04) 2018-06-20. Https://66shitcoins.com/ blog / 2018/2/4 / monero-gold-the-story-ve-the-tech-specs-the-a-4-milyon-usd-shitcoin-scam-ışıl ışıl uygulanmıştır.

9 CoinMarketCap EB / OL. (2018-06-20) 2018-06-20. Https://coinmarketcap.com/zh/currencies/monero-gold/.

(Geliş Tarihi: 2018-06-20)

Yazar hakkında:

Chen Libo, erkek, yüksek lisans derecesi, 360 Kurumsal Güvenlik Teknolojisi Araştırma Enstitüsü araştırmacısı, ana araştırma yönü: IoT, blockchain güvenliği.

Yin Tingting, kadın, yüksek lisans öğrencisi, ana araştırma yönü: blockchain güvenliği ve otomatik güvenlik açığı madenciliği.

Ni Yuandong, erkek, yüksek lisans öğrencisi, ana araştırma yönü: sistem güvenliği, blok zinciri güvenliği.

Zhang Chao, erkek, PhD, Tsinghua Üniversitesi'nden doçent (doktora süpervizörü), binlerce genç. Ana araştırma yönü: otomatik saldırı ve savunma teknolojisine vurgu yapan sistem ve yazılım güvenliği.

Geely, Hangzhou Asya Oyunları'nın resmi ortağı oldu ve 2022'de L5 otonom sürüşe çıkacak | İlk satır otomobil haberleri
önceki
VR kış mı? Nvidia ekolojik zincirinin düzeni şekillenmeye başladı - kıdemli yönetmen Sandeep Gupte ile röportaj
Sonraki
Yenilikçi üçüncü nesil çift frekans dönüştürme teknolojisi LG kuru çamaşır makinesi sektör devrimine öncülük ediyor
5G çekirdek uygulamalarının bulut video endüstrisinin derinlemesine analizi
Derin öğrenmeye ve yarı denetimli öğrenmeye dayalı web kabuğu algılama yöntemi
"Dragon Ball Fighter Z" nin değiştirme sürümü 10 Ağustos'ta teste başlıyor
2019 Yuelu ZirvesiLi Yanhong: Küresel Teknolojik İnovasyon "Çin Zamanına" Giriyor (tam konuşma)
Takeshi Soeda PlayStation National Bank hakkında konuşuyor: Herkes National Bank'ın en büyük güveni
Akıllı Araba Sisteminin Bulanık Yön Kontrolü Analizi
Samsung S8 bir fırıncıyla tanıştığında hayatın tatlılığı başlıyor
En Güzel Ev Kitaplarını Bulan 3. Chongqing Yubei Bölgesine Giriyor
Yüce küçük sekreter, moda markası mağaza sahiplerinin gözünde Magic2 ihtişamı
Ayın yerli versiyonu: Klasik bir yeniden yapılanma nasıl bir "duygu işi" haline gelebilir?
"Wolf Warriors 2" Oscar'ı kaçırdı! En iyi yabancı dil filmlerinin listesi yayınlandı
To Top