{"id":1081,"date":"2025-07-21T13:42:59","date_gmt":"2025-07-21T11:42:59","guid":{"rendered":"https:\/\/ackee.xyz\/blog\/?p=1081"},"modified":"2025-07-21T13:44:12","modified_gmt":"2025-07-21T11:44:12","slug":"vfat-farm-strategies-audit-summary","status":"publish","type":"post","link":"https:\/\/ackee.xyz\/blog\/vfat-farm-strategies-audit-summary\/","title":{"rendered":"VFAT Farm Strategies Audit Summary"},"content":{"rendered":"<p class=\"p1\">VFAT is a yield aggregator that uses the Sickle smart contract wallet for yield farming. It reduces complex operations such as entering and exiting positions, compounding, or rebalancing, into single transactions.<\/p>\n<p class=\"p1\">The protocol team engaged Ackee Blockchain Security to perform a security review of Farm Strategies smart contracts with a total time donation of 12 engineering days in a period between May 19 and June 3, 2025.<\/p>\n<p>A second, fix review was performed of the fixes from the previous revision.<\/p>\n<p data-atomic=\"true\" data-lastedited=\"1747141043695\" data-sessionid=\"68027ef2-6bfb-4f57-8baf-6802692c40ad\" data-id=\"94c0f041-cf66-4cac-bc37-17fd7ad11df5\">We thank <a href=\"https:\/\/www.optimism.io\/\" target=\"_blank\" rel=\"noopener\">Optimism<\/a> for approving a grant that partly funded this and a previous audit of VFAT.<\/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\">Wake<\/a>. We then took a deep dive into the logic of the contracts.<\/p>\n<p class=\"p1\">During the review, we paid special attention to:<\/p>\n<ul>\n<li class=\"p1\">ensuring the arithmetic of the system is correct;<\/li>\n<li class=\"p1\">detecting possible reentrancies in the code;<\/li>\n<li class=\"p1\">checking the safety of delegatecall usage;<\/li>\n<li class=\"p1\">ensuring access controls are not too relaxed or too strict;<\/li>\n<li class=\"p1\">checking the correctness of the upgradeability implementation; 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\">d85b2cd<\/code> and the scope was the following:<\/p>\n<ul>\n<li><code class=\"codehl\">contracts\/connectors\/uniswap\/UniswapV3Connector.sol<\/code><\/li>\n<li><code class=\"codehl\">contracts\/connectors\/velodrome\/SlipstreamGaugeConnector.sol<\/code><\/li>\n<li><code class=\"codehl\">contracts\/connectors\/velodrome\/SlipstreamNftConnector.sol<\/code><\/li>\n<li><code class=\"codehl\">contracts\/connectors\/velodrome\/VelodromeGaugeRegistry.sol<\/code><\/li>\n<li><code class=\"codehl\">contracts\/strategies\/FarmStrategy.sol<\/code><\/li>\n<li><code class=\"codehl\">contracts\/strategies\/MultiFarmStrategy.sol<\/code><\/li>\n<li><code class=\"codehl\">contracts\/strategies\/NftFarmStrategy.sol<\/code><\/li>\n<li><code class=\"codehl\">contracts\/strategies\/SweepStrategy.sol<\/code><\/li>\n<li><code class=\"codehl\">contracts\/libraries\/ZapLib.sol <\/code><\/li>\n<li><code class=\"codehl\">contracts\/libraries\/NftZapLib.sol<\/code><\/li>\n<\/ul>\n<p>The focus of this audit was to review the integration of the protocol with external protocols Uniswap and Velodrome.<\/p>\n<p>The second review was done on the given commit <code class=\"codehl\">e5ff820<\/code>. The scope of the second review was limited to the fixes of issues found in the previous revision and no other code changes were audited. 5 issues were fixed, 7 issues acknowledged by the client.<\/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 <em>W<\/em><\/span><i><span style=\"font-weight: 400;\">arning<\/span><\/i><span style=\"font-weight: 400;\"> or <em>I<\/em><\/span><i><span style=\"font-weight: 400;\">nformational<\/span><\/i><span style=\"font-weight: 400;\"> severity ratings.<\/span><\/p>\n<p class=\"p1\">Our review resulted in <strong>12 findings<\/strong>, ranging from Info to Medium severity. The most severe one was M1, which is a front-running issue through which users&#8217; funds could be stolen by a malicious actor. However, the likelihood of this happening is low. Most findings are related to violations of best practices, code quality issues, and the trust model.<\/p>\n<p>The second security review was limited to issues found in the first security review and no other code changes were audited.<\/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>M1: Front-run of <code class=\"codehl\">Sickle<\/code> deployment gives an opportunity for attacker to specify arbitrary <code class=\"codehl\">approved<\/code> and <code class=\"codehl\">referralCode<\/code> arguments<\/p>\n<h3><span style=\"font-weight: 400;\">Low severity<\/span><\/h3>\n<p>L1: The charge fee can be bypassed for several functions<\/p>\n<h3><span style=\"font-weight: 400;\">Warning severity<\/span><\/h3>\n<p>W1: Withdrawal of funds can be blocked by <code class=\"codehl\">Collector<\/code> contract by not accepting tokens<\/p>\n<p>W2: Connectors are a single point of failure<\/p>\n<p>W3: Usage of function with <code class=\"codehl\">inplace=True<\/code> argument always fails in gauges that use NFTs<\/p>\n<p>W4: Missing <code class=\"codehl\">CompoundFor<\/code> fee calculation<\/p>\n<p>W5: <code class=\"codehl\">block.timestamp<\/code> is used for swap deadline<\/p>\n<p>W6: Incorrect price calculation<\/p>\n<h3><span style=\"font-weight: 400;\">Informational severity<\/span><\/h3>\n<p>I1: Missing NatSpec comments<\/p>\n<p>I2: Potential incorrect fee calculation<\/p>\n<p>I3: Unexpected revert in <code class=\"codehl\">increase<\/code> function<\/p>\n<p>I4: Missing events in <code class=\"codehl\">MultiFarmStrategy<\/code><\/p>\n<h2><span style=\"font-weight: 400;\">TRUST MODEL<\/span><\/h2>\n<p class=\"p1\">The protocol requires users to trust administrators who control critical parameters (fees, whitelists, Connector updates) and Automators who execute operations on their behalf. While users control their Sickle instances and position settings, the system maintains centralized control points. Trust risks are partially mitigated through hardcoded limits and multisig requirements; however, users must accept risks of centralized control and potential transaction manipulation by Automators who can control transaction timing.<\/p>\n<h2><span style=\"font-weight: 400;\">CONCLUSION<\/span><\/h2>\n<p class=\"p1\"><a href=\"https:\/\/ackee.xyz\">Ackee Blockchain Security<\/a> recommended VFAT to:<\/p>\n<ul>\n<li class=\"p1\">validate <code class=\"codehl\">approved<\/code> argument in <code class=\"codehl\">deposit<\/code> functions if it equals to <code class=\"codehl\">Sickle.approved<\/code>;<\/li>\n<li class=\"p1\">make trust model more permissionless;<\/li>\n<li class=\"p1\">use <code class=\"codehl\">prices<\/code> function instead of <code class=\"codehl\">getPoolPrice<\/code> for price calculation;<\/li>\n<li class=\"p1\">read and review the complete audit report; and<\/li>\n<li class=\"p1\">address all identified issues.<\/li>\n<\/ul>\n<p><b>Ackee Blockchain Security\u2019s full VFAT Farm Strategies audit report can be found <\/b><a href=\"https:\/\/github.com\/Ackee-Blockchain\/public-audit-reports\/blob\/master\/2025\/ackee-blockchain-vfat-sickle-report.pdf\"><b>here<\/b><\/a><b>.<\/b><\/p>\n<p><span style=\"font-weight: 400;\">We were delighted to audit VFAT again, and look forward to working with them in the future.<\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>VFAT is a yield aggregator that uses the Sickle smart contract wallet for yield farming. It reduces complex operations such as entering and exiting positions, compounding, or rebalancing, into single transactions. The protocol team engaged Ackee Blockchain Security to perform a security review of Farm Strategies smart contracts with a total time donation of 12 engineering days in a period between May&hellip;<\/p>\n","protected":false},"author":30,"featured_media":1083,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[20,10,80,103],"tags":[21,89,24,155],"class_list":["post-1081","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-audits","category-ethereum","category-solidity","category-wake","tag-audit","tag-audit-summary","tag-ethereum","tag-vfat"],"aioseo_notices":[],"featured_image_src":"https:\/\/ackee.xyz\/blog\/wp-content\/uploads\/2025\/07\/vfat-blog-600x400.png","featured_image_src_square":"https:\/\/ackee.xyz\/blog\/wp-content\/uploads\/2025\/07\/vfat-blog-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\/1081","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=1081"}],"version-history":[{"count":0,"href":"https:\/\/ackee.xyz\/blog\/wp-json\/wp\/v2\/posts\/1081\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/ackee.xyz\/blog\/wp-json\/wp\/v2\/media\/1083"}],"wp:attachment":[{"href":"https:\/\/ackee.xyz\/blog\/wp-json\/wp\/v2\/media?parent=1081"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ackee.xyz\/blog\/wp-json\/wp\/v2\/categories?post=1081"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ackee.xyz\/blog\/wp-json\/wp\/v2\/tags?post=1081"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}