AlexGo DAO Denetimi – CoinFabrik Blogu

AlexGo DAO Denetimi - CoinFabrik Blogu

giriiş

CoinFabrik’ten AlexGo’nun DAO projesi için sözleşmeleri denetlemesi istendi. İlk önce keşiflerimizin bir özetini sunacağız ve ardından bulgularımızın ayrıntılarını göstereceğiz.

Dürbün

Denetlenen sözleşmeler https://github.com/MarvinJanssen/executor-dao adresinden alınmıştır.
ve https://github.com/alexgo-io/alex-dao git depoları. Denetim taahhütlere dayanmaktadır aa748ceecbad201c226ecbba4d7111995851e7f5 ve
9f99127e3aa7487c620982b6f7017c0541a6790dsırasıyla. alex-dao yürütücü-dao’dan çatallandı. Düzeltmeler yalnızca alex-dao’nun deposuna uygulandı ve kontrol edildi. 010c9cf33dae53d4fa2af23dafb5c1b457e44d4c.

Denetlenen sözleşmeler şunlardır:

● yürütücü-dao:

○ sözleşmeler/executor-dao.clar:
uzantıları ve teklifleri yürütür.
○ sözleşmeler/uzantılar/ede000-governance-token.clar:
Bir yönetim belirteci ekleyen uzantı.
○ sözleşmeler/uzantılar/ede001-proposal-voting.clar: Bu
uzantı, teklifler için bir oylama sistemi ekler.
○ sözleşmeler/uzantılar/ede002-proposal-submission.clar:
Kullanıcıların teklif göndermesine izin veren mekanizmalı uzantı.
○ sözleşmeler/uzantılar/ede003-emergency-teklifler.clar:
Acil durum önerileri yapmak için belirlenmiş bir ekiple genişletme.
○ sözleşmeler/uzantılar/ede004-emergency-execute.clar: Bu
uzantının teklifleri yürütmesine izin verilen bir dizi adresi var
onlara oy vermeden.
○ sözleşmeler/teklifler/edp000-bootstrap.clar:
DAO’nun temel uzantıları ile ilk yapımı.

● alex-dao:

○ sözleşmeler/executor-dao.clar
○ sözleşmeler/uzantılar/age000-governance-token.clar
○ sözleşmeler/uzantılar/age001-proposal-voting.clar
○ sözleşmeler/uzantılar/age002-acil-teklifler.clar
○ sözleşmeler/uzantılar/age003-emergency-execute.clar
○ özellikler/extension-trait.clar
○ özellikler/governance-token-trait.clar
○ özellikler/sahip olunabilir-trait.clar
○ özellikler/teklif-trait.clar
○ özellikler/sip010-ft-trait.clar

Denetimin kapsamı bu dosyalarla sınırlıdır. Bu depodaki başka hiçbir dosya denetlenmedi. Bağımlılıklarının belgelerine göre çalıştığı varsayılır. Ayrıca, bu denetim için hiçbir test gözden geçirilmemiştir.

analizler

Bunlarla sınırlı olmaksızın denetim süreci aşağıdaki analizleri içeriyordu:

● Aritmetik hatalar
● Yarış koşulları
● Blok zaman damgalarının yanlış kullanımı
● Hizmet reddi saldırıları
● Aşırı gaz kullanımı
● Eksik veya yanlış kullanılan işlev niteleyicileri
● Gereksiz yere karmaşık kod ve sözleşme etkileşimleri
● Kötü veya var olmayan hata işleme
● Giriş parametrelerinin yetersiz doğrulaması
● Şifreli imzaların yanlış işlenmesi
● Merkezileştirme ve yükseltilebilirlik

Bulguların özeti

İki orta sorun bulundu. Ayrıca, bir iyileştirme önerildi.
Bir orta sorun düzeltilirken diğeri kabul edildi. Geliştirmev uygulanmadı.

Güvenlik sorunları

Ayrıcalıklı Roller

