No mundo em rápida evolução do DeFi, garantir a estabilidade e segurança do protocolo é essencial. Durante uma recente revisão de segurança de um projeto CDP, observei como vulnerabilidades específicas poderiam surgir em determinadas configurações. Embora as configurações de parâmetros atuais neste projeto sejam robustas, entender esses riscos potenciais é crucial para manter a integridade do protocolo.
Este artigo tem como objetivo explorar o papel crítico que as taxas de empréstimo e resgate únicas desempenham neste contexto. Ao examinar cenários específicos de exploração que poderiam surgir sem essas taxas, demonstrarei como uma estrutura de taxas adequada é essencial para evitar ataques desestabilizadores, garantindo assim a segurança e viabilidade a longo prazo do protocolo.
Inspirados em um dos protocolos originais, Liquity, e suas derivações, muitos modelos de CDP (Posição de Dívida Garantida) geram stablecoins descentralizadas através de supercolateralização. Esses modelos geralmente incorporam um conjunto complexo, porém sofisticado, de mecanismos projetados para manter a fixação ao dólar americano enquanto garantem a segurança do protocolo em várias condições, efetivamente minimizando o risco de dívidas ruins. Esses protocolos se distinguem por meio de personalizações importantes, incluindo incentivos econômicos adaptados que se alinham mais de perto com os objetivos específicos do protocolo.
A taxa de resgate é uma cobrança aplicada quando um usuário resgata a stablecoin do protocolo pelo seu colateral subjacente. Esta taxa é projetada para estabilizar o valor da stablecoin tornando o processo de resgate mais caro quando os resgates são frequentes, evitando assim resgates excessivos que poderiam desestabilizar o protocolo.
A taxa de resgate é calculada com base na taxa base do protocolo, um parâmetro de ajuste dinâmico que reflete a atividade recente dentro do sistema. Especificamente, a taxa base aumenta com cada resgate, tornando os resgates subsequentes mais caros.
Este aumento é proporcional à fração do fornecimento total de stablecoin que é resgatada. Com o tempo, se não ocorrerem resgates, a taxa base gradualmente decai para zero, com uma meia-vida de aproximadamente 12 horas.
A taxa de resgate é calculada usando a fórmula:
Por exemplo, se a taxa de base for de 1% e um usuário resgatar 100 stablecoins quando o preço do colateral for de $50.000, a taxa de resgate seria:
Assim, o usuário receberia ligeiramente menos colateral após contabilizar a taxa de resgate. Este mecanismo garante que os resgates permaneçam economicamente sensatos, ao mesmo tempo que protege o protocolo de atividades de arbitragem desestabilizadoras.
A taxa de empréstimo é outra taxa única que é cobrada quando um usuário toma empréstimo de stablecoins contra a sua garantia. Esta taxa é igualmente baseada na taxa base, mas aplica-se no momento em que as stablecoins são retiradas da Reserva do utilizador (um contrato de cofre que detém a garantia e a dívida do utilizador).
A taxa de empréstimo é calculada da seguinte forma:
Por exemplo, se um usuário deseja pedir emprestado 4.000 stablecoins e a taxa base estiver definida em 0,5%, a taxa seria:
Esta taxa é adicionada à dívida do utilizador, o que significa que a sua dívida total seria o montante emprestado mais a taxa (por exemplo, 4.000 stablecoins + 20 stablecoins = 4.020 stablecoins).
Essas taxas também funcionam como ancoragens suaves, influenciando indiretamente o preço de mercado da stablecoin, tornando-a menos atrativa para empréstimos ou resgates em certas condições, ajudando assim a manter a stablecoin vinculada de perto a $1.
Agora, vamos explorar o que poderia acontecer se essas taxas cruciais fossem removidas ou definidas como zero.
Sem uma taxa de resgate única, o protocolo poderia inadvertidamente transformar-se num DEX de troca sem deslizamento. Nesse cenário, os detentores de grandes stablecoins poderiam explorar o mecanismo de resgate para trocar stablecoins por garantias sem incorrer em custos significativos, efetuando efetivamente negociações de arbitragem em grande escala. Isso poderia levar a vários resultados negativos, pois neste ambiente de zero deslizamento, os resgates em grande escala não apenas drenariam a liquidez do protocolo, mas também forçariam os mutuários a vender suas garantias pelo preço de mercado atual. Embora a sua dívida fosse reduzida em conformidade, essa liquidação forçada poderia aumentar os custos operacionais para os utilizadores, especialmente se a stablecoin estiver a ser negociada abaixo de $1.
Além disso, há o risco de front-running do oráculo: se um usuário perceber que uma transação está prestes a atualizar o oráculo de preço do colateral para refletir um preço mais alto, eles poderiam rapidamente resgatar uma grande quantidade de stablecoin antes da atualização do preço. Uma vez que o preço do colateral é atualizado e sobe, o usuário poderia então vender o colateral resgatado com lucro, completando um ciclo de arbitragem. Essa prática não apenas explora o protocolo, mas também deixa os mutuários em desvantagem, pois eles podem ser forçados a vender seu colateral a preços menos favoráveis.
Um dos cenários de exploração mais diretos envolve a manipulação da taxa de resgate para reduzir custos. Em protocolos onde não há taxa de empréstimo única, os usuários podem pegar grandes quantidades de stablecoin, inflando artificialmente a dívida total do protocolo. Uma vez inflada a dívida, eles podem resgatar suas stablecoins a uma taxa mais baixa, visto que a taxa de resgate é calculada com base na proporção do tamanho do resgate para a dívida total.
Esta manipulação mina a estrutura de taxas pretendida do protocolo, levando a uma receita reduzida para o protocolo e potencialmente desestabilizando o sistema. Por exemplo, os atacantes podem usar empréstimos instantâneos para pedir grandes quantidades de garantia, que depois utilizam para criar uma quantidade substancial de stablecoins, aumentando assim a dívida total do sistema. Em seguida, realizam uma operação de resgate, beneficiando da taxa reduzida devido à dívida inflacionada, e finalmente reembolsam o empréstimo instantâneo, deixando o protocolo com menos receita do que o esperado e podendo levar a uma maior instabilidade para os utilizadores que possam não ter previsto serem alvo de resgate.
Outra vulnerabilidade crítica surge da capacidade de forçar o protocolo a entrar no Modo de Recuperação em um único bloco, permitindo assim a liquidação de posições com índices de colateral anteriormente saudáveis. Este exploit depende da alavancagem de empréstimos rápidos e do timing do ataque em torno de uma atualização de preços do oráculo.
O ataque desenrola-se da seguinte forma:
O atacante primeiro usa um empréstimo relâmpago para pedir emprestado uma grande quantidade de garantia, que é então depositada como garantia no protocolo. Usando essa garantia, o atacante pega emprestado stablecoins no Índice Mínimo de Garantia (MCR). O invasor pode executar essa ação para reduzir o Índice Total de Garantias (TCR) para 150%, o limite para acionar o Modo de Recuperação.
O atacante aguarda uma atualização do oráculo que reflete uma queda no preço do colateral. À medida que o novo preço mais baixo é atualizado no sistema, o valor do colateral cai, fazendo com que o TCR caia abaixo de 150%.
Com o TCR agora abaixo de 150%, o protocolo entra automaticamente no Modo de Recuperação. Nesse estado, o protocolo permite a liquidação de Tesouros com Índices de Colateral (CR) abaixo do novo TCR. O atacante pode então proceder à liquidação de Tesouros de outros usuários que agora possuem um CR abaixo do TCR, causando perdas para eles e lucrando com as recompensas de liquidação.
Proveniente do cenário de ataque anterior, este exploit avançado permite a um atacante forçar o protocolo a entrar no Modo de Recuperação através de um processo de resgate cuidadosamente elaborado. Ao contrário do ataque anterior, que pode temporariamente devolver o sistema ao modo normal após a liquidação, este método garante que o sistema permaneça em Modo de Recuperação, permitindo ao atacante explorar repetidamente a vulnerabilidade.
A questão central, que surge quando o sistema suporta vários tipos de colaterais, cada um gerido por diferentes Gestores de Tesouros, reside na possibilidade de a Taxa de Colateral Total (TCR) a nível do sistema diminuir após um resgate, mesmo que a saúde dos Gestores de Tesouros individuais melhore. Este resultado contra-intuitivo é resultado da complexa interação entre as taxas de colateral globais e locais.
Por exemplo, considere um cenário em que a TCR do sistema está em 150%.
Se um usuário resgatar contra um Tesouro com uma taxa de garantia de 160%, causando o fecho desse Tesouro, o cálculo resultante iria empurrar o TCR abaixo de 150%, desencadeando o Modo de Recuperação.
O ataque desenrola-se da seguinte forma:
O atacante abre uma posição mínima com uma taxa de colateral ligeiramente acima de 150% em uma Trove cuidadosamente selecionada. Essa configuração é crucial para garantir que o resgate no próximo passo efetivamente leve o TCR abaixo do limite crítico.
O atacante usa um empréstimo flash para abrir outra posição com uma relação de garantia na Taxa Mínima de Garantia (MCR) de 110% em qualquer Gerente de Tesouro, reduzindo a Taxa Total de Garantia (TCR) do sistema para exatamente 150%. Este passo prepara o sistema para o Modo de Recuperação.
O atacante resgata então a posição aberta no primeiro passo. Como esta posição tem um CR ligeiramente acima de 150%, resgatá-la faz com que o TCR caia abaixo de 150%, desencadeando assim o Modo de Recuperação. O resgate não só afeta a Trove específica sendo resgatada, mas também causa um efeito sistêmico que empurra o TCR para o Modo de Recuperação.
Com o sistema agora em Modo de Recuperação, o atacante pode liquidar qualquer posição com uma taxa de garantia abaixo de 150%. Essas liquidações podem restaurar o TCR para acima de 150%.
O atacante pode repetir os passos conforme necessário, mantendo o sistema em estado de Modo de Recuperação para explorar continuamente Troves com índices de colateral abaixo de 150%.
As taxas de resgate únicas e as taxas de empréstimo desempenham um papel crucial na mitigação dos riscos associados aos vetores de ataque descritos acima. Ao introduzir um custo para empréstimos e resgates, essas taxas tornam economicamente inviável que os atacantes executem manipulações lucrativas em grande escala na maioria dos casos.
Por exemplo, no cenário de manipulação da taxa de resgate, uma taxa de empréstimo única aumentaria o custo de inflacionar a dívida do sistema, tornando não lucrativo para o atacante explorar a taxa de resgate. Da mesma forma, em cenários onde o atacante procura desencadear o Modo de Recuperação, a taxa de empréstimo atuaria como um impedimento, aumentando o custo de assumir grandes quantidades de dívida para manipular o TCR.
À medida que o DeFi evolui, os protocolos enfrentarão ataques cada vez mais sofisticados. Para se manter à frente, é crucial entender como diferentes recursos interagem e potencialmente criam vulnerabilidades. A segurança efetiva requer um profundo entendimento de como os diferentes componentes do sistema interagem, bem como atenção cuidadosa às configurações e parâmetros que governam essas interações. Ao antecipar proativamente as maneiras pelas quais os recursos podem se combinar para criar vulnerabilidades, os designers podem construir protocolos que não são apenas seguros, mas também resilientes e adaptáveis a desafios futuros.
แชร์
Inhalt
No mundo em rápida evolução do DeFi, garantir a estabilidade e segurança do protocolo é essencial. Durante uma recente revisão de segurança de um projeto CDP, observei como vulnerabilidades específicas poderiam surgir em determinadas configurações. Embora as configurações de parâmetros atuais neste projeto sejam robustas, entender esses riscos potenciais é crucial para manter a integridade do protocolo.
Este artigo tem como objetivo explorar o papel crítico que as taxas de empréstimo e resgate únicas desempenham neste contexto. Ao examinar cenários específicos de exploração que poderiam surgir sem essas taxas, demonstrarei como uma estrutura de taxas adequada é essencial para evitar ataques desestabilizadores, garantindo assim a segurança e viabilidade a longo prazo do protocolo.
Inspirados em um dos protocolos originais, Liquity, e suas derivações, muitos modelos de CDP (Posição de Dívida Garantida) geram stablecoins descentralizadas através de supercolateralização. Esses modelos geralmente incorporam um conjunto complexo, porém sofisticado, de mecanismos projetados para manter a fixação ao dólar americano enquanto garantem a segurança do protocolo em várias condições, efetivamente minimizando o risco de dívidas ruins. Esses protocolos se distinguem por meio de personalizações importantes, incluindo incentivos econômicos adaptados que se alinham mais de perto com os objetivos específicos do protocolo.
A taxa de resgate é uma cobrança aplicada quando um usuário resgata a stablecoin do protocolo pelo seu colateral subjacente. Esta taxa é projetada para estabilizar o valor da stablecoin tornando o processo de resgate mais caro quando os resgates são frequentes, evitando assim resgates excessivos que poderiam desestabilizar o protocolo.
A taxa de resgate é calculada com base na taxa base do protocolo, um parâmetro de ajuste dinâmico que reflete a atividade recente dentro do sistema. Especificamente, a taxa base aumenta com cada resgate, tornando os resgates subsequentes mais caros.
Este aumento é proporcional à fração do fornecimento total de stablecoin que é resgatada. Com o tempo, se não ocorrerem resgates, a taxa base gradualmente decai para zero, com uma meia-vida de aproximadamente 12 horas.
A taxa de resgate é calculada usando a fórmula:
Por exemplo, se a taxa de base for de 1% e um usuário resgatar 100 stablecoins quando o preço do colateral for de $50.000, a taxa de resgate seria:
Assim, o usuário receberia ligeiramente menos colateral após contabilizar a taxa de resgate. Este mecanismo garante que os resgates permaneçam economicamente sensatos, ao mesmo tempo que protege o protocolo de atividades de arbitragem desestabilizadoras.
A taxa de empréstimo é outra taxa única que é cobrada quando um usuário toma empréstimo de stablecoins contra a sua garantia. Esta taxa é igualmente baseada na taxa base, mas aplica-se no momento em que as stablecoins são retiradas da Reserva do utilizador (um contrato de cofre que detém a garantia e a dívida do utilizador).
A taxa de empréstimo é calculada da seguinte forma:
Por exemplo, se um usuário deseja pedir emprestado 4.000 stablecoins e a taxa base estiver definida em 0,5%, a taxa seria:
Esta taxa é adicionada à dívida do utilizador, o que significa que a sua dívida total seria o montante emprestado mais a taxa (por exemplo, 4.000 stablecoins + 20 stablecoins = 4.020 stablecoins).
Essas taxas também funcionam como ancoragens suaves, influenciando indiretamente o preço de mercado da stablecoin, tornando-a menos atrativa para empréstimos ou resgates em certas condições, ajudando assim a manter a stablecoin vinculada de perto a $1.
Agora, vamos explorar o que poderia acontecer se essas taxas cruciais fossem removidas ou definidas como zero.
Sem uma taxa de resgate única, o protocolo poderia inadvertidamente transformar-se num DEX de troca sem deslizamento. Nesse cenário, os detentores de grandes stablecoins poderiam explorar o mecanismo de resgate para trocar stablecoins por garantias sem incorrer em custos significativos, efetuando efetivamente negociações de arbitragem em grande escala. Isso poderia levar a vários resultados negativos, pois neste ambiente de zero deslizamento, os resgates em grande escala não apenas drenariam a liquidez do protocolo, mas também forçariam os mutuários a vender suas garantias pelo preço de mercado atual. Embora a sua dívida fosse reduzida em conformidade, essa liquidação forçada poderia aumentar os custos operacionais para os utilizadores, especialmente se a stablecoin estiver a ser negociada abaixo de $1.
Além disso, há o risco de front-running do oráculo: se um usuário perceber que uma transação está prestes a atualizar o oráculo de preço do colateral para refletir um preço mais alto, eles poderiam rapidamente resgatar uma grande quantidade de stablecoin antes da atualização do preço. Uma vez que o preço do colateral é atualizado e sobe, o usuário poderia então vender o colateral resgatado com lucro, completando um ciclo de arbitragem. Essa prática não apenas explora o protocolo, mas também deixa os mutuários em desvantagem, pois eles podem ser forçados a vender seu colateral a preços menos favoráveis.
Um dos cenários de exploração mais diretos envolve a manipulação da taxa de resgate para reduzir custos. Em protocolos onde não há taxa de empréstimo única, os usuários podem pegar grandes quantidades de stablecoin, inflando artificialmente a dívida total do protocolo. Uma vez inflada a dívida, eles podem resgatar suas stablecoins a uma taxa mais baixa, visto que a taxa de resgate é calculada com base na proporção do tamanho do resgate para a dívida total.
Esta manipulação mina a estrutura de taxas pretendida do protocolo, levando a uma receita reduzida para o protocolo e potencialmente desestabilizando o sistema. Por exemplo, os atacantes podem usar empréstimos instantâneos para pedir grandes quantidades de garantia, que depois utilizam para criar uma quantidade substancial de stablecoins, aumentando assim a dívida total do sistema. Em seguida, realizam uma operação de resgate, beneficiando da taxa reduzida devido à dívida inflacionada, e finalmente reembolsam o empréstimo instantâneo, deixando o protocolo com menos receita do que o esperado e podendo levar a uma maior instabilidade para os utilizadores que possam não ter previsto serem alvo de resgate.
Outra vulnerabilidade crítica surge da capacidade de forçar o protocolo a entrar no Modo de Recuperação em um único bloco, permitindo assim a liquidação de posições com índices de colateral anteriormente saudáveis. Este exploit depende da alavancagem de empréstimos rápidos e do timing do ataque em torno de uma atualização de preços do oráculo.
O ataque desenrola-se da seguinte forma:
O atacante primeiro usa um empréstimo relâmpago para pedir emprestado uma grande quantidade de garantia, que é então depositada como garantia no protocolo. Usando essa garantia, o atacante pega emprestado stablecoins no Índice Mínimo de Garantia (MCR). O invasor pode executar essa ação para reduzir o Índice Total de Garantias (TCR) para 150%, o limite para acionar o Modo de Recuperação.
O atacante aguarda uma atualização do oráculo que reflete uma queda no preço do colateral. À medida que o novo preço mais baixo é atualizado no sistema, o valor do colateral cai, fazendo com que o TCR caia abaixo de 150%.
Com o TCR agora abaixo de 150%, o protocolo entra automaticamente no Modo de Recuperação. Nesse estado, o protocolo permite a liquidação de Tesouros com Índices de Colateral (CR) abaixo do novo TCR. O atacante pode então proceder à liquidação de Tesouros de outros usuários que agora possuem um CR abaixo do TCR, causando perdas para eles e lucrando com as recompensas de liquidação.
Proveniente do cenário de ataque anterior, este exploit avançado permite a um atacante forçar o protocolo a entrar no Modo de Recuperação através de um processo de resgate cuidadosamente elaborado. Ao contrário do ataque anterior, que pode temporariamente devolver o sistema ao modo normal após a liquidação, este método garante que o sistema permaneça em Modo de Recuperação, permitindo ao atacante explorar repetidamente a vulnerabilidade.
A questão central, que surge quando o sistema suporta vários tipos de colaterais, cada um gerido por diferentes Gestores de Tesouros, reside na possibilidade de a Taxa de Colateral Total (TCR) a nível do sistema diminuir após um resgate, mesmo que a saúde dos Gestores de Tesouros individuais melhore. Este resultado contra-intuitivo é resultado da complexa interação entre as taxas de colateral globais e locais.
Por exemplo, considere um cenário em que a TCR do sistema está em 150%.
Se um usuário resgatar contra um Tesouro com uma taxa de garantia de 160%, causando o fecho desse Tesouro, o cálculo resultante iria empurrar o TCR abaixo de 150%, desencadeando o Modo de Recuperação.
O ataque desenrola-se da seguinte forma:
O atacante abre uma posição mínima com uma taxa de colateral ligeiramente acima de 150% em uma Trove cuidadosamente selecionada. Essa configuração é crucial para garantir que o resgate no próximo passo efetivamente leve o TCR abaixo do limite crítico.
O atacante usa um empréstimo flash para abrir outra posição com uma relação de garantia na Taxa Mínima de Garantia (MCR) de 110% em qualquer Gerente de Tesouro, reduzindo a Taxa Total de Garantia (TCR) do sistema para exatamente 150%. Este passo prepara o sistema para o Modo de Recuperação.
O atacante resgata então a posição aberta no primeiro passo. Como esta posição tem um CR ligeiramente acima de 150%, resgatá-la faz com que o TCR caia abaixo de 150%, desencadeando assim o Modo de Recuperação. O resgate não só afeta a Trove específica sendo resgatada, mas também causa um efeito sistêmico que empurra o TCR para o Modo de Recuperação.
Com o sistema agora em Modo de Recuperação, o atacante pode liquidar qualquer posição com uma taxa de garantia abaixo de 150%. Essas liquidações podem restaurar o TCR para acima de 150%.
O atacante pode repetir os passos conforme necessário, mantendo o sistema em estado de Modo de Recuperação para explorar continuamente Troves com índices de colateral abaixo de 150%.
As taxas de resgate únicas e as taxas de empréstimo desempenham um papel crucial na mitigação dos riscos associados aos vetores de ataque descritos acima. Ao introduzir um custo para empréstimos e resgates, essas taxas tornam economicamente inviável que os atacantes executem manipulações lucrativas em grande escala na maioria dos casos.
Por exemplo, no cenário de manipulação da taxa de resgate, uma taxa de empréstimo única aumentaria o custo de inflacionar a dívida do sistema, tornando não lucrativo para o atacante explorar a taxa de resgate. Da mesma forma, em cenários onde o atacante procura desencadear o Modo de Recuperação, a taxa de empréstimo atuaria como um impedimento, aumentando o custo de assumir grandes quantidades de dívida para manipular o TCR.
À medida que o DeFi evolui, os protocolos enfrentarão ataques cada vez mais sofisticados. Para se manter à frente, é crucial entender como diferentes recursos interagem e potencialmente criam vulnerabilidades. A segurança efetiva requer um profundo entendimento de como os diferentes componentes do sistema interagem, bem como atenção cuidadosa às configurações e parâmetros que governam essas interações. Ao antecipar proativamente as maneiras pelas quais os recursos podem se combinar para criar vulnerabilidades, os designers podem construir protocolos que não são apenas seguros, mas também resilientes e adaptáveis a desafios futuros.