{"id":1023,"date":"2025-03-21T08:34:19","date_gmt":"2025-03-21T06:34:19","guid":{"rendered":"https:\/\/ackee.xyz\/blog\/?p=1023"},"modified":"2025-05-13T13:49:45","modified_gmt":"2025-05-13T11:49:45","slug":"aave-umbrella-audit-summary","status":"publish","type":"post","link":"https:\/\/ackee.xyz\/blog\/aave-umbrella-audit-summary\/","title":{"rendered":"Aave Umbrella Audit Summary"},"content":{"rendered":"<p class=\"p1\">Umbrella is a new version of the Aave Safety Module to help address bad debt management within the Aave protocol.<\/p>\n<p class=\"p1\">BGD engaged Ackee Blockchain Security to perform a security review of the Aave protocol with a total time donation of 19 engineering days in a period between February 10 and February 26, 2025.<\/p>\n<h2><span style=\"font-weight: 400;\">METHODOLOGY<\/span><\/h2>\n<p class=\"p1\">We began our review using static analysis tools, including <a href=\"https:\/\/getwake.io\"><span class=\"s1\">Wake<\/span><\/a>. This yielded the <span class=\"s1\">I2<\/span> finding. We then took a deep dive into the logic of the contracts. For testing and fuzzing, we used the <a href=\"https:\/\/getwake.io\"><span class=\"s1\">Wake<\/span><\/a> testing framework. We implemented additional unit tests that helped us analyze the shares inflation possibility (<span class=\"s1\">M1<\/span>) and arithmetic errors (<span class=\"s1\">L1<\/span>). We also implemented an additional set of fuzz tests, however, a full fuzzing campaign was not in the scope of this report. The fuzz tests discovered potential integration issues with the price oracle availability (<span class=\"s1\">L2<\/span>). During the review, we paid special attention to:<\/p>\n<ul>\n<li class=\"p1\">analyzing ERC-4626 shares inflation and checking for compliance with the standard;<\/li>\n<li class=\"p1\">ensuring the slashing mechanism could not be abused;<\/li>\n<li class=\"p1\">checking correctness of the rewards distribution;<\/li>\n<li class=\"p1\">ensuring the arithmetic of the system was correct;<\/li>\n<li class=\"p1\">detecting possible reentrancies and unprotected calls in the code;<\/li>\n<li class=\"p1\">ensuring access controls were not too relaxed or too strict; and<\/li>\n<li class=\"p1\">looking for common issues such as data validation.<\/li>\n<\/ul>\n<h2><span style=\"font-weight: 400;\">SCOPE<\/span><\/h2>\n<p>The first audit was performed on the commit <code class=\"codehl\">a2ad2ff<\/code> and the scope were the <code class=\"codehl\">umbrella<\/code><span class=\"s4\"> , <code class=\"codehl\">stakeToken<\/code> and <code class=\"codehl\">rewards<\/code> <\/span><span class=\"s4\">folders.<\/span><\/p>\n<p>A fix review was performed on commit <code class=\"codehl\">de990C5<\/code>.<\/p>\n<p>A third review was conducted on commit <code class=\"codehl\">5b987d2<\/code> with final changes before the release. No issues were identified during this review.<\/p>\n<h2><span style=\"font-weight: 400;\">FINDINGS<\/span><\/h2>\n<p><span style=\"font-weight: 400;\">The classification of a security finding is determined by two ratings: <\/span><b>impact<\/b><span style=\"font-weight: 400;\"> and <\/span><b>likelihood<\/b><span style=\"font-weight: 400;\">. This two-dimensional classification helps clarify the severity of individual issues. Issues which would be rated as <\/span><i><span style=\"font-weight: 400;\">medium<\/span><\/i><span style=\"font-weight: 400;\"> severity, but which would be likely discovered only by the team, are typically decreased by the likelihood factor to the <\/span><i><span style=\"font-weight: 400;\">warning<\/span><\/i><span style=\"font-weight: 400;\"> or <\/span><i><span style=\"font-weight: 400;\">informational<\/span><\/i><span style=\"font-weight: 400;\"> severity ratings.<\/span><\/p>\n<p class=\"p1\">Our review resulted in <strong>9 findings<\/strong>, ranging from Informational to Medium severity. The most severe finding is <span class=\"s1\">M1<\/span>, which identified an issue with shares inflation. Due to the slashing mechanism, shares can grow rapidly, making the correct functioning of the system significantly dependent on configuration. StakeToken vaults that undergo full slashing due to small deficit offsets or higher pool deficits can enter a denial-of-service state. The state can be entered by an attacker in a single transaction due to the permissionless nature of slashing and deposits. The cost of the attack is determined by the underlying token (it can be as low as a few cents).<\/p>\n<p>For detailed acknowledgment statements from the client on see the Findings section of the <a href=\"https:\/\/github.com\/aave-dao\/aave-umbrella\/blob\/main\/audits\/Ackee\/ackee-blockchain-aave-umbrella-report.pdf\" target=\"_blank\" rel=\"noopener\">full audit report<\/a>.<\/p>\n<h3><span style=\"font-weight: 400;\">Critical severity<\/span><\/h3>\n<p>No critical severity issues were found.<\/p>\n<h3><span style=\"font-weight: 400;\">High severity<\/span><\/h3>\n<p>No high severity issues were found.<\/p>\n<h3><span style=\"font-weight: 400;\">Medium severity<\/span><\/h3>\n<p><span style=\"font-weight: 400;\">M1: Possible shares inflation<\/span><\/p>\n<h3><span style=\"font-weight: 400;\">Low severity<\/span><\/h3>\n<p>L1: Frequent claiming of rewards can lead to losses<\/p>\n<p>L2: The <code class=\"codehl\">latestAnswer<\/code> function reverts after slashing configuration removal<\/p>\n<h3><span style=\"font-weight: 400;\">Warning severity<\/span><\/h3>\n<p><span style=\"font-weight: 400;\">W1: Inconsistent usage of <code class=\"codehl\">_msgSender()<\/code> over <code class=\"codehl\">msg.sender<\/code><\/span><\/p>\n<p><span style=\"font-weight: 400;\">W2: Missing validation of the upper bound in <code class=\"codehl\">validateTargetLiquidity<\/code><\/span><\/p>\n<h3><span style=\"font-weight: 400;\">Informational severity<\/span><\/h3>\n<p><span style=\"font-weight: 400;\">I1: Typos<\/span><\/p>\n<p><span style=\"font-weight: 400;\">I2: Unused using-for directive<\/span><\/p>\n<p><span style=\"font-weight: 400;\">I3: Permit error handling<\/span><\/p>\n<p><span style=\"font-weight: 400;\">I4: The same suffix is used for name and symbol<\/span><\/p>\n<h2><span style=\"font-weight: 400;\">TRUST MODEL<\/span><\/h2>\n<p class=\"p1\">While the permissions within the system are carefully designed to limit the potential impact of any single component, users should trust the <code class=\"codehl\">DEFAULT_ADMIN_ROLE<\/code> (which should be granted to Aave governance) to correctly configure the system and act honestly.<\/p>\n<h2><span style=\"font-weight: 400;\">CONCLUSION<\/span><\/h2>\n<p class=\"p1\"><a href=\"https:\/\/ackee.xyz\">Ackee Blockchain Security<\/a> recommends BGD to:<\/p>\n<ul>\n<li class=\"p1\">set up off-chain monitoring for the purposes described in the <span class=\"s1\">M1<\/span> finding; and<\/li>\n<li class=\"p1\">address all other reported issues.<\/li>\n<\/ul>\n<p><b>Ackee Blockchain Security\u2019s full Aave Umbrella audit report can be found <\/b><a href=\"https:\/\/github.com\/aave-dao\/aave-umbrella\/blob\/main\/audits\/Ackee\/ackee-blockchain-aave-umbrella-report.pdf\"><b>here<\/b><\/a><b>.<\/b><\/p>\n<p><span style=\"font-weight: 400;\">We were delighted to audit Aave and look forward to working with them again.<\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Umbrella is a new version of the Aave Safety Module to help address bad debt management within the Aave protocol. BGD engaged Ackee Blockchain Security to perform a security review of the Aave protocol with a total time donation of 19 engineering days in a period between February 10 and February 26, 2025. METHODOLOGY We began our review using static analysis tools,&hellip;<\/p>\n","protected":false},"author":30,"featured_media":1024,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[20,10,103],"tags":[89,24,104],"class_list":["post-1023","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-audits","category-ethereum","category-wake","tag-audit-summary","tag-ethereum","tag-wake"],"aioseo_notices":[],"featured_image_src":"https:\/\/ackee.xyz\/blog\/wp-content\/uploads\/2025\/03\/aave-600x400.png","featured_image_src_square":"https:\/\/ackee.xyz\/blog\/wp-content\/uploads\/2025\/03\/aave-600x600.png","author_info":{"display_name":"Tom\u00e1\u0161 Kova\u0159\u00edk","author_link":"https:\/\/ackee.xyz\/blog\/author\/tomas-kovarik\/"},"_links":{"self":[{"href":"https:\/\/ackee.xyz\/blog\/wp-json\/wp\/v2\/posts\/1023","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ackee.xyz\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/ackee.xyz\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/ackee.xyz\/blog\/wp-json\/wp\/v2\/users\/30"}],"replies":[{"embeddable":true,"href":"https:\/\/ackee.xyz\/blog\/wp-json\/wp\/v2\/comments?post=1023"}],"version-history":[{"count":0,"href":"https:\/\/ackee.xyz\/blog\/wp-json\/wp\/v2\/posts\/1023\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/ackee.xyz\/blog\/wp-json\/wp\/v2\/media\/1024"}],"wp:attachment":[{"href":"https:\/\/ackee.xyz\/blog\/wp-json\/wp\/v2\/media?parent=1023"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ackee.xyz\/blog\/wp-json\/wp\/v2\/categories?post=1023"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ackee.xyz\/blog\/wp-json\/wp\/v2\/tags?post=1023"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}