Hesap Soyutlaması (AA), cüzdanın daha güçlü programlanabilirliğe, güvenliğe ve yükseltilebilirliğe sahip olması için harici hesaplar (EOA) ve sözleşme hesapları arasındaki sınırı kırmayı amaçlayan, Ethereum ekosisteminde uzun vadeli keşfin önemli bir yönüdür. En yaygın AA uygulama çözümü olan EIP-4337, bir dizi EntryPoint tabanlı akıllı sözleşme cüzdanında (Safe, Stacks ve Argent gibi) yaygın olarak kullanılmaktadır. Bununla birlikte, EIP-4337, bağımsız bir işlem havuzu ve rampa içi sözleşme mekanizmasının tanıtılması nedeniyle zincir içi yerellik, operasyonel karmaşıklık ve ekolojik uyumluluk açısından hala belirli sınırlamalara sahiptir.
Hesap soyutlamasının kullanım eşiğini daha da düşürmek ve yerel desteklerini artırmak için Vitalik, 2024 yılında EIP-7702'yi önerdi ve bu teklifi Pectra yükseltmesine dahil etti. EIP-7702'nin temel fikri şudur: Bir EOA'nın işlem başlatırken belirli bir adresin sözleşme kodunu (contract_code) çalıştırmasına izin vermek, bu kodun işlem mantığını tanımlamasını sağlamaktır.
EIP-7702, kullanıcı hesaplarının her işlemde dinamik olarak yürütme mantığını belirlemesine olanak tanıyan "işlem seviyesi kod enjekte etme" adlı yeni bir mekanizma getiriyor, böylece önceden dağıtılmış sözleşme kodlarına bağımlılık ortadan kalkıyor. Bu, statik koda dayalı yetki modelini kırarak daha fazla esneklik sağlıyor, aynı zamanda yeni güvenlik zorluklarını da beraberinde getiriyor: isContract, extcodehash gibi mantıklara dayanan sözleşmeler geçersiz hale gelebilir ve bazı varsayımlar, çağrıcının saf EOA olduğu sistemler atlatılabilir. Denetçiler için, yalnızca enjekte edilen kodun güvenliğini doğrulamakla kalmayıp, dinamik bağlamdaki diğer sözleşme sistemleri üzerindeki potansiyel etkilerini de değerlendirmek gerekiyor.
Bu yazıda Beosin güvenlik ekibi, EIP-7702'nin tasarım prensipleri ve ana özellikleri etrafında dönecek, bu temele dayanan AA cüzdanının denetim sırasında karşılaşabileceği güvenlik risklerini sistematik bir şekilde ele alacak ve uygulamalı bir bakış açısıyla denetim süreçleri ve öneriler sunarak güvenlik araştırmacılarının bu yeni paradigma altında teknik zorluklarla daha iyi başa çıkmalarına yardımcı olacak.
Bir. EIP-7702 Tanıtımı
EIP-7702 Teknik Özeti
EIP-7702, EOA'nın bu işlemle yürütmesi gereken sözleşme kodunu yetkilendirmesine olanak tanıyan yeni bir işlem türü 0x04 (SetCode) getirdi. İşlem yapısı aşağıdaki gibidir:
authorization_list, birden fazla yetki listesini içerir ve aynı zamanda işlem başlatıcısı olmayan yetkilendirme eylemlerini de içerebilir, iç yapısı şudur:
Burada, chain_id kullanıcının yetkilendirmesinin geçerli olduğu zinciri gösterir; değeri, yürütme zincirinin zincir ID'sine eşit olmalı veya 0 olmalıdır. chain_id 0 olduğunda, yetkilendirmenin EIP-7702'yi destekleyen tüm EVM zincirlerinde geçerli olduğu anlamına gelir, ancak diğer parametrelerin (örneğin nonce) eşleşmesi gerekmektedir. address ise kullanıcının yetkilendirdiği hedef akıllı sözleşme adresini temsil eder.
Yetki tamamlandığında, sistem yetkili kullanıcının code alanını 0xef0100 || address olarak değiştirecektir; burada address, yetkilendirilmiş sözleşme adresidir. Yetkiyi iptal etmek isterseniz, yalnızca bir SetCode işlemi başlatarak address'i 0 adresi olarak ayarlamanız yeterlidir.
EIP7702'nin avantajları
(1) Esneklik ve özelleştirme
Soyut hesaplar, hesap mantığını akıllı sözleşmelere yazarak, ihtiyaçlara göre esnek bir şekilde işlevler özelleştirebilir. Örneğin, kullanıcılar çoklu imza, sosyal kurtarma, limit kontrolü gibi yapılandırmalar yapabilir ve bireysel veya kurumsal farklı senaryo ihtiyaçlarını karşılayabilir. Bu tasarım, hesapların işlevselliğini büyük ölçüde artırır ve geleneksel dış hesapların (EOA) kısıtlamalarını aşar.
(2) güvenliğin artırılması
Soyut hesaplar, çoklu kimlik doğrulama, işlem limitleri ve sosyal kurtarma gibi çok katmanlı güvenlik mekanizmaları sunar. Kullanıcı özel anahtarını kaybetse bile, güvenilir bir kişi veya çoklu doğrulama yoluyla hesabı kurtarabilir, böylece geleneksel hesapların özel anahtar kaybı nedeniyle kalıcı varlık kaybı yaşamasını önler. Aynı zamanda, limit kontrolü gibi özellikler de büyük miktardaki fonların kötü niyetli bir şekilde çalınmasını engelleyebilir.
(3) Gaz Optimizasyonu
Soyut hesaplar, kullanıcıların üçüncü taraflar aracılığıyla Gas ödemesine veya hatta doğrudan diğer token'ları kullanarak işlem ücretlerini ödemesine izin veren esnek bir Gas soyutlama mekanizmasını destekler. Bu mekanizma, kullanıcıların işlem maliyetlerini düşürmenin yanı sıra, blok zincirinin kullanım sürecini de daha da basit hale getirerek, özellikle yeni başlayan kullanıcılar veya karmaşık çok adımlı işlem senaryoları için uygundur.
(4) Web3'ün yaygınlaşmasını destekliyor
Deneyimi ve güvenliği optimize ederek, soyut hesaplar blok zincirinin karmaşıklığını kullanıcıların göremediği bir yerde saklar ve Web2'ye daha yakın bir kullanım kolaylığı sunar. Bu tasarım, sıradan kullanıcıların öğrenme maliyetini düşürerek daha fazla kişinin Web3 uygulamalarına engelsiz bir şekilde katılmasını sağlar ve merkeziyetsiz teknolojinin yaygınlaşmasını teşvik eder.
İki, EIP-7702 Uygulamadaki Güvenlik Riskleri Analizi
EIP-7702, Ethereum ekosistemine yeni bir ivme kazandırmasına ve zengin uygulama senaryolarını genişletmesine rağmen, aynı zamanda kaçınılmaz olarak bazı yeni güvenlik risklerini de beraberinde getirmiştir:
Yetkilendirilmiş yeniden oynatma saldırısı
EIP-7702 modelinde, kullanıcı eğer yetkilendirmedeki chain_id alanını 0 olarak ayarlarsa, bu yetkilendirmenin birden fazla zincirde geçerli olduğunu gösterir. Bu "çok zincirli genel yetkilendirme" tasarımı bazı senaryolarda esnekliği artırsa da, aynı zamanda belirgin güvenlik açıklarını da beraberinde getirir.
Özellikle dikkat edilmesi gereken nokta, aynı adresin farklı zincirlerdeki hesap kimliklerinin aynı olması durumunda, arka plandaki sözleşme uygulamalarının tamamen farklı olabileceğidir. Bu, saldırganların başka bir zincirde kötü niyetli bir sözleşme sürümü dağıtabilmesi ve zincir üzerindeki aynı adresin yetkilendirme eylemlerini kullanarak beklenmedik işlemler gerçekleştirebilmesi anlamına gelir; bu da kullanıcı varlıkları için risk oluşturur.
Bu nedenle, cüzdan hizmet sağlayıcıları veya ön uç etkileşim platformları için, kullanıcıların bu tür yetkilendirme işlemleri gerçekleştirdiğinde, kullanıcı yetkilendirmesinde belirtilen chainId ile mevcut bağlantı ağının tutarlı olup olmadığını açıkça kontrol etmelidir; eğer kullanıcı chainId'yi 0 olarak ayarladığını tespit ederse, bu yetkilendirmenin tüm EVM uyumlu zincirlerde geçerli olacağını ve kötü niyetli sözleşmeler tarafından istismar edilebileceğini hatırlatan net bir risk uyarısı verilmelidir.
Ayrıca, hizmet sağlayıcının, yanlış işlem veya kimlik avı saldırısı riskini azaltmak için UI katmanında chainId'si 0 olan yetkilendirmeleri varsayılan olarak kısıtlaması veya yasaklaması gerektiğini değerlendirmesi gerekmektedir.
Sözleşme uyumluluğu sorunu
(1) Sözleşme geri çağırma uyumluluğu
Mevcut ERC-721, ERC-777, ERC-1155 gibi token sözleşmeleri, sözleşme adresine transfer yaparken standart geri çağırma arayüzlerini (örneğin onERC721Received, tokensReceived) çağırarak transfer işlemini tamamlar. Eğer alıcı adresi ilgili arayüzü uygulamamışsa, transfer başarısız olur ve hatta varlıkların kilitlenmesine neden olabilir.
EIP-7702'de, kullanıcı adresleri "set_code" işlemi aracılığıyla sözleşme kodu ile atanabilir ve böylece sözleşme hesabına dönüşebilir. Bu durumda:
Kullanıcı adresi bir sözleşme olarak kabul edilecektir;
Eğer bu sözleşme gerekli geri çağırma arayüzünü sağlamazsa, token transferi başarısız olacaktır;
Kullanıcılar, farkında olmadan ana akım tokenleri alamayabilir.
Bu nedenle, geliştiricilerin kullanıcıların devrettiği hedef sözleşmenin ilgili geri çağırma arayüzlerini uyguladığından emin olmaları gerekir, böylece ana akım tokenlerle uyumluluk sağlanabilir.
(2) "tx.origin" kontrolü geçersiz
Geleneksel sözleşmelerde, "tx.origin" genellikle işlemin kullanıcının doğrudan başlattığını belirlemek için kullanılır ve sözleşme çağrıları gibi güvenlik kontrollerini önlemek için kullanılır.
Ancak EIP-7702 senaryosunda:
Kullanıcı, yetkilendirilmiş bir işlemi imzalar, bu işlem aslında bir ara bağlantı veya paketleme hizmeti (bundler) tarafından iletilir; işlem gerçekleştirildiğinde, "tx.origin" ara bağlantı adresidir, kullanıcı adresi değil.
"msg.sender" kullanıcı kimliğini temsil eden cüzdan sözleşmesidir.
Bu nedenle, "tx.origin == msg.sender" temelli yetki kontrolü, yasal kullanıcı işlemlerinin reddedilmesine ve güvenilirliğin kaybolmasına yol açacaktır. Aynı şekilde, "tx.origin == user" gibi sınırlamalarla yapılan sözleşme çağrıları da geçersiz hale gelecektir. "tx.origin"'i güvenlik değerlendirmesi olarak kullanmaktan vazgeçilmesi, bunun yerine imza doğrulama veya yetkilendirme mekanizmalarının kullanılması önerilmektedir.
(3) "isContract" yanlış değerlendirme
Birçok sözleşme, "isContract (address)" (adres kodu uzunluğunu kontrol etme) kullanarak sözleşme hesaplarının airdrop, kapışma gibi belirli işlemlere katılmasını engeller:
EIP-7702 mekanizması altında, kullanıcı adresleri "set_code" işlemi ile akıllı sözleşme hesabına dönüşebilir, "isContract" true dönebilir, sözleşme yasal kullanıcıları akıllı sözleşme hesabı olarak yanlış değerlendirebilir, onların işlemlere katılmasını reddedebilir, bu da kullanıcıların belirli hizmetleri kullanamamasına ve deneyimlerinin engellenmesine neden olabilir.
Sözleşme cüzdanlarının giderek yaygınlaşmasıyla, "isContract" ile "insan kullanıcı olup olmadığını" belirleme tasarımı artık güvenli değil, imza doğrulama gibi daha hassas kullanıcı tanıma yöntemlerinin kullanılması önerilir.
Phishing saldırısı
EIP-7702'nin yetkilendirme mekanizmasının uygulanmasından sonra, kullanıcının hesabındaki varlıklar, devredilen akıllı sözleşme tarafından tamamen kontrol edilecektir. Kullanıcı kötü niyetli sözleşmeyi yetkilendirdikten sonra, saldırgan hesap varlıkları üzerinde tam kontrol sahibi olabilir ve bu da son derece riskli olan fonların hızlı bir şekilde aktarılmasına veya çalınmasına neden olabilir.
Bu nedenle, cüzdan hizmet sağlayıcıları için, EIP-7702 türü işlem analizi ve risk tanıma mekanizmalarının mümkün olan en kısa sürede desteklenmesi son derece önemlidir. Kullanıcı yetkilendirilmiş işlemi imzalarken, ön yüzün hedef sözleşme adresini açık ve belirgin bir şekilde göstermesi ve sözleşme kaynağı, dağıtım bilgileri gibi yardımcı bilgilerle birleşerek, kullanıcıların potansiyel dolandırıcılık veya sahtekarlığı tanımalarına yardımcı olması gerekmektedir. Böylece yanlış imza riski azaltılabilir. Daha ileri olarak, cüzdan hizmeti, hedef sözleşmenin otomatik güvenlik analiz yeteneklerini entegre etmelidir; örneğin, sözleşme kodunun açık kaynak durumu kontrolü, yetki modeli analizi, potansiyel tehlikeli işlemlerin tanımlanması gibi yöntemlerle, kullanıcıların yetkilendirmeden önce daha güvenli bir karar vermelerine yardımcı olmaktadır.
Özellikle dikkat edilmesi gereken bir husus, EIP-7702'nin tanıttığı vekalet imza formatının, mevcut EIP-191 ve EIP-712 imza standartlarıyla uyumlu olmamasıdır. Bu imzalar, cüzdanın mevcut imza uyarı ve etkileşim bildirimlerini kolayca atlatabilir ve kullanıcıların kötü niyetli işlemleri imzalamaları için kandırılma riskini artırır. Bu nedenle, cüzdan uygulamalarında bu imza yapısının tanınması ve işlenmesi mekanizmasının entegrasyonu, kullanıcı güvenliğini sağlamak için kritik bir unsur olacaktır.
Cüzdan Sözleşmesi Riski
(1) Cüzdan Sözleşmesi Yetki Yönetimi
Birçok EIP-7702 cüzdan sözleşmesi, mantıksal yükseltmeleri desteklemek için bir proxy mimarisi ( veya yerleşik bir yönetici ayrıcalığı ) kullanır. Ancak, bu aynı zamanda daha yüksek bir hak yönetimi riski oluşturur. Yükseltme ayrıcalığı katı bir şekilde kısıtlanmamışsa, bir saldırgan uygulama sözleşmesini değiştirebilir ve kötü amaçlı kod enjekte ederek kullanıcının hesabının kurcalanmasına veya fonların çalınmasına neden olabilir.
Güvenlik önerisi:
Güncelleme izinlerini kontrol etmek için çoklu imza, çok faktörlü kimlik doğrulama veya zaman kilidi mekanizması kullanın.
Kod ve yetki değişiklikleri sıkı bir denetim ve güvenlik doğrulamasından geçmelidir.
Açık ve şeffaf güncelleme süreci, kullanıcıların bilgilendirilme ve katılım haklarını garanti eder.
(2) Depolama Çatışma Riski ve Veri İzolasyonu
Cüzdan sözleşmesi sürümleri veya farklı cüzdan sağlayıcıları aynı depolama yuvasını yeniden kullanabilir. Kullanıcı cüzdan servis sağlayıcısını değiştirirse veya cüzdan mantığını yükseltirse, depolama yuvasının yeniden kullanılması durum değişkeninin çakışmasına neden olacak ve verilerin üzerine yazma ve okuma istisnaları gibi sorunlar yaşanacaktır. Bu sadece cüzdanın normal işleyişini bozmakla kalmaz, aynı zamanda para kaybına veya anormal izinlere de yol açabilir.
Güvenlik önerisi:
Özel depolama izolasyon çözümleri (örneğin EIP-1967 standardı) kullanmak veya depolama alanlarını yönetmek için benzersiz bir ad alanı kullanmak.
Depolama durumunun makuliyetini test etme sürecinin yükseltilmesi.
( Cüzdan içindeki nonce yönetimi
Cüzdan sözleşmeleri genellikle içsel olarak nonce ayarlar ve kullanıcı işlemlerinin yürütme sırasını garanti altına almak ve yeniden oynatma saldırılarını önlemek için kendi kendine yönetim yapar. Eğer nonce yanlış kullanılırsa, kullanıcı işlemleri düzgün bir şekilde yürütülemez.
Güvenlik önerileri:
nonce, eşdeğer (veya artan) olarak güçlü bir şekilde kontrol edilmelidir, atlanamaz.
Nonce'in doğrudan değiştirilmesi yasaktır, yalnızca kullanıcı işlemi gerçekleştirildiğinde nonce senkronize güncellenmelidir.
Nonce anormallikleri için hata toleransı ve kurtarma mekanizmaları tasarlayın, nonce kilitlenmesini önleyin.
)4( Fonksiyon çağrıcısı izin kontrolü
Güvenliği sağlamak için, cüzdan sözleşmesi anahtar fonksiyonlara çağrıda bulunanın cüzdanın sahibi hesabı olduğundan emin olmalıdır. Yaygın iki yöntem şunlardır:
Zincir dışı imza yetkilendirmesi
Kullanıcı, bir dizi işlemi özel anahtar ile imzalar, cüzdan akdi zincir üzerinde imzanın geçerliliğini, süresinin dolup dolmadığını ve ilgili nonce'un karşılandığını doğrular. Bu yöntem, EIP-7702'nin önerdiği iletim işlem modeli için uygundur (kullanıcı çevrimdışı imzalar + iletimci aracılığıyla işlem gönderimi).
Çağrı kısıtlaması (msg.sender == address )this()
Kullanıcı işlem işlevleri yalnızca sözleşmenin kendisi tarafından çağrılabilir ve tetiklenebilir; bu esasen bir çağrı yolu kontrol mekanizmasıdır ve dışsal başlatıcıların yalnızca bu hesabın kendisi olmasını sağlar. Bu, çağrının orijinal EOA tarafından yapılmasını talep etmekle eşdeğerdir, çünkü bu durumda sözleşme adresi EOA adresine eşittir.
Üç, Gelecek: EIP-7702 ve Gelecekteki AA Cüzdan Standartları
EIP-7702'nin önerilmesi, yalnızca geleneksel hesap modelinde bir yenilik değil, aynı zamanda hesap soyutlama (Account Abstraction) ekosisteminde büyük bir ilerleme sağlamıştır. Kullanıcıların sözleşme kodunu yükleme kabiliyeti, gelecekteki cüzdan tasarımı ve sözleşme sistemleri için geniş bir keşif alanı sunmakta, ayrıca güvenlik denetim standartları için yeni gereksinimler getirmektedir.
EIP-4337 ile işbirliği evrimi: Çift mod uyumluluğuna doğru
EIP-7702 ve EIP-4337 tasarım olarak farklı hedeflere sahip olsalar da, ilki hesapların kod yükleme mekanizmasını yeniden yapılandırırken, ikincisi tam bir işlem girişi ve paketleme ekosistemi inşa etmektedir. Ancak, her ikisi de birbiriyle çelişmiyor, aksine oldukça güçlü bir tamamlayıcılık sunuyorlar:
EIP-4337, "genel işlem kanalı" ve "soyut hesap yürütme arayüzü" sunmaktadır;
EIP-7702, kullanıcı hesaplarının adresi değiştirmeden dinamik olarak sözleşme mantığı yetenekleri vermesine olanak tanır;
Bu nedenle, gelecekteki cüzdan "çift mod destek mimarisi" kullanabilir: EIP-4337'yi desteklemeyen zincirlerde hafif bir alternatif olarak EIP-7702'yi kullanırken, zincir dışı paketleme ve çoklu kullanıcı birleştirme gerektiren senaryolar için EIP-4337'nin tam protokol yığınına devam edilecektir.
Bu çift mod mekanizması, cüzdanın çekirdek katmanında daha esnek bir hesap izin modeli, düşürme mekanizması ve geri alma planlarını desteklemesini de teşvik edecektir.
MPC, ZK gibi yeni nesil cüzdan mantığının desteklenmesi ve ilham verilmesi
EIP-7702'nin önerdiği hesap sözleşmesi mekanizması, şu anda popüler olan MPC cüzdanları, ZK cüzdanları, modüler cüzdanlar gibi yeni mimarilerle doğal bir entegrasyon potansiyeline sahiptir:
MPC modunda, imza işlemi tek bir özel anahtara bağlı değildir, bunun yerine çoklu tarafların ortak karar almasına dayanır. EIP-7702 ve MPC entegrasyonu ile üretilen imza, dinamik olarak yüklenen sözleşme mantığını kontrol edebilir ve böylece daha esnek bir yürütme stratejisi sağlanır.
ZK cüzdan, kullanıcı kimliğini veya yetkilendirmesini doğrulamak için sıfır bilgi kanıtları kullanır ve özel anahtar bilgilerini ifşa etmeden çalışır. EIP-7702 ile birleştirildiğinde, ZK cüzdanı doğrulama tamamlandıktan sonra belirli mantık sözleşmelerini geçici olarak enjekte edebilir ve böylece gizli hesaplamaların ardından kişiselleştirilmiş davranış dağıtımı gerçekleştirebilir; örneğin, belirli gizlilik koşulları yerine getirildiğinde otomatik olarak belirli bir mantığı yürütmek gibi.
Modüler Cüzdanlar (Modular Wallets), EIP-7702'yi kullanarak hesap mantığını birden fazla modüle ayırabilir ve gerektiğinde dinamik olarak yükleyebilir.
Bu nedenle, EIP-7702 yukarıda bahsedilen gelişmiş cüzdanlar için daha yerel bir "uygulama konteyneri" sunuyor: Kullanıcı adresi değişmeden farklı sözleşme mantıkları enjekte edilebilir, bu da geleneksel sözleşme dağıtım sürecindeki adres bağımlılığı sorununu aşar ve önceden dağıtıma gerek kalmadan hesap davranışlarının esnekliğini ve kombinasyon yeteneğini büyük ölçüde artırır.
Sözleşme Geliştiricileri ve Denetçiler İçin Çıkarımlar
EIP-7702, geliştirme paradigmasında derin bir değişim yaratacaktır. Sözleşme geliştiricileri artık çağrıcıyı geleneksel EOA veya sabit sözleşme hesapları olarak basitçe görmek zorunda değiller; bunun yerine tamamen yeni bir mekanizmaya uyum sağlamak zorundalar: çağrıcı kimliği işlem sırasında EOA ve sözleşme durumu arasında dinamik olarak geçiş yapabilir, hesap davranış mantığı artık statik olarak sabitlenmemekte, ihtiyaçlara göre esnek bir şekilde değiştirilebilmektedir. Bu, geliştiricilerin ve denetçilerin şu yetkinliklere sahip olmasını gerektirir:
Daha sıkı bir çağrıcı doğrulama ve yetki belirleme mantığı getirildi;
Dinamik sözleşme mantığından etkilenip etkilenmediğini kontrol et.
msg.sender.code.length == 0, isContract )( gibi davranışların potansiyel zayıflıklarını tanımlama;
Sözleşme mantığının "bağlam bağımlılığı"nı net bir şekilde tanımlamak, örneğin statik çağrılar, deleGatecall'in sınır kontrolü;
Araç zinciri düzeyinde setCode senaryosunun simülasyonu ve geri analizini destekleme.
Başka bir deyişle, kodun güvenliği artık sadece "dağıtım öncesi bir sorun" değil, "çağrılar sırasında ve işlemler sırasında da doğrulanması gereken dinamik bir süreç" haline geldi.
Dört, Özet
EIP-7702, sıradan EOA'nın sözleşme mantığını taşımasına ve tek bir işlemde yürütmesine olanak tanıyan Hesap Soyutlaması'nın (AA) daha hafif, yerel ve esnek bir uygulamasını sunar. Bu mekanizma, hesap davranışıyla ilgili geleneksel statik varsayımları bozar ve geliştiriciler artık davranış modelini değerlendirmek için hesap adresinin kod durumuna güvenemez, ancak arayanın kimlik ve yetki sınırının anlaşılmasını yeniden yapılandırmaları gerekir. Bununla birlikte güvenlik analitiğinde bir paradigma değişikliği geliyor. Denetimin odak noktası artık "bir adresin izinlere sahip olup olmadığı" ile sınırlı değil, "işlemde taşınan sözleşme mantığının mevcut bağlamda neler yapabileceğine" kayıyor. Her işlem, hesaba daha fazla işlevsellik sağlayan ve güvenlik denetimleri için daha yüksek gereksinimler ortaya koyan bağımsız bir davranış tanımı taşıyabilir.
The content is for reference only, not a solicitation or offer. No investment, tax, or legal advice provided. See Disclaimer for more risks disclosure.
Beosin: EIP-7702 ve bir sonraki nesil AA Cüzdan güvenlik denetimi analizi
Yazan: Beosin
Hesap Soyutlaması (AA), cüzdanın daha güçlü programlanabilirliğe, güvenliğe ve yükseltilebilirliğe sahip olması için harici hesaplar (EOA) ve sözleşme hesapları arasındaki sınırı kırmayı amaçlayan, Ethereum ekosisteminde uzun vadeli keşfin önemli bir yönüdür. En yaygın AA uygulama çözümü olan EIP-4337, bir dizi EntryPoint tabanlı akıllı sözleşme cüzdanında (Safe, Stacks ve Argent gibi) yaygın olarak kullanılmaktadır. Bununla birlikte, EIP-4337, bağımsız bir işlem havuzu ve rampa içi sözleşme mekanizmasının tanıtılması nedeniyle zincir içi yerellik, operasyonel karmaşıklık ve ekolojik uyumluluk açısından hala belirli sınırlamalara sahiptir.
Hesap soyutlamasının kullanım eşiğini daha da düşürmek ve yerel desteklerini artırmak için Vitalik, 2024 yılında EIP-7702'yi önerdi ve bu teklifi Pectra yükseltmesine dahil etti. EIP-7702'nin temel fikri şudur: Bir EOA'nın işlem başlatırken belirli bir adresin sözleşme kodunu (contract_code) çalıştırmasına izin vermek, bu kodun işlem mantığını tanımlamasını sağlamaktır.
EIP-7702, kullanıcı hesaplarının her işlemde dinamik olarak yürütme mantığını belirlemesine olanak tanıyan "işlem seviyesi kod enjekte etme" adlı yeni bir mekanizma getiriyor, böylece önceden dağıtılmış sözleşme kodlarına bağımlılık ortadan kalkıyor. Bu, statik koda dayalı yetki modelini kırarak daha fazla esneklik sağlıyor, aynı zamanda yeni güvenlik zorluklarını da beraberinde getiriyor: isContract, extcodehash gibi mantıklara dayanan sözleşmeler geçersiz hale gelebilir ve bazı varsayımlar, çağrıcının saf EOA olduğu sistemler atlatılabilir. Denetçiler için, yalnızca enjekte edilen kodun güvenliğini doğrulamakla kalmayıp, dinamik bağlamdaki diğer sözleşme sistemleri üzerindeki potansiyel etkilerini de değerlendirmek gerekiyor.
Bu yazıda Beosin güvenlik ekibi, EIP-7702'nin tasarım prensipleri ve ana özellikleri etrafında dönecek, bu temele dayanan AA cüzdanının denetim sırasında karşılaşabileceği güvenlik risklerini sistematik bir şekilde ele alacak ve uygulamalı bir bakış açısıyla denetim süreçleri ve öneriler sunarak güvenlik araştırmacılarının bu yeni paradigma altında teknik zorluklarla daha iyi başa çıkmalarına yardımcı olacak.
Bir. EIP-7702 Tanıtımı
EIP-7702, EOA'nın bu işlemle yürütmesi gereken sözleşme kodunu yetkilendirmesine olanak tanıyan yeni bir işlem türü 0x04 (SetCode) getirdi. İşlem yapısı aşağıdaki gibidir:
authorization_list, birden fazla yetki listesini içerir ve aynı zamanda işlem başlatıcısı olmayan yetkilendirme eylemlerini de içerebilir, iç yapısı şudur:
Burada, chain_id kullanıcının yetkilendirmesinin geçerli olduğu zinciri gösterir; değeri, yürütme zincirinin zincir ID'sine eşit olmalı veya 0 olmalıdır. chain_id 0 olduğunda, yetkilendirmenin EIP-7702'yi destekleyen tüm EVM zincirlerinde geçerli olduğu anlamına gelir, ancak diğer parametrelerin (örneğin nonce) eşleşmesi gerekmektedir. address ise kullanıcının yetkilendirdiği hedef akıllı sözleşme adresini temsil eder.
Yetki tamamlandığında, sistem yetkili kullanıcının code alanını 0xef0100 || address olarak değiştirecektir; burada address, yetkilendirilmiş sözleşme adresidir. Yetkiyi iptal etmek isterseniz, yalnızca bir SetCode işlemi başlatarak address'i 0 adresi olarak ayarlamanız yeterlidir.
(1) Esneklik ve özelleştirme
Soyut hesaplar, hesap mantığını akıllı sözleşmelere yazarak, ihtiyaçlara göre esnek bir şekilde işlevler özelleştirebilir. Örneğin, kullanıcılar çoklu imza, sosyal kurtarma, limit kontrolü gibi yapılandırmalar yapabilir ve bireysel veya kurumsal farklı senaryo ihtiyaçlarını karşılayabilir. Bu tasarım, hesapların işlevselliğini büyük ölçüde artırır ve geleneksel dış hesapların (EOA) kısıtlamalarını aşar.
(2) güvenliğin artırılması
Soyut hesaplar, çoklu kimlik doğrulama, işlem limitleri ve sosyal kurtarma gibi çok katmanlı güvenlik mekanizmaları sunar. Kullanıcı özel anahtarını kaybetse bile, güvenilir bir kişi veya çoklu doğrulama yoluyla hesabı kurtarabilir, böylece geleneksel hesapların özel anahtar kaybı nedeniyle kalıcı varlık kaybı yaşamasını önler. Aynı zamanda, limit kontrolü gibi özellikler de büyük miktardaki fonların kötü niyetli bir şekilde çalınmasını engelleyebilir.
(3) Gaz Optimizasyonu
Soyut hesaplar, kullanıcıların üçüncü taraflar aracılığıyla Gas ödemesine veya hatta doğrudan diğer token'ları kullanarak işlem ücretlerini ödemesine izin veren esnek bir Gas soyutlama mekanizmasını destekler. Bu mekanizma, kullanıcıların işlem maliyetlerini düşürmenin yanı sıra, blok zincirinin kullanım sürecini de daha da basit hale getirerek, özellikle yeni başlayan kullanıcılar veya karmaşık çok adımlı işlem senaryoları için uygundur.
(4) Web3'ün yaygınlaşmasını destekliyor
Deneyimi ve güvenliği optimize ederek, soyut hesaplar blok zincirinin karmaşıklığını kullanıcıların göremediği bir yerde saklar ve Web2'ye daha yakın bir kullanım kolaylığı sunar. Bu tasarım, sıradan kullanıcıların öğrenme maliyetini düşürerek daha fazla kişinin Web3 uygulamalarına engelsiz bir şekilde katılmasını sağlar ve merkeziyetsiz teknolojinin yaygınlaşmasını teşvik eder.
İki, EIP-7702 Uygulamadaki Güvenlik Riskleri Analizi
EIP-7702, Ethereum ekosistemine yeni bir ivme kazandırmasına ve zengin uygulama senaryolarını genişletmesine rağmen, aynı zamanda kaçınılmaz olarak bazı yeni güvenlik risklerini de beraberinde getirmiştir:
EIP-7702 modelinde, kullanıcı eğer yetkilendirmedeki chain_id alanını 0 olarak ayarlarsa, bu yetkilendirmenin birden fazla zincirde geçerli olduğunu gösterir. Bu "çok zincirli genel yetkilendirme" tasarımı bazı senaryolarda esnekliği artırsa da, aynı zamanda belirgin güvenlik açıklarını da beraberinde getirir.
Özellikle dikkat edilmesi gereken nokta, aynı adresin farklı zincirlerdeki hesap kimliklerinin aynı olması durumunda, arka plandaki sözleşme uygulamalarının tamamen farklı olabileceğidir. Bu, saldırganların başka bir zincirde kötü niyetli bir sözleşme sürümü dağıtabilmesi ve zincir üzerindeki aynı adresin yetkilendirme eylemlerini kullanarak beklenmedik işlemler gerçekleştirebilmesi anlamına gelir; bu da kullanıcı varlıkları için risk oluşturur.
Bu nedenle, cüzdan hizmet sağlayıcıları veya ön uç etkileşim platformları için, kullanıcıların bu tür yetkilendirme işlemleri gerçekleştirdiğinde, kullanıcı yetkilendirmesinde belirtilen chainId ile mevcut bağlantı ağının tutarlı olup olmadığını açıkça kontrol etmelidir; eğer kullanıcı chainId'yi 0 olarak ayarladığını tespit ederse, bu yetkilendirmenin tüm EVM uyumlu zincirlerde geçerli olacağını ve kötü niyetli sözleşmeler tarafından istismar edilebileceğini hatırlatan net bir risk uyarısı verilmelidir.
Ayrıca, hizmet sağlayıcının, yanlış işlem veya kimlik avı saldırısı riskini azaltmak için UI katmanında chainId'si 0 olan yetkilendirmeleri varsayılan olarak kısıtlaması veya yasaklaması gerektiğini değerlendirmesi gerekmektedir.
(1) Sözleşme geri çağırma uyumluluğu
Mevcut ERC-721, ERC-777, ERC-1155 gibi token sözleşmeleri, sözleşme adresine transfer yaparken standart geri çağırma arayüzlerini (örneğin onERC721Received, tokensReceived) çağırarak transfer işlemini tamamlar. Eğer alıcı adresi ilgili arayüzü uygulamamışsa, transfer başarısız olur ve hatta varlıkların kilitlenmesine neden olabilir.
EIP-7702'de, kullanıcı adresleri "set_code" işlemi aracılığıyla sözleşme kodu ile atanabilir ve böylece sözleşme hesabına dönüşebilir. Bu durumda:
Kullanıcı adresi bir sözleşme olarak kabul edilecektir;
Eğer bu sözleşme gerekli geri çağırma arayüzünü sağlamazsa, token transferi başarısız olacaktır;
Kullanıcılar, farkında olmadan ana akım tokenleri alamayabilir.
Bu nedenle, geliştiricilerin kullanıcıların devrettiği hedef sözleşmenin ilgili geri çağırma arayüzlerini uyguladığından emin olmaları gerekir, böylece ana akım tokenlerle uyumluluk sağlanabilir.
(2) "tx.origin" kontrolü geçersiz
Geleneksel sözleşmelerde, "tx.origin" genellikle işlemin kullanıcının doğrudan başlattığını belirlemek için kullanılır ve sözleşme çağrıları gibi güvenlik kontrollerini önlemek için kullanılır. Ancak EIP-7702 senaryosunda:
Kullanıcı, yetkilendirilmiş bir işlemi imzalar, bu işlem aslında bir ara bağlantı veya paketleme hizmeti (bundler) tarafından iletilir; işlem gerçekleştirildiğinde, "tx.origin" ara bağlantı adresidir, kullanıcı adresi değil.
"msg.sender" kullanıcı kimliğini temsil eden cüzdan sözleşmesidir.
Bu nedenle, "tx.origin == msg.sender" temelli yetki kontrolü, yasal kullanıcı işlemlerinin reddedilmesine ve güvenilirliğin kaybolmasına yol açacaktır. Aynı şekilde, "tx.origin == user" gibi sınırlamalarla yapılan sözleşme çağrıları da geçersiz hale gelecektir. "tx.origin"'i güvenlik değerlendirmesi olarak kullanmaktan vazgeçilmesi, bunun yerine imza doğrulama veya yetkilendirme mekanizmalarının kullanılması önerilmektedir.
(3) "isContract" yanlış değerlendirme
Birçok sözleşme, "isContract (address)" (adres kodu uzunluğunu kontrol etme) kullanarak sözleşme hesaplarının airdrop, kapışma gibi belirli işlemlere katılmasını engeller:
EIP-7702 mekanizması altında, kullanıcı adresleri "set_code" işlemi ile akıllı sözleşme hesabına dönüşebilir, "isContract" true dönebilir, sözleşme yasal kullanıcıları akıllı sözleşme hesabı olarak yanlış değerlendirebilir, onların işlemlere katılmasını reddedebilir, bu da kullanıcıların belirli hizmetleri kullanamamasına ve deneyimlerinin engellenmesine neden olabilir. Sözleşme cüzdanlarının giderek yaygınlaşmasıyla, "isContract" ile "insan kullanıcı olup olmadığını" belirleme tasarımı artık güvenli değil, imza doğrulama gibi daha hassas kullanıcı tanıma yöntemlerinin kullanılması önerilir.
EIP-7702'nin yetkilendirme mekanizmasının uygulanmasından sonra, kullanıcının hesabındaki varlıklar, devredilen akıllı sözleşme tarafından tamamen kontrol edilecektir. Kullanıcı kötü niyetli sözleşmeyi yetkilendirdikten sonra, saldırgan hesap varlıkları üzerinde tam kontrol sahibi olabilir ve bu da son derece riskli olan fonların hızlı bir şekilde aktarılmasına veya çalınmasına neden olabilir.
Bu nedenle, cüzdan hizmet sağlayıcıları için, EIP-7702 türü işlem analizi ve risk tanıma mekanizmalarının mümkün olan en kısa sürede desteklenmesi son derece önemlidir. Kullanıcı yetkilendirilmiş işlemi imzalarken, ön yüzün hedef sözleşme adresini açık ve belirgin bir şekilde göstermesi ve sözleşme kaynağı, dağıtım bilgileri gibi yardımcı bilgilerle birleşerek, kullanıcıların potansiyel dolandırıcılık veya sahtekarlığı tanımalarına yardımcı olması gerekmektedir. Böylece yanlış imza riski azaltılabilir. Daha ileri olarak, cüzdan hizmeti, hedef sözleşmenin otomatik güvenlik analiz yeteneklerini entegre etmelidir; örneğin, sözleşme kodunun açık kaynak durumu kontrolü, yetki modeli analizi, potansiyel tehlikeli işlemlerin tanımlanması gibi yöntemlerle, kullanıcıların yetkilendirmeden önce daha güvenli bir karar vermelerine yardımcı olmaktadır.
Özellikle dikkat edilmesi gereken bir husus, EIP-7702'nin tanıttığı vekalet imza formatının, mevcut EIP-191 ve EIP-712 imza standartlarıyla uyumlu olmamasıdır. Bu imzalar, cüzdanın mevcut imza uyarı ve etkileşim bildirimlerini kolayca atlatabilir ve kullanıcıların kötü niyetli işlemleri imzalamaları için kandırılma riskini artırır. Bu nedenle, cüzdan uygulamalarında bu imza yapısının tanınması ve işlenmesi mekanizmasının entegrasyonu, kullanıcı güvenliğini sağlamak için kritik bir unsur olacaktır.
(1) Cüzdan Sözleşmesi Yetki Yönetimi
Birçok EIP-7702 cüzdan sözleşmesi, mantıksal yükseltmeleri desteklemek için bir proxy mimarisi ( veya yerleşik bir yönetici ayrıcalığı ) kullanır. Ancak, bu aynı zamanda daha yüksek bir hak yönetimi riski oluşturur. Yükseltme ayrıcalığı katı bir şekilde kısıtlanmamışsa, bir saldırgan uygulama sözleşmesini değiştirebilir ve kötü amaçlı kod enjekte ederek kullanıcının hesabının kurcalanmasına veya fonların çalınmasına neden olabilir.
Güvenlik önerisi:
Güncelleme izinlerini kontrol etmek için çoklu imza, çok faktörlü kimlik doğrulama veya zaman kilidi mekanizması kullanın.
Kod ve yetki değişiklikleri sıkı bir denetim ve güvenlik doğrulamasından geçmelidir.
Açık ve şeffaf güncelleme süreci, kullanıcıların bilgilendirilme ve katılım haklarını garanti eder.
(2) Depolama Çatışma Riski ve Veri İzolasyonu
Cüzdan sözleşmesi sürümleri veya farklı cüzdan sağlayıcıları aynı depolama yuvasını yeniden kullanabilir. Kullanıcı cüzdan servis sağlayıcısını değiştirirse veya cüzdan mantığını yükseltirse, depolama yuvasının yeniden kullanılması durum değişkeninin çakışmasına neden olacak ve verilerin üzerine yazma ve okuma istisnaları gibi sorunlar yaşanacaktır. Bu sadece cüzdanın normal işleyişini bozmakla kalmaz, aynı zamanda para kaybına veya anormal izinlere de yol açabilir.
Güvenlik önerisi:
Özel depolama izolasyon çözümleri (örneğin EIP-1967 standardı) kullanmak veya depolama alanlarını yönetmek için benzersiz bir ad alanı kullanmak.
Sözleşmeyi yükseltirken, depolama düzeninin uyumlu olduğundan emin olun, değişken çakışmalarından kaçının.
Depolama durumunun makuliyetini test etme sürecinin yükseltilmesi.
( Cüzdan içindeki nonce yönetimi
Cüzdan sözleşmeleri genellikle içsel olarak nonce ayarlar ve kullanıcı işlemlerinin yürütme sırasını garanti altına almak ve yeniden oynatma saldırılarını önlemek için kendi kendine yönetim yapar. Eğer nonce yanlış kullanılırsa, kullanıcı işlemleri düzgün bir şekilde yürütülemez.
Güvenlik önerileri:
nonce, eşdeğer (veya artan) olarak güçlü bir şekilde kontrol edilmelidir, atlanamaz.
Nonce'in doğrudan değiştirilmesi yasaktır, yalnızca kullanıcı işlemi gerçekleştirildiğinde nonce senkronize güncellenmelidir.
Nonce anormallikleri için hata toleransı ve kurtarma mekanizmaları tasarlayın, nonce kilitlenmesini önleyin.
)4( Fonksiyon çağrıcısı izin kontrolü
Güvenliği sağlamak için, cüzdan sözleşmesi anahtar fonksiyonlara çağrıda bulunanın cüzdanın sahibi hesabı olduğundan emin olmalıdır. Yaygın iki yöntem şunlardır:
Zincir dışı imza yetkilendirmesi
Kullanıcı, bir dizi işlemi özel anahtar ile imzalar, cüzdan akdi zincir üzerinde imzanın geçerliliğini, süresinin dolup dolmadığını ve ilgili nonce'un karşılandığını doğrular. Bu yöntem, EIP-7702'nin önerdiği iletim işlem modeli için uygundur (kullanıcı çevrimdışı imzalar + iletimci aracılığıyla işlem gönderimi).
Çağrı kısıtlaması (msg.sender == address )this()
Kullanıcı işlem işlevleri yalnızca sözleşmenin kendisi tarafından çağrılabilir ve tetiklenebilir; bu esasen bir çağrı yolu kontrol mekanizmasıdır ve dışsal başlatıcıların yalnızca bu hesabın kendisi olmasını sağlar. Bu, çağrının orijinal EOA tarafından yapılmasını talep etmekle eşdeğerdir, çünkü bu durumda sözleşme adresi EOA adresine eşittir.
Üç, Gelecek: EIP-7702 ve Gelecekteki AA Cüzdan Standartları
EIP-7702'nin önerilmesi, yalnızca geleneksel hesap modelinde bir yenilik değil, aynı zamanda hesap soyutlama (Account Abstraction) ekosisteminde büyük bir ilerleme sağlamıştır. Kullanıcıların sözleşme kodunu yükleme kabiliyeti, gelecekteki cüzdan tasarımı ve sözleşme sistemleri için geniş bir keşif alanı sunmakta, ayrıca güvenlik denetim standartları için yeni gereksinimler getirmektedir.
EIP-7702 ve EIP-4337 tasarım olarak farklı hedeflere sahip olsalar da, ilki hesapların kod yükleme mekanizmasını yeniden yapılandırırken, ikincisi tam bir işlem girişi ve paketleme ekosistemi inşa etmektedir. Ancak, her ikisi de birbiriyle çelişmiyor, aksine oldukça güçlü bir tamamlayıcılık sunuyorlar:
EIP-4337, "genel işlem kanalı" ve "soyut hesap yürütme arayüzü" sunmaktadır;
EIP-7702, kullanıcı hesaplarının adresi değiştirmeden dinamik olarak sözleşme mantığı yetenekleri vermesine olanak tanır;
Bu nedenle, gelecekteki cüzdan "çift mod destek mimarisi" kullanabilir: EIP-4337'yi desteklemeyen zincirlerde hafif bir alternatif olarak EIP-7702'yi kullanırken, zincir dışı paketleme ve çoklu kullanıcı birleştirme gerektiren senaryolar için EIP-4337'nin tam protokol yığınına devam edilecektir.
Bu çift mod mekanizması, cüzdanın çekirdek katmanında daha esnek bir hesap izin modeli, düşürme mekanizması ve geri alma planlarını desteklemesini de teşvik edecektir.
EIP-7702'nin önerdiği hesap sözleşmesi mekanizması, şu anda popüler olan MPC cüzdanları, ZK cüzdanları, modüler cüzdanlar gibi yeni mimarilerle doğal bir entegrasyon potansiyeline sahiptir:
MPC modunda, imza işlemi tek bir özel anahtara bağlı değildir, bunun yerine çoklu tarafların ortak karar almasına dayanır. EIP-7702 ve MPC entegrasyonu ile üretilen imza, dinamik olarak yüklenen sözleşme mantığını kontrol edebilir ve böylece daha esnek bir yürütme stratejisi sağlanır.
ZK cüzdan, kullanıcı kimliğini veya yetkilendirmesini doğrulamak için sıfır bilgi kanıtları kullanır ve özel anahtar bilgilerini ifşa etmeden çalışır. EIP-7702 ile birleştirildiğinde, ZK cüzdanı doğrulama tamamlandıktan sonra belirli mantık sözleşmelerini geçici olarak enjekte edebilir ve böylece gizli hesaplamaların ardından kişiselleştirilmiş davranış dağıtımı gerçekleştirebilir; örneğin, belirli gizlilik koşulları yerine getirildiğinde otomatik olarak belirli bir mantığı yürütmek gibi.
Modüler Cüzdanlar (Modular Wallets), EIP-7702'yi kullanarak hesap mantığını birden fazla modüle ayırabilir ve gerektiğinde dinamik olarak yükleyebilir.
Bu nedenle, EIP-7702 yukarıda bahsedilen gelişmiş cüzdanlar için daha yerel bir "uygulama konteyneri" sunuyor: Kullanıcı adresi değişmeden farklı sözleşme mantıkları enjekte edilebilir, bu da geleneksel sözleşme dağıtım sürecindeki adres bağımlılığı sorununu aşar ve önceden dağıtıma gerek kalmadan hesap davranışlarının esnekliğini ve kombinasyon yeteneğini büyük ölçüde artırır.
EIP-7702, geliştirme paradigmasında derin bir değişim yaratacaktır. Sözleşme geliştiricileri artık çağrıcıyı geleneksel EOA veya sabit sözleşme hesapları olarak basitçe görmek zorunda değiller; bunun yerine tamamen yeni bir mekanizmaya uyum sağlamak zorundalar: çağrıcı kimliği işlem sırasında EOA ve sözleşme durumu arasında dinamik olarak geçiş yapabilir, hesap davranış mantığı artık statik olarak sabitlenmemekte, ihtiyaçlara göre esnek bir şekilde değiştirilebilmektedir. Bu, geliştiricilerin ve denetçilerin şu yetkinliklere sahip olmasını gerektirir:
Daha sıkı bir çağrıcı doğrulama ve yetki belirleme mantığı getirildi;
Dinamik sözleşme mantığından etkilenip etkilenmediğini kontrol et.
msg.sender.code.length == 0, isContract )( gibi davranışların potansiyel zayıflıklarını tanımlama;
Sözleşme mantığının "bağlam bağımlılığı"nı net bir şekilde tanımlamak, örneğin statik çağrılar, deleGatecall'in sınır kontrolü;
Araç zinciri düzeyinde setCode senaryosunun simülasyonu ve geri analizini destekleme.
Başka bir deyişle, kodun güvenliği artık sadece "dağıtım öncesi bir sorun" değil, "çağrılar sırasında ve işlemler sırasında da doğrulanması gereken dinamik bir süreç" haline geldi.
Dört, Özet
EIP-7702, sıradan EOA'nın sözleşme mantığını taşımasına ve tek bir işlemde yürütmesine olanak tanıyan Hesap Soyutlaması'nın (AA) daha hafif, yerel ve esnek bir uygulamasını sunar. Bu mekanizma, hesap davranışıyla ilgili geleneksel statik varsayımları bozar ve geliştiriciler artık davranış modelini değerlendirmek için hesap adresinin kod durumuna güvenemez, ancak arayanın kimlik ve yetki sınırının anlaşılmasını yeniden yapılandırmaları gerekir. Bununla birlikte güvenlik analitiğinde bir paradigma değişikliği geliyor. Denetimin odak noktası artık "bir adresin izinlere sahip olup olmadığı" ile sınırlı değil, "işlemde taşınan sözleşme mantığının mevcut bağlamda neler yapabileceğine" kayıyor. Her işlem, hesaba daha fazla işlevsellik sağlayan ve güvenlik denetimleri için daha yüksek gereksinimler ortaya koyan bağımsız bir davranış tanımı taşıyabilir.