怎麼查合約漏洞
A. 鏅鴻兘鍚堢害涓嶅紑婧愪篃鑳借鐮磋В鍢
鏅鴻兘鍚堢害涓嶅紑婧愪篃鑳借鐮磋В銆傛牴鎹鏌ヨ㈢浉鍏沖叕寮淇℃伅鏄劇ず錛屾敾鍑昏呭彲浠ュ埄鐢ㄩ嗗悜宸ョ▼鎶鏈鏉ュ垎鏋愬拰淇鏀硅繍琛屽湪鏅鴻兘鍚堢害涓婄殑紼嬪簭錛岃繕鍙浠ュ埄鐢ㄤ竴浜涘叾浠栫殑婕忔礊鏉ユ敾鍑諱笌鏅鴻兘鍚堢害鐩稿叧鐨勫叾浠栫粍浠訛紝渚嬪傞挶鍖咃紝浜ゆ槗鎵絳夛紝鍥犳わ紝鍗充嬌鏅鴻兘鍚堢害涓嶅紑婧愶紝浠嶇劧瀛樺湪琚鏀誨嚮鐨勯庨櫓銆
B. 智能合約審計到底是什麼
智能合約審計就是仔細研究代碼的過程,在這里就是指在把Solidity合約部署到以太坊主網路中並使用之前發現錯誤、漏洞和風險;因為一旦發布,這些代碼將無法再被修改。這個定義僅僅是為了討論目的。
注意,審計不是驗證代碼安全的法律文件。沒有人能100%確保代碼不會在未來發生錯誤或產生漏洞。這僅僅是保證你的代碼已被專家校訂過,基本上是安全的。
討論可能的改進,主要是為了找出那些可能會危害到用戶的以太幣的風險和漏洞。
智能合約審計報告的結構:
免責聲明:在這里你會說審計不是一個具有法律約束力的文件,它不保證任何東西。這只是一個討論性質的文件。
審計概覽和優良特性:快速查看將被審計的智能合約並找到良好的實踐。
對合約的攻擊:在本節中,你將討論對合約的攻擊以及會產生的結果。這只是為了驗證它實際上是安全的。
合約中發現的嚴重漏洞:可能嚴重損害合約完整性的關鍵問題。那些會允許攻擊者竊取以太幣的嚴重問題。
合約中發現的中等漏洞:那些可能損害合約但危害有限的漏洞。比如一個允許人們修改隨機變數的錯誤。
低嚴重性的漏洞:這些問題並不會真正損害合約,並且可能已經存在於合約的已部署版本中。
逐行評註:在這部分中,你將分析那些具有潛在改進可能的最重要的語句行。
審計總結:你對合約的看法和關於審計的最終結論。
C. 浠ュお鍧婂備綍澶勭悊緗戠粶鐨勫畨鍏ㄩ棶棰
浠ュお鍧婂備綍澶勭悊緗戠粶鐨勫畨鍏ㄩ棶棰橈紵
浠ュお鍧婃槸鐩鍓嶆渶鍙楁㈣繋鐨勫幓涓蹇冨寲搴旂敤騫沖彴錛屽叾鑳藉熷勭悊澶嶆潅鐨勬櫤鑳藉悎綰︼紝瀹炵幇鏃犻渶淇′換鐨勪氦鏄撳拰搴旂敤錛屽傚姞瀵嗚揣甯佷氦鏄擄紝鎶墊娂璐鋒懼拰鍘諱腑蹇冨寲搴旂敤紼嬪簭鐨勭$悊銆備絾涓庢ゅ悓鏃訛紝浠ュお鍧婄綉緇滈潰涓寸殑瀹夊叏椋庨櫓涔熸槸涓嶅彲蹇借嗙殑銆
鍦ㄨ繃鍘葷殑鍑犲勾涓錛屼互澶鍧婄綉緇滃凡緇忛伃鍙椾簡澶氭℃敾鍑伙紝渚嬪侱AO鏀誨嚮錛孭arity澶氶噸絳懼悕婕忔礊鍜屾櫤鑳藉悎綰︽紡媧炵瓑銆傝繖浜涙敾鍑誨線寰瀵艱嚧杞誨井鍒頒弗閲嶇殑鍚庢灉錛屼緥濡傚悎綰︿腑鐨勪唬甯佽鐩楃獌錛岃鎿嶄綔瀵艱嚧瀛樺偍鍦ㄤ互澶鍧婁笂鐨勬晱鎰熸暟鎹娉勯湶絳夈
涓轟簡瑙e喅榪欎簺闂棰橈紝浠ュお鍧婂紑鍙戣呬滑閲囧彇浜嗗氱嶆柟娉曟潵紜淇濆畨鍏ㄦэ紝榪欎簺鏂規硶鍖呮嫭錛
1.浠g爜瀹℃煡
浠ュお鍧婄殑鏍稿績浠g爜浠ュ強鏅鴻兘鍚堢害鐨勪唬鐮侀兘鏄寮婧愮殑銆傝繖鎰忓懗鐫浠諱綍浜洪兘鍙浠ュ℃煡浠g爜浠ュ彂鐜版綔鍦ㄧ殑婕忔礊鍜屽畨鍏ㄩ棶棰樸傛ゅ栵紝浠ュお鍧婂熀閲戜細鍜屽叾浠栫粍緇囦細瀹氭湡榪涜屼唬鐮佸℃煡鍜屾祴璇曪紝浠ヤ繚璇佷唬鐮佺殑璐ㄩ噺鍜屽畨鍏ㄦс
2.鏅鴻兘鍚堢害
鏅鴻兘鍚堢害鏄浠ュお鍧婄殑鏍稿績鍔熻兘涔嬩竴銆傞氳繃鏅鴻兘鍚堢害錛岀敤鎴峰彲浠ュ皢鑷宸辯殑浠g爜閮ㄧ講鍒頒互澶鍧婄綉緇滀笂錛屽疄鐜拌嚜宸辯殑涓氬姟閫昏緫銆傛櫤鑳藉悎綰﹁瑙嗕負涓縐嶉潪甯稿畨鍏ㄧ殑鏂瑰紡鏉ョ$悊浜ゆ槗鍜岃祫浜э紝鍥犱負鍚堢害涓鐨勪唬鐮佹槸紜瀹氭х殑錛屾棤娉曡綃℃敼銆
3.鍔犲瘑鎶鏈
浠ュお鍧婄綉緇滈噰鐢ㄤ簡鍔犲瘑鎶鏈鏉ヤ繚鎶ょ敤鎴風殑浜ゆ槗鏁版嵁鍜岃祫浜с傝繖浜涙妧鏈鍖呮嫭鍏閽ュ姞瀵嗐佸搱甯屽嚱鏁板拰鏁板瓧絳懼悕絳夈傝繖浜涙妧鏈紜淇濅簡浜ゆ槗鐨勬満瀵嗘у拰瀹屾暣鎬э紝鍚屾椂涔熺『淇濅簡浜ゆ槗鐨勭湡瀹炴у拰涓嶅彲鍚﹁ゆс
4.緗戠粶瀹夊叏
浠ュお鍧婂熀閲戜細鍜屽叾浠栫粍緇囦細瀹氭湡榪涜岀綉緇滃畨鍏ㄦ祴璇曪紝浠ョ『淇濈綉緇滅殑瀹夊叏鎬с傛ゅ栵紝浠栦滑榪樹細鎻愪緵緗戠粶鎵鎻忔湇鍔★紝浠ュ府鍔╃敤鎴峰彂鐜扮綉緇滃拰鑺傜偣涓鐨勬紡媧炲拰瀹夊叏闂棰樸傝繖浜涙祴璇曞拰鏈嶅姟紜淇濅簡緗戠粶鍜岃妭鐐圭殑瀹夊叏鎬э紝浠庤屾彁楂樹簡鐢ㄦ埛鐨勪俊蹇冨拰鍙鐢ㄦс
緇間笂鎵榪幫紝浠ュお鍧婃槸涓縐嶇浉瀵瑰畨鍏ㄧ殑鍘諱腑蹇冨寲騫沖彴銆傞氳繃浠g爜瀹℃煡銆佹櫤鑳藉悎綰︺佸姞瀵嗘妧鏈鍜岀綉緇滃畨鍏ㄧ瓑澶氱嶆柟寮忥紝浠ュお鍧婃e湪涓嶆柇鍦版彁楂樼綉緇滅殑瀹夊叏鎬с傜劧鑰岋紝鐢ㄦ埛鍦ㄤ氦鏄撳拰浣跨敤騫沖彴鏃訛紝榪樻槸闇瑕佽皚鎱庣粏鑷村湴榪涜屾搷浣滐紝浠ュ厤閬鍙楁崯澶便
D. 浠ュお鍧婂備綍紜淇濋摼涓婅祫浜х殑瀹夊叏
浠ュお鍧婂備綍紜淇濋摼涓婅祫浜х殑瀹夊叏錛
浠ュお鍧婃槸鍏ㄧ悆鑼冨洿鍐呮渶鐭ュ悕鐨勬櫤鑳藉悎綰﹀鉤鍙頒箣涓錛屽畠鍙浠ョ敤浜庡紑鍙戝垎甯冨紡搴旂敤紼嬪簭錛圖Apps錛夊拰鏁板瓧璧勪駭銆備互澶鍧婁笂鐨勬暟瀛楄祫浜э紙浠ュお甯佸拰浠e竵錛変互鍙婃櫤鑳藉悎綰﹀緢瀹規槗琚鏀誨嚮鑰呯獌鍙栵紝鍥犳や繚鎶よ繖浜涙暟瀛楄祫浜ф槸鑷沖叧閲嶈佺殑銆
鍦ㄤ互澶鍧婁腑錛岃祫浜у畨鍏ㄧ殑涓昏佷緷闈犱互涓嬪嚑涓鏂歸潰錛
1.鏅鴻兘鍚堢害浠g爜鐨勫畨鍏ㄦ
鏅鴻兘鍚堢害鍖呭惈浜嗘墽琛屾煇浜涙搷浣滅殑浠g爜銆傜敱浜庝唬鐮侀敊璇鎴栬呮伓鎰忔敾鍑伙紝鏅鴻兘鍚堢害鐨勮祫浜у彲鑳戒細鍙楀埌濞佽儊銆傚洜姝わ紝浠ュお鍧婂紑鍙戜漢鍛樺繀欏葷『淇濆湪閮ㄧ講鏅鴻兘鍚堢害涔嬪墠榪涜屼弗鏍肩殑瀹夊叏瀹℃煡錛岄氳繃闈欐佷唬鐮佸垎鏋愬伐鍏風瓑鎵嬫墊鏌ュ悎綰︾殑浠g爜鏄鍚﹀瓨鍦ㄦ紡媧炪傛ゅ栵紝鍦ㄩ儴緗叉櫤鑳藉悎綰﹀悗錛岄渶瑕佸畾鏈熺洃鎺у悎綰︾殑浜ゆ槗騫舵鏌ユ槸鍚﹀瓨鍦ㄥ紓甯告儏鍐點
2.鍑忓皯鏅鴻兘鍚堢害鏀誨嚮鐨勯庨櫓
浠ュお鍧婂紑鍙戜漢鍛樺彲浠ラ噰鐢ㄥ悇縐嶆柟娉曞噺灝戞櫤鑳藉悎綰﹁鏀誨嚮鐨勯庨櫓銆備緥濡傦紝浣跨敤澶氶噸絳懼悕鏉ラ檺鍒朵氦鏄撶殑鏁伴噺鍜岄噾棰濓紝浠ラ槻姝㈡敾鍑昏呯洍鍙栬祫浜с傛ゅ栵紝寮鍙戜漢鍛樺彲浠ヤ嬌鐢ㄤ互涓嬫帾鏂芥潵紜淇濆悎綰︾殑楂樺彲鐢ㄦэ細
闄愬埗鍚堢害鐨勬搷浣滄潈闄愶紝鍙鍏佽哥壒瀹氱敤鎴瘋繘琛屾搷浣滐紱
鍔犲己鍚堢害鐨勮韓浠介獙璇侊紝浠ョ『淇濅氦鏄撶殑鍚堟硶鎬э紱
閲囩敤寮婧愪唬鐮侊紝榧撳姳鍚堢害鐨勪嬌鐢ㄨ呮彁渚涘弽棣堝拰鎶ュ憡娼滃湪鐨勬紡媧炪
3.浠ュお鍧婄綉緇滅殑鍘諱腑蹇冨寲鐗規
浠ュお鍧婁笉鍚屼簬浼犵粺緗戠粶錛屽畠鐨勫幓涓蹇冨寲鐗圭偣鍙浠ラ槻姝㈠崟鐐規晠闅滃拰鏀誨嚮錛岃繖涔熸槸紜淇濋摼涓婃暟瀛楄祫浜у畨鍏ㄧ殑閲嶈侀儴鍒嗐備互澶鍧婄綉緇滀笂鏈夎稿氬尯鍧楅摼鑺傜偣錛屾瘡涓鑺傜偣閮芥嫢鏈夊畬鏁寸殑鍖哄潡閾炬嫹璐濄傝繖鎰忓懗鐫鍗充嬌鏌愪釜鑺傜偣鍑虹幇鏁呴殰錛屽叾浠栬妭鐐逛粛鐒跺彲浠ヤ繚鎸佺綉緇滅殑紼沖畾榪愪綔銆傛ゅ栵紝浠ュお鍧婄殑鏅鴻兘鍚堢害鏄鍩轟簬鍖哄潡閾炬妧鏈瀹炵幇鐨勶紝鎵鏈夌殑浜ゆ槗閮介渶瑕佽鎸夐『搴忚板綍鍦ㄥ尯鍧楅摼涓婏紝榪欎篃鏄淇濇姢鏁板瓧璧勪駭瀹夊叏鐨勪竴縐嶄繚闅溿
鎬諱箣錛屼互澶鍧婇噰鍙栦簡澶氱嶆帾鏂芥潵紜淇濋摼涓婅祫浜х殑瀹夊叏銆傚紑鍙戜漢鍛橀渶瑕佷弗鏍兼寜鐓у畨鍏ㄦ爣鍑嗙紪鍐欐櫤鑳藉悎綰︿唬鐮侊紝騫墮伒寰鏈浣崇殑瀹夊叏瀹炶返銆傚悓鏃訛紝浠ュお鍧婄綉緇滅殑鍘諱腑蹇冨寲鐗規т篃涓烘暟瀛楄祫浜х殑瀹夊叏鎻愪緵浜嗗熀鏈淇濋殰銆