- El compilador de Rust debe bloquear el código que apunta a datos después de que esos datos han desaparecido. El issue 164250 de rust-lang/rust en GitHub informa de que colocar una referencia de vida corta en un campo de struct puede eludir esta comprobación.
- En el ejemplo original, el programa compiló e imprimió un valor de memoria que ya había sido liberado. El autor del issue escribió que, al activar AddressSanitizer, una herramienta que comprueba direcciones de memoria, el programa se detuvo con un error stack-use-after-scope. Este es el resultado que informó el autor.
- El autor escribió que se reproduce en nightly (versiones de prueba previas al lanzamiento) y en versiones estables 1.85.0 y posteriores. La afirmación de que el mismo código compiló después de 1.18.0 es la experiencia de un comentarista.
- El cuerpo del issue clasifica este problema como P-high (prioridad alta) y explica que aprovecharlo requiere una implementación de Drop diseñada deliberadamente. Este es el juicio de los autores del issue. El texto original no confirma ningún código de corrección ni una versión publicada que lo incluya.
O: Para los desarrolladores de bibliotecas en Rust que manejan referencias dentro de sus propias implementaciones de Drop, el código de ejemplo de este issue resulta útil para ejecutarlo primero y comprobar si en su código intervienen referencias de vida corta.
X: El texto original no confirma que se haya publicado una corrección, y la afirmación de que la explicación para la explotación requiere una implementación de Drop intencionada procede de los autores del issue, por lo que el alcance real del impacto debe verificarse por separado.