BTCC / BTCC Square / CryptonewsES /
Hackers se alzan con 9 millones de dólares en audaz ataque al protocolo Yearn Finance

Hackers se alzan con 9 millones de dólares en audaz ataque al protocolo Yearn Finance

Published:
2025-12-01 10:45:45

Un exploit inteligente desangra uno de los pilares de DeFi.

El ataque no fue un forcejeo bruto. Los atacantes identificaron una vulnerabilidad sutil en la lógica de un contrato inteligente, permitiéndoles manipular los flujos de valor y desviar fondos. El protocolo, diseñado para optimizar rendimientos automáticamente, se convirtió en su propio punto de fallo.

La anatomía del drenaje

La brecha explotó una discrepancia entre la valoración de los activos y la ejecución de las transacciones. Los hackers orquestaron una serie de interacciones que inflaron artificialmente un valor antes de canjearlo por otro, extrayendo la diferencia. El proceso fue rápido, limpio y devastadoramente eficiente, dejando atrás un contrato vaciado y un agujero de 9 millones de dólares.

Las finanzas descentralizadas demuestran, una vez más, que el código es ley... hasta que alguien encuentra un error en la letra pequeña. Un recordatorio caro de que en la carrera por los rendimientos, la seguridad no puede ser una ocurrencia tardía. La próxima vez que alguien hable de 'bancos obsoletos', pregúntales cuándo fue la última vez que su banco tradicional perdió 9 millones en un bug de software.

¿Cómo se ha producido el ataque contra Yearn Finance?

Según los primeros informes del equipo de desarrollo, el problema se ha originado en una función interna que, lo que ha habilitado la ejecución de operaciones que no tendrían que haberse procesado.

At 21:11 UTC on Nov 30, an incident occurred involving the yETH stableswap pool that resulted in the minting of a large amount of yETH. The contract impacted is a custom version of popular stableswap code, unrelated to other Yearn products. Yearn V2/V3 vaults are not at risk.

— yearn (@yearnfi) December 1, 2025

Los datos on-chain muestran que el atacantecientos de billones de tokens yETH en una sola operación.

Este ataque de infinite mintmodificar el equilibrio de los pools donde yETH actuaba como colateral, vaciando reservas reales de ETH y de liquid staking Tokens.

Minutos antes del ataque, se han desplegado varios contratos auxiliares quedespués, una técnica habitual en operaciones sofisticadas quetambién en otras estafas con criptomonedas recientes.

Este tipo de escenarios, relativamente poco comunes en protocolos maduros, ha provocado una reacción especialmente sensible por parte de analistas y usuarios.

Reacción del mercado y consecuencias para Yearn Finance

La noticiaen el token YFI, que ha registrado oscilaciones en las horas posteriores al anuncio. No obstante, algunos analistas consideran que el impacto podría ser limitado si no se detectan pérdidas significativas.

#PeckShieldAlert Yearn Finance @yearnfi suffered an attack resulting in a total loss of ~$9M.

The exploit involved minting a near-infinite number of yETH tokens, depleting the pool in a single transaction.

~1K $ETH (worth ~$3M) was sent to #TornadoCash, while the exploiter's… pic.twitter.com/IXNygpwoWa

— PeckShieldAlert (@PeckShieldAlert) December 1, 2025

De forma similar, varios analistas han recordado que los contratos inteligentes, aunque auditados, nunca están completamente libres de errores, y que este tipo de incidentesde que la seguridad debe ser una prioridad constante en el desarrollo DeFi.

En general, la comunidad de Yearn Financeal incidente: Mientras que algunospor la posibilidad de que el fallo haya permitido redirigir fondos de forma indebida, otros han defendido la rapidez con la que el equipo ha respondido.

¿Qué podemos aprender del ataque a Yearn Finance?

El incidente en Yearn Financeen la importancia de la seguridad dentro del ecosistema DeFi.

Aunque el problema se ha contenido rápidamente, el episodio recuerda que incluso los proyectos más experimentadosy deben mantener una vigilancia constante sobre sus contratos inteligentes.