Bunlar, denetlenen sözleşmelerin her birinde belirlediğimiz ayrıcalıklı rollerdir.

yürütücü-dao

yürütücü-dao.clar

DAO Dağıtıcısı

executor-dao.clar sözleşmesinin dağıtıcısı, arama yapabilen tek adrestir. executor-dao::construct(), herhangi bir teklifi yürütür. Bu fonksiyon çağrıldığında, uygulayıcı-dao’nun adresi konuşlandırıcı adresinin üzerine yazılır ve fonksiyonu tekrar çağırabilen tek adres olur.

DAO ve uzantıları

DAO ve uzantılarının şunları yapmasına izin verilir:

  • Uzantıları ekleyin, değiştirin, etkinleştirin ve devre dışı bırakın.
  • Herhangi bir teklifi yürütün.

ede000-governance-token.clar

DAO ve uzantıları

DAO ve uzantılarının şunları yapmasına izin verilir:

  • Sahip olmadan yönetişim belirteçlerini bas, yak, aktar, kilitle ve kilidini aç
    razı olmak.
  • Yeni bir belirteç adı, sembolü, ondalık sayıları ve URI’yi ayarlayın.

ede001-teklif-oylama.clar

DAO ve uzantıları

Bu rol, yeni teklifler ekleyebilir ve sözleşmede kullanılan yönetim belirtecini yenisiyle değiştirebilir.

Yönetim belirteci sahipleri

Sahipler, oylama için kullanılan jetonları kilitleyerek tekliflere lehte ve aleyhte oy verebilirler. Teklif tamamlandığında, kilidini açmak için jetonlarını geri alabilirler.

ede002-teklif-gönderme.clar

DAO ve uzantıları

DAO, bu uzantının parametrelerini değiştirebilir: teklif faktörü, teklif
bir teklif üzerinde oylamaya başlamak için süre, minimum ve maksimum gecikme.

Yönetim belirteci çoğunluk sahipleri

Teklif faktöründen daha fazla jetona sahip olanlar, yeni teklifler sunabilirler. ede001-proposal-voting.clar eklenti.

ede003-acil-teklifler.clar

DAO ve uzantıları

Acil teklif süresini değiştirebilir, yeni acil teklif sahipleri ekleyebilir ve o zamandan beri başka acil teklif sunulmayacağı zaman blok numarasını değiştirebilirler.

Acil teklif verenler

Bu rol, başlangıç ​​gecikmesi olmayan ve minimum bekletme tutarı gerektirmeyen acil durum teklifleri sunabilir.

ede004-acil-execute.clar

DAO ve uzantıları

Yeni acil durum yürütücüleri ekleyebilir, bir teklifi yürütmek için gereken sinyal miktarını değiştirebilir ve o zamandan beri daha fazla sinyal gönderilmediğinde blok numarasını değiştirebilirler.

Acil durum uygulayıcıları

Sözleşmeye teklifler ekleyebilir ve bir eşiğe ulaşıldığında bunları uygulamak için sinyaller verebilirler.

alex-dao

yürütücü-dao.clar

Bu sözleşme, yürütücü-dao deposunda aynı adı taşıyan sözleşme için açıklananlar dışında yeni roller içermez.

age000-governance-token.clar

Bu sözleşme, eşdeğeri için tanımlanan “DAO ve uzantıları” rolünü içerir. ede000-governance-token.clar Yürütücü-dao deposunda, daha önce bahsedilen yetkileri koruyarak.

Onaylanmış sözleşmeler

Yönetim belirteçlerini sahibinin izni olmadan basabilen ve yakabilen adresler kümesi.

age001-teklif-oylama.clar

Bu sözleşme, işbu sözleşmede belirtilenlerin dışında yeni roller içermemektedir.
eşdeğer ede001-proposal-voting.clar içinde executor-dao depo.

age002-acil-teklifler.clar

Bu sözleşme, işbu sözleşmede belirtilenlerin dışında yeni roller içermemektedir.
eşdeğer ede003-emergency-proposals.clar yürütücü-dao deposunda.

age003-emergency-execute.clar

Bu sözleşme, işbu sözleşmede belirtilenlerin dışında yeni roller içermemektedir.
eşdeğer ede004-emergency-execute.clar yürütücü-dao deposunda.

Güvenlik Sorunları Bulundu

Önem Sınıflandırması

Güvenlik riskleri aşağıdaki gibi sınıflandırılır:

● Kritik: Bunlar, istismar etmeyi başardığımız sorunlardır. Sistemi ciddi şekilde tehlikeye atıyorlar. Derhal düzeltilmeleri gerekir.
● Orta: Bunlar potansiyel olarak istismar edilebilir sorunlardır. Olmadık da
bunlardan yararlanmayı başarabilir veya etkileri net değilse,
Yakın gelecekte güvenlik riski. Bunları mümkün olan en kısa sürede düzeltmenizi öneririz.
● Küçük: Bu sorunlar, nispeten küçük veya yararlanılması zor olan ancak diğer sorunlarla birlikte kullanılabilecek sorunları temsil eder. Bu tür sorunlar, üretim ortamlarındaki dağıtımları engellemez. Bunlar dikkate alınmalı ve düzeltilmelidir. mümkün olunca.

Sorun Durumu

Bu denetim tarafından tespit edilen bir sorunun dört farklı durumu olabilir:

● Çözümlenmemiş: Sorun çözülmedi.
● Onaylandı: Sorun kodda kalır, ancak kasıtlı bir kararın sonucudur.
● Çözüldü: Riski ortadan kaldırmak için ayarlanmış program uygulaması.
● Azaltılmış: Riskin etkisini veya olasılığını en aza indirmek için uygulanan eylemler.

Kritik Önem Sorunları

Sorun bulunamadı.

Orta Önem Derecesi Sorunları

ME-01 Nisap Eksikliği

Konum:

● executor-dao/contracts/extensions/ede001-proposal-voting.clar:124-137
● alex-dao/contracts/extensions/age001-proposal-voting.clar:125-138

Teklifler, gerekli minimum katılım olmaksızın, kabul edilmek ve uygulanmak için karşı oydan daha fazla oy gerektirir. Bu durum, bir teklifin ne zaman fark edilmeyeceği (örneğin tatiller) veya token sahiplerinin ne zaman oy kullanma olasılığının daha düşük olacağı (örneğin ağ tıkanıklığı nedeniyle yüksek kilit oranları ve pahalı gaz ücretleri) konusunda spekülasyonlara yol açabilir.

Örneğin, sisteme zarar verebilecek farklı kötü niyetli sözleşmelerle çoklu gönderim saldırısı yapılabilir. Saldırganlar, DAO’yu bu önerilerle aşırı yükleyebilir ve geçebilecek olanlar için son bloğun oylanmasını bekleyebilir.

Ayrıca, başlangıçta diğerlerinden daha kısa olan acil durum önergeleri, başka bir önerge oylanırken sunulabilir. Bu nedenle, acil durum önerisi normal tekliften önce sona erecek ve sahipleri tokenları kilitli olduğu için katılmamış olacak.

Öneri

Bir teklifin kabul edilmesi için bir nisap gereksinimi tanımlayın ve belirleyin. conclude() işlev.

Durum

Onaylandı. Bu bir tasarım kararıdır ve öneri sorunu tamamen çözmeyen bir azaltma olduğundan, proje ekibi teklif sistemini yinelemeye devam etmeye karar verir.

ME-02 tx-sender aracılığıyla Güvenli Olmayan Kimlik Doğrulama

Konum:

● executor-dao/contracts/ede004-emergency-execute.clar:86
● alex-dao/contracts/age003-emergency-execute.clar:87