En medio de la volatilidad, algunos analistas han señalado que este tipo de episodios vuelve a despertar el interés por proyectos con auditorías de seguridad reforzadas, especialmente las mejores preventas de criptomonedas, que suelen captar la atención del mercado en momentos de incertidumbre.

Leer más

  • Binance se ve afectado por nueva demanda: ¿qué está pasando?
  • Tether suspende sus operaciones de minería en Uruguay por los altos costos de energía
  • Sparkle (SSS) debuta en Gate.io: así reacciona una altcoin cuando llega a un CEX grande
Table of Contents
  • En este artículo
  • ¿Cómo se ha producido el ataque contra Yearn Finance? Reacción del mercado y consecuencias para Yearn Finance
  • ¿Qué podemos aprender del ataque a Yearn Finance?
  • Leer más
  • En este artículo
  • ¿Cómo se ha producido el ataque contra Yearn Finance?
  • Reacción del mercado y consecuencias para Yearn Finance
  • ¿Qué podemos aprender del ataque a Yearn Finance?
  • Leer más
  • window.addEventListener("DOMContentLoaded", () => { const header = document.querySelector(".header_wrapper"); const pageLegend = document.querySelector('#multiCollapse1'); const pageLegendList = document.querySelector('#multiCollapse2'); const pageLegendCollapse = new bootstrap.Collapse(pageLegend, {toggle: document.querySelector(".toc-sticky").classList.contains('sticky')}); /** * Changing current title */ (function (pageLegend) { const titleNodes = pageLegend.querySelectorAll('.StepProgress-item__link'); if (!titleNodes.length) return; const titles = [...titleNodes].map((itm, i) => ({ id: itm.getAttribute('data-id'), text: itm.textContent, level: itm.getAttribute('data-level'), linkNode: itm, titleNode: document.getElementById(itm.getAttribute('data-id')), index: i, })); /** * Source: https://www.sitepoint.com/throttle-scroll-events/ * @param {Function} fn * @param {number} wait * @returns {(function(): void)|*} */ const throttle = (fn, wait) => { let time = Date.now(); return function () { if ((time + wait - Date.now()) { const documentScrollTop = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0; let current = 0; // Title titles.forEach((itm, i) => { //console.log(itm) const itmOffsetTop = itm.titleNode ? itm.titleNode.offsetTop - 100 : 0; if (documentScrollTop >= itmOffsetTop) { document.getElementById('toc-current-title').innerHTML = itm.text; document.getElementById('toc-current-title').setAttribute('data-current-id', itm.id); document.getElementById('toc-current-title').setAttribute('data-current-level', itm.level); current = i; } }) // close all list and open sub list if needed if (document.querySelector(".toc-sticky").classList.contains('sticky')) { document.querySelectorAll('.subList-in-progress').forEach((el) => { el.children[1].classList.remove('show'); el.getElementsByClassName('icon-chevron-down')[0].classList.remove('up'); }); const currentEl = titles[current]; currentEl.linkNode.classList.add('show'); } titles.forEach((itm, i) => { itm.linkNode.parentNode.parentNode.classList.remove('current', 'is-done'); if (current > i) { itm.linkNode.parentNode.parentNode.classList.add('is-done') }; if (current === i) { itm.linkNode.parentNode.parentNode.classList.add('current'); }; }) } changeCurrentTitle(); document.addEventListener('scroll', throttle(changeCurrentTitle, 50)); })(pageLegend); /** * Collapse */ (function (pageLegend, header) { const icon = pageLegend.parentNode.querySelector(".collapse-action-btn i"); const collapseToggle = (status) => (e) => { if (!e.target.isEqualNode(pageLegend)) return; icon.classList.toggle("up"); const containerHeight = pageLegend.getBoundingClientRect().height; const showSubtitleContent = () => { const currentId = document.getElementById('toc-current-title').getAttribute('data-current-id'); const currentLevel = document.getElementById('toc-current-title').getAttribute('data-current-level'); const currentSubTitle = currentLevel == 3 ? document.querySelector(`a[data-id="${currentId}"]`).parentNode.parentNode.parentNode : false; if (!currentSubTitle) return; new bootstrap.Collapse(currentSubTitle, {toggle: false}).show(); } showSubtitleContent(); console.log(status + 'fdsfsd' + containerHeight); if (status === 'shown' && document.querySelector(".toc-sticky").classList.contains('sticky')) { document.querySelector('html').classList.remove('overflow-hidden'); pageLegend.classList.add('overflow-auto'); pageLegend.style.height = `calc(100vh - ${header.getBoundingClientRect().height + document.querySelector('.toc-sticky__open').getBoundingClientRect().height + 16}px)`; } else if (status === 'hide') { document.querySelector('html').removeClass('overflow-hidden'); pageLegend.classList.remove('overflow-auto'); pageLegend.style.height = 'auto'; } } pageLegend.addEventListener('shown.bs.collapse', collapseToggle('shown')); pageLegend.addEventListener('hide.bs.collapse', collapseToggle('hide')); })(pageLegend, header); /** * Collapse sub-titles */ (function (pageLegend) { const collapseEls = pageLegend.querySelectorAll('.collapse'); collapseEls.forEach(function (el) { const toggleArrowDirection = function (e) { if (!e.target.isEqualNode(el)) return; const id = this.getAttribute('id'); document.querySelector(`.collapse-action-btn[data-bs-target="#${id}"] .icon-chevron-down`).classList.toggle('up'); } el.addEventListener('shown.bs.collapse', toggleArrowDirection); el.addEventListener('hide.bs.collapse', toggleArrowDirection); }) })(pageLegend); /** * Collapse main title */ (function (pageLegendList) { const icon = pageLegendList.parentNode.querySelector(".collapse-action-btn i"); const collapseToggle = () => (e) => { if (!e.target.isEqualNode(pageLegendList)) return; icon.classList.toggle("up"); } pageLegendList.addEventListener('shown.bs.collapse', collapseToggle()); pageLegendList.addEventListener('hide.bs.collapse', collapseToggle()); })(pageLegendList); (function (pageLegendList) { const collapseEls = pageLegendList.querySelectorAll('.collapse'); collapseEls.forEach(function (el) { const toggleArrowDirection = function (e) { if (!e.target.isEqualNode(el)) return; const id = this.getAttribute('id'); document.querySelector(`.toc-sticky-list .collapse-action-btn[data-bs-target="#${id}"] .icon-chevron-down`).classList.toggle('up'); } el.addEventListener('shown.bs.collapse', toggleArrowDirection); el.addEventListener('hide.bs.collapse', toggleArrowDirection); }) })(pageLegendList); /** * Sticky functionality * Source: https://stackoverflow.com/questions/17893771/javascript-sticky-div-after-scroll */ (function (header, pageLegendCollapse) { // set everything outside the onscroll event (less work per scroll) const target = document.querySelector(".toc-sticky"); const targetListStatic = document.querySelector(".toc-sticky-list"); if (!target || !header) return; const headerHeight = header.getBoundingClientRect().height; const targetHeight = targetListStatic.getBoundingClientRect().height; // -headerHeight so it won't be jumpy const stop = targetListStatic.offsetTop + headerHeight + targetHeight; const docBody = document.documentElement || document.body.parentNode || document.body; const hasOffset = window.pageYOffset !== undefined; const applySticky = function () { // cross-browser compatible scrollTop. const scrollTop = hasOffset ? window.pageYOffset : docBody.scrollTop; // if user scrolls to headerHeight from the top of the target div if (scrollTop >= stop) { pageLegendCollapse.hide(); // stick the div target.classList.add("sticky"); //target.style.marginTop = `${headerHeight}px`; } else { pageLegendCollapse.show(); // release the div target.classList.remove("sticky"); target.style.marginTop = ""; } } applySticky(); window.addEventListener('scroll', applySticky); })(header, pageLegendCollapse); jQuery('span.show_moretoc').click(function () { jQuery('span.show_moretoc').hide(); jQuery('.ms_hidetoc').show(); }); });

    |Square

    Descárguese la aplicación BTCC para empezar su trayectoria cripto

    Empiece hoy mismo Escanéelo y únase a más de 100 millones de usuarios