Genel değişken tx-sender, geçerli işlemin orijinal göndericisini döndürür veya gönderme bağlamını değiştirmek için sözleşme olarak çağrıldıysa, o sözleşme sorumlusunu döndürür. Kimlik doğrulama için bu değişkeni kullanmak güvenli değildir. Sistemdeki aktörler kimlik avı için hedeflenebilir.

Bu sorun özellikle acil durum uygulayıcıları ile yapılan sözleşmeleri etkiler, çünkü başlangıçta bir teklifin yürütülmesi için yalnızca bir sinyal gerekir.

Öneri

Tercih contract-caller ile tx-sender kimlik doğrulama için. contract-caller geçerli sözleşme bağlamının arayanını döndürür.

Durum

Çözüldü. Tavsiyeye göre düzeltildi.

Küçük Önem Derecesi Sorunları

Sorun bulunamadı.

Geliştirmeler

Bu öğeler bir güvenlik riski oluşturmaz. Bunlar, bizim için en iyi uygulamalardır.
uygulanmasını önermek.

Masa

Detaylar

TR-01 Uzantılarda Yönetişim Simgesi Farklı Olabilir

Konum:

● executor-dao/contracts/extensions/ede002-proposal-submission.clar:45-50

Teklif gönderme uzantısı, teklif oylama uzantısının yanı sıra yönetişim belirtecini belirleme işlevine sahiptir. Bu nedenle, jeton değiştirilirse, her iki sözleşmede de yeni anapara belirlenmelidir. Gönderim uzantısı oylama uzantısına bağlı olduğundan, yönetişim belirteçleri senkronize edilmelidir.

Öneri

Belirteç sorumlusunun saklandığı ve bir ayarlayıcının bulunduğu uzantı yerine,
ede002-proposal-submission.clar içeri gireni aramalı
ede001-proposal-voting.clar (get-governance-token()). Bu nedenle, değerin yalnızca oylama uzantısında güncellenmesi gerekir.

Durum

Uygulanmadı. Bu geliştirme, çalışma zamanı maliyetini artıracağından, geliştirme ekibi bunu uygulamadı.

Diğer Hususlar

DAO ve Onaylı Sözleşmeler herhangi bir jetonu yakabilir

DAO ve uzantıları ve ayrıca aşağıdaki durumlarda bir dizi onaylanmış sözleşme alex-dao, Kullanıcıların elinde olsa bile herhangi bir jetonu basmaya ve yakmaya yetkilidir.

merkezileştirme

Ayrıcalıklı Roller bölümünde belirtildiği gibi, konuşlandırıcı
executor-dao.clar arayabilir construct() ve herhangi bir teklifi yürütün, ancak yalnızca bir kez.
Ayrıca, belirlenmiş bir ekip daha kısa süreli acil durum önerileri ekleyebilir ve başka bir ekip herhangi bir teklifi oylamadan yürütebilir. Bu ayrıcalıklar zamanla sınırlıdır, ancak yeni teklifler bunu sonsuza kadar uzatabilir.

Yükseltilebilirlik

DAO, tekliflerle uzantıların uygulanması yoluyla, yeni uzantılar ekleyerek ve öncekileri devre dışı bırakarak işlevlerini yükseltebilir.

değişiklik günlüğü

● 2022-02-10 – Taahhütlere dayalı ilk rapor:
9f99127e3aa7487c620982b6f7017c0541a6790d (alex-dao) ve
aa748ceecbad201c226ecbba4d7111995851e7f5 (executor-dao).
● 2022-02-21 – İşlem sırasında kontrol edilen düzeltmeler
010c9cf33dae53d4fa2af23dafb5c1b457e44d4c (alex-dao).

Sorumluluk Reddi: CoinFabrik platformunu incelemediğinden, bu denetim raporu bir güvenlik garantisi, yatırım tavsiyesi veya AlexGo projesinin onayı değildir. Ayrıca akıllı kontrat kodu hatasızlık garantisi vermemektedir.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak.