Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
Digital-Signature-Forgery-Attack — Cómo las vulnerabilidades CVE-2025-29774 y el error SIGHASH_SINGLE amenazan los métodos operativos de las carteras multifirma con RawTX falsos | Kitploit
Herramientas/GitHubGitHub/demining/digital-signature-forgery-attack
Análisis de VulnerabilidadesExplotaciónCriptografíaCTFAprendizaje y EducaciónRecursos Curados
GitHubdemining/digital-signature-forgery-attack

Digital-Signature-Forgery-Attack

Cómo las vulnerabilidades CVE-2025-29774 y el error SIGHASH_SINGLE amenazan los métodos operativos de las carteras multifirma con RawTX falsos

Ver RepositorioSitio web
42hace 1 añoAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir
Ataque de falsificación de firma digital: cómo las vulnerabilidades CVE-2025-29774 y el error SIGHASH_SINGLE amenazan los métodos operativos de billeteras multifirma con RawTX falso

En este artículo, analizaremos el ataque criptográfico de falsificación de firmas digitales (Digital Signature Forgery Attack), cuyas consecuencias representan una amenaza para la seguridad de las transacciones en la red Bitcoin, ya que las firmas digitales confirman la propiedad y autorización de las transferencias de criptomonedas. Consideraremos ejemplos del impacto de dichos ataques en Bitcoin basados en investigaciones modernas y vulnerabilidades identificadas.

Un ataque de falsificación de firma digital (Digital Signature Forgery Attack) es un intento de un atacante de crear una firma digital ECDSA falsa que la red Bitcoin reconocerá como válida. Este ataque permite autorizar transacciones sin conocer la clave privada del propietario, lo que pone en riesgo la seguridad de los fondos en la billetera criptográfica del poseedor de monedas BTC.


  • Tutorial: https://youtu.be/qbu1m_C1wyA
  • Tutorial: https://cryptodeeptech.ru/digital-signature-forgery-attack
  • Tutorial: https://dzen.ru/video/watch/68801dfc0c886621f7c1a0db
  • Google Colab: https://colab.research.google.com/drive/1TKrJ0bKsNgc72H9UvzpCnh2YPmRsyPdW

En criptografía, una firma digital proporciona confirmación de la autenticidad de un mensaje o transacción. La falsificación de firma significa que es posible crear un par “RawTX” que el sistema aceptará como válido, aunque en realidad no fue creado por el propietario de la clave privada. Esto abre el camino al fraude, el robo de fondos y la violación de la integridad de la cadena de bloques. El ataque de falsificación de firma digital (DSFA) como ataque criptográfico se implementa en componentes de software que utilizan la librería xml-crypto para verificar las firmas de documentos XML en la plataforma Node.js.


Ataque de falsificación de firma digital: cómo las vulnerabilidades CVE-2025-29774 y el error SIGHASH_SINGLE amenazan los métodos operativos de billeteras multifirma con RawTX falso

https://youtu.be/qbu1m_C1wyA


En primer lugar, esto afecta a soluciones de integración empresarial, servicios en la nube y sistemas de inicio de sesión único, como IBM App Connect Enterprise Certified Container y otras aplicaciones que dependen de xml-crypto para la autenticación y autorización SAML. Las vulnerabilidades de hardware no están asociadas con dispositivos físicos específicos, sino que se implementan en productos de software que utilizan la librería vulnerable.

Las vulnerabilidades CVE-2025-29774 y CVE-2025-29775, conocidas como Ataque de Falsificación de Firma Digital (Digital Signature Forgery Attack), se implementan en la librería de software  xml-crypto , una librería para firmar digitalmente y cifrar documentos XML en la plataforma Node.js.


Ataque de falsificación de firma digital: cómo las vulnerabilidades CVE-2025-29774 y el error SIGHASH_SINGLE amenazan los métodos operativos de billeteras multifirma con RawTX falso
Security Bulletin: IBM App Connect Enterprise Certified Container operands are vulnerable to bypass signature validation in XML data [CVE-2025-29774] [CVE-2025-29775]

  • IBM App Connect Enterprise Certified Container  es un software de integración y procesamiento de datos que utiliza xml-crypto para verificar las firmas de documentos XML. Las vulnerabilidades permiten eludir la verificación de firmas digitales, lo que posibilita la falsificación y modificación de mensajes firmados, incluyendo respuestas SAML para autenticación y autorización.
  • Sistemas y aplicaciones que utilizan Node.js con la librería xml-crypto  para verificar mensajes XML firmados, especialmente en el contexto de autenticación SAML (por ejemplo, portales empresariales, sistemas de inicio de sesión único, servicios en la nube). La vulnerabilidad permite a un atacante modificar mensajes XML firmados válidos para que pasen la verificación de firma, lo que conduce a la elusión de autenticación y autorización, escalada de privilegios y suplantación de credenciales.

Ataque de falsificación de firma digital: cómo las vulnerabilidades CVE-2025-29774 y el error SIGHASH_SINGLE amenazan los métodos operativos de billeteras multifirma con RawTX falso
Disclosure for CVE-2025-29774 and CVE-2025-29775 (SAMLStorm).

  • Las vulnerabilidades están relacionadas con una verificación incorrecta de firmas criptográficas en xml-crypto , específicamente en el manejo del nodo DigestValue, donde un atacante puede insertar comentarios XML sin romper la verificación de firma.
  • Esto permite modificar atributos críticos de identificación y control de acceso en documentos XML firmados, lo que resulta en la capacidad de eludir la seguridad sin requerir credenciales o derechos de acceso.

Por lo tanto, este código implementa algoritmos de firma criptográfica y verificación de firmas para varios esquemas (RSA con diferentes hashes SHA y HMAC-SHA1), lo que permite integrarlos en sistemas que requieren firma digital de datos.


Vulnerabilidad crítica en el código signature-algorithms.ts

Ataque de falsificación de firma digital: cómo las vulnerabilidades CVE-2025-29774 y el error SIGHASH_SINGLE amenazan los métodos operativos de billeteras multifirma con RawTX falso

El código de signature-algorithms.ts se utiliza para crear y verificar firmas digitales de forma segura, garantizando autenticidad e integridad de los datos. Las firmas ECDSA proporcionan verificación de autoría mediante una clave privada, y HMAC proporciona verificación de integridad y autenticidad mediante una clave secreta. Los algoritmos utilizados cumplen con los estándares de Firma Digital XML (las URI de los algoritmos apuntan a especificaciones W3C).


Por lo tanto, el código de signature-algorithms.ts implementa algoritmos de firma criptográfica y verificación de firmas para varios esquemas (ECDSA, RSA con diferentes hashes SHA y HMAC-SHA1), lo que permite integrarlos en sistemas que requieren firma digital de datos.


Funcionalidad básica

  • Cada clase implementa una interfaz  SignatureAlgorithm y proporciona métodos para:
    • Crear firma  (getSignature): toma datos de firma y una clave privada, devuelve una firma digital en formato base64.
    • Verificar firma  (verifySignature): toma la entrada, la clave pública y la firma, devuelve un valor booleano que indica si la firma es correcta.
    • Obtener nombre del algoritmo  (getAlgorithmName): devuelve una URI que identifica el algoritmo de firma utilizado.

Algoritmos compatibles

  • RsaSha1  – firma usando RSA y la función hash SHA-1.
  • RsaSha256  – firma usando RSA y SHA-256.
  • RsaSha512  – firma usando RSA y SHA-512.
  • HmacSha1  – firma usando HMAC basado en SHA-1.

Detalles técnicos

  • Para firmas RSA, se utilizan las clases  crypto.createSign y  crypto.createVerify con los algoritmos correspondientes (“RSA-SHA1”, “RSA-SHA256”, “RSA-SHA512”).
  • Para firmas HMAC, se utiliza  crypto.createHmac con el algoritmo “SHA1”.
  • Las firmas se codifican en base64 para facilitar su transmisión y almacenamiento.
  • Los métodos están envueltos en una función  createOptionalCallbackFunction, que probablemente permite usarlos tanto con callbacks como con promesas (los detalles no están en el código).

El uso del algoritmo RSA-SHA1 en firmas criptográficas contiene una vulnerabilidad relacionada con colisiones del hash SHA-1. Esto permite a un atacante crear dos mensajes diferentes con la misma firma si controla parte de los datos que se firman.


Específicamente, el problema está en la clase RsaSha1:

root@kitploit:~
const signer = crypto.createSign("RSA-SHA1");  // Vulnerable line

Ataque de falsificación de firma digital: cómo las vulnerabilidades CVE-2025-29774 y el error SIGHASH_SINGLE amenazan los métodos operativos de billeteras multifirma con RawTX falso
signature-algorithms.ts#L7

También la segunda vulnerabilidad está en la clase RsaSha1:

root@kitploit:~
const verifier = crypto.createVerify("RSA-SHA1");  // Vulnerable line

Ataque de falsificación de firma digital: cómo las vulnerabilidades CVE-2025-29774 y el error SIGHASH_SINGLE amenazan los métodos operativos de billeteras multifirma con RawTX falso
signature-algorithms.ts#L17

¿Por qué este ataque crítico de colisión permite crear datos diferentes con el mismo hash?

  1. Colisiones SHA-1 : El algoritmo SHA-1 ya no se considera seguro.
  2. Contexto RSA : Cuando se combina con RSA, esto puede dar lugar a firmas falsificadas en datos no confiables (por ejemplo, certificados o documentos).
  3. Recomendaciones : NIST y la comunidad de seguridad recomiendan usar SHA-256/SHA-512 en lugar de SHA-1.

Notas adicionales:

  • La clase HmacSha1 (HMAC-SHA1) es menos vulnerable, pero también obsoleta. HMAC es más resistente a colisiones que SHA-1 “desnudo”, pero es preferible cambiar a SHA-256.
  • El código contiene implementaciones modernas (RsaSha256/RsaSha512) que deberían usarse en lugar de RsaSha1.

Ataque de falsificación de firma digital: cómo las vulnerabilidades CVE-2025-29774 y el error SIGHASH_SINGLE amenazan los métodos operativos de billeteras multifirma con RawTX falso

CVE-2025-29774 y CVE-2025-29775 son vulnerabilidades críticas en la librería xml-crypto para Node.js relacionadas con la verificación incorrecta de firmas digitales en documentos XML. Ambas vulnerabilidades permiten a un atacante modificar mensajes XML firmados de manera que pase desapercibida durante la verificación de firma.


Mecanismo del ataque de falsificación de firma digital

1. Vulnerabilidades en los algoritmos RSA-SHA1

En el código proporcionado, las clases RsaSha1 utilizan el algoritmo heredado RSA-SHA1 para firma y verificación:

root@kitploit:~
const signer = crypto.createSign("RSA-SHA1");  // Vulnerable line №7
const verifier = crypto.createVerify("RSA-SHA1");  // Vulnerable line №17

SHA1 se considera criptográficamente inseguro, el problema principal radica en la lógica de procesamiento de estructuras XML de la librería :

  • Al crear una firma, el documento XML pasa por un paso de canonicalización (llevarlo a una forma estándar, por ejemplo, eliminando espacios y comentarios).
  • Al verificar una firma, la librería no tiene en cuenta la diferencia entre versiones canonicalizadas y no canonicalizadas de un documento . Esto permite a un atacante modificar el documento (por ejemplo, agregar comentarios o cambiar la estructura) sin romper la firma.

2. Ejemplo de funcionamiento

  1. Modificación de SignedInfo :
    • El atacante agrega nodos adicionales <SignedInfo>  al documento XML , lo que da como resultado un cálculo de hash incorrecto durante la verificación.
    xml<Signature> <SignedInfo>...</SignedInfo> <!-- Nodo original --> <SignedInfo>...</SignedInfo> <!-- Agregado por un atacante --> </Signature>
  2. Uso de un algoritmo débil :
    • El algoritmo SHA1 es vulnerable a colisiones, lo que facilita la creación de firmas falsas para documentos modificados.

3. Consecuencias

  • Elusión de autenticación : Modificación de atributos en tokens SAML u otros documentos XML relacionados con el acceso.
  • Escalada de privilegios : Sustitución de un ID de usuario por un administrador en el sistema de autorización.
  • Ataques masivos : La vulnerabilidad puede explotarse de forma remota sin interacción del usuario (CVSS 9.3).

Digital Signature Forgery Attack: How CVE-2025-29774 Vulnerabilities and the SIGHASH_SINGLE Bug Threaten Multi-Signature Wallets Methods of Operations with Fake RawTX

Detalles técnicos de las vulnerabilidades:

CVE-2025-29774

  • Problema : Validación insuficiente de la estructura del documento XML durante la verificación de la firma.
  • Explotación : Agregar nodos o atributos adicionales a la parte firmada del documento.

CVE-2025-29775

  • Problema : Uso incorrecto del contexto de canonicalización al calcular un hash.
  • Explotación : Modificación de un documento en forma no canonicalizada después de la firma.

Recomendaciones para la solución de problemas

  1. Actualización de la biblioteca :
    • Para versiones 2.x → 2.1.6, 3.x → 3.2.1, 6.x → 6.0.1.
  2. Reemplazo de algoritmo : typescript // Usage SHA-256 / SHA-1 const signer = crypto.createSign("RSA-SHA256");
  3. Validación de la estructura XML :
    • Verificar que haya exactamente un nodo <SignedInfo> en la firma.

Abordar estas vulnerabilidades es crítico para los sistemas que utilizan firmas XML para autenticación (por ejemplo, SAML, SOAP).


Digital Signature Forgery Attack: How CVE-2025-29774 Vulnerabilities and the SIGHASH_SINGLE Bug Threaten Multi-Signature Wallets Methods of Operations with Fake RawTX

La biblioteca xml-crypto se usa ampliamente para verificar firmas digitales en mensajes XML, incluidos protocolos como SAML, SOAP y otros. Se deduce que la vulnerabilidad afecta potencialmente a:

  • Software y servicios que utilizan xml-crypto para firmas XML , incluidas plataformas de integración empresarial y middleware (como IBM App Connect Enterprise, donde se informaron estas vulnerabilidades).
  • Dispositivos y sistemas que utilizan firmas XML para autenticación y autorización, incluidos servidores y pasarelas que soportan SAML.

  • Las vulnerabilidades CVE-2025-29774 y CVE-2025-29775 afectan principalmente a componentes de software y plataformas que utilizan la biblioteca xml-crypto para procesar firmas XML.
  • Las víctimas conocidas incluyen IBM App Connect Enterprise y probablemente otras soluciones empresariales basadas en Node.js que utilizan xml-crypto .
  • Actualmente no hay datos públicos sobre marcas específicas de dispositivos de hardware afectados por estos ataques.

Para evaluar el riesgo en dispositivos específicos, se recomienda verificar si utilizan versiones vulnerables de xml-crypto o dependen de mecanismos similares de firma XML. Para trabajar con billeteras de criptomonedas basadas en Node.js, IBM ofrece soluciones separadas, como  IBM Secure Bitcoin Wallet  , una aplicación basada en Electrum Bitcoin Client que utiliza Node.js para interactuar con la red Bitcoin y gestionar la billetera.

En esta solución, las claves privadas y la billetera se pueden almacenar y cifrar utilizando IBM Cloud Hyper Protect Crypto Services (zHSM), que proporciona almacenamiento seguro basado en hardware de claves. La generación de claves privadas para billeteras Bitcoin generalmente se implementa en bibliotecas criptográficas especializadas como Electrum, bitcoinjs-lib, etc., que se pueden integrar en aplicaciones Node.js. IBM Secure Bitcoin Wallet utiliza un backend Electrum modificado en Node.js para la gestión de claves y transacciones, a través de la integración con IBM Cloud Hyper Protect Crypto Services, que proporciona cifrado de hardware y almacenamiento seguro de claves privadas.


Parte práctica

De la teoría de la vulnerabilidad  CVE-2025-29775  se sabe que un atacante puede procesar una biblioteca xml-crypto no actualizada para valores de transacción incorrectos. Pasemos a la parte práctica del artículo y consideremos un ejemplo utilizando una billetera Bitcoin:  32GkPB9XjMAELR4Q2Hr31Jdz2tntY18zCe , donde se perdieron monedas por un monto de:  0.059672 BTC  a julio de 2025, este monto es:  7,052 USD


Digital Signature Forgery Attack: How CVE-2025-29774 Vulnerabilities and the SIGHASH_SINGLE Bug Threaten Multi-Signature Wallets Methods of Operations with Fake RawTX791fe035d312dcf9196b48649a5c9a027198f623c0a5f5bd4cc311b8864dd0cf

Consideremos el formato: Raw transaction datos binarios y hexadecimales que contienen toda la información sobre la transacción . Es necesario para transmitir, verificar o crear transacciones a bajo nivel y es la base para el funcionamiento de toda la red Bitcoin. Los usuarios normales rara vez se encuentran con Raw transactions directamente, pero para los desarrolladores y entusiastas de las criptomonedas, esta es la principal herramienta para tener un control total sobre todas las transacciones de la red Bitcoin.


Digital Signature Forgery Attack: How CVE-2025-29774 Vulnerabilities and the SIGHASH_SINGLE Bug Threaten Multi-Signature Wallets Methods of Operations with Fake RawTX
Raw Transaction

Para devolver completamente los objetos UTXO en la red Bitcoin, utilizaremos la herramienta Dark AI . UTXO es la parte principal de la estructura de datos en la cadena de bloques y representa la cantidad de monedas BTC de la criptomoneda que puede gastar el titular de la clave privada (que controla esta dirección Bitcoin). Cada UTXO es la salida de una transacción pasada específica, que nunca se ha utilizado como entrada en transacciones posteriores.

Digital Signature Forgery Attack: How CVE-2025-29774 Vulnerabilities and the SIGHASH_SINGLE Bug Threaten Multi-Signature Wallets Methods of Operations with Fake RawTX

Google Colab

Private key Debug: Incorrect generation of private keys, system vulnerabilities and errors in calculating the order of the elliptic curve secp256k1 threats to the Bitcoin ecosystem

https://colab.research.google.com/drive/1TKrJ0bKsNgc72H9UvzpCnh2YPmRsyPdW


1. Descargar e instalar la herramienta Dark AI

Descripción detallada de todos los comandos y acciones del terminal

Comandos:

root@kitploit:~
!wget https://darkai.ru/repositories/neuralnet_tools.zip
  • wget— una utilidad de línea de comandos para descargar archivos de la red a través de los protocolos HTTP, HTTPS y FTP.
  • Descargamos  el archivo especificando la URL .neuralnet_tools.zip
  • unzip— comando para extraer archivos ZIP en el directorio actual.

Este comando extrae todos los archivos de neuralnet_tools.zip

root@kitploit:~
!unzip neuralnet_tools.zip

Digital Signature Forgery Attack: How CVE-2025-29774 Vulnerabilities and the SIGHASH_SINGLE Bug Threaten Multi-Signature Wallets Methods of Operations with Fake RawTX

Ejecutemos el comando ls para una visualización rápida y sencilla

ls


Digital Signature Forgery Attack: How CVE-2025-29774 Vulnerabilities and the SIGHASH_SINGLE Bug Threaten Multi-Signature Wallets Methods of Operations with Fake RawTX

2. Lanzar la herramienta Dark AI

root@kitploit:~
!./darkai
Digital Signature Forgery Attack: How CVE-2025-29774 Vulnerabilities and the SIGHASH_SINGLE Bug Threaten Multi-Signature Wallets Methods of Operations with Fake RawTX

Ejecutemos el comando para obtener información sobre los llamados outputs de transacciones no gastadas ( UTXO , decodificación: Unspent Transaction Output ) para la dirección Bitcoin especificada. Esta información es importante para evaluar el saldo de la dirección y la posibilidad de realizar nuevas transacciones.

root@kitploit:~
!./darkai -bitcoinaddress 32GkPB9XjMAELR4Q2Hr31Jdz2tntY18zCe

Como resultado, se devolvieron dos objetos UTXO:

root@kitploit:~
[
{'output': '8602122a7044b8795b5829b6b48fb1960a124f42ab1c003e769bbaad31cb2afd:0', 'value': 677200},
{'output': 'bd992789fd8cff1a2e515ce2c3473f510df933e1f44b3da6a8737630b82d0786:0', 'value': 5000000}
]

Cada UTXO contiene:

  • output — identificador de salida. Formato: <txid>:<n>, donde <txid>es un hash de transacción único, y <n> es el número de salida en la lista de salidas para esta transacción.
  • value — cantidad en satoshis (1 bitcoin = 100,000,000 satoshis).

Decodificación de datos:

  1. Primer UTXO
    • Salida: 8602122a7044b8795b5829b6b48fb1960a124f42ab1c003e769bbaad31cb2afd:0
    • Cantidad: 677,200 satoshis
  2. Segundo UTXO
    • Salida: bd992789fd8cff1a2e515ce2c3473f510df933e1f44b3da6a8737630b82d0786:0
    • Cantidad: 5,000,000 satoshis

Saldo total

El saldo total disponible de una dirección es igual a la suma de todos los UTXO encontrados:

  • 677 200 + 5 000 000 = 5 677 200 satoshis
  • En términos de bitcoins: 5,677,200/100,000,000 = 0.05677200 BTC
Digital Signature Forgery Attack: How CVE-2025-29774 Vulnerabilities and the SIGHASH_SINGLE Bug Threaten Multi-Signature Wallets Methods of Operations with Fake RawTX

Interpretación técnica con Dark AI

Utilizamos el proceso de interpretación para procesar la biblioteca xml-crypto no actualizada y crear valores de transacción no válidos y enviar una gran cantidad; el algoritmo Dark AI elegirá qué UTXO usar (o combinar ambos).

  • Envío de fondos: Todos los UTXO especificados se pueden usar como entradas al formar una nueva transacción, lo que le permitirá gastar todo o parte de su saldo.
  • Transparencia: Este informe confirma que la dirección contiene fondos Bitcoin reales y se puede usar para verificar autenticidad y solvencia.

La dirección Bitcoin 32GkPB9XjMAELR4Q2Hr31Jdz2tntY18zCetiene dos UTXO activos que suman 0.05677200 BTC . Estos fondos se pueden usar para realizar nuevas transacciones; ambas salidas se consideran confirmadas y no gastadas.


Digital Signature Forgery Attack: How CVE-2025-29774 Vulnerabilities and the SIGHASH_SINGLE Bug Threaten Multi-Signature Wallets Methods of Operations with Fake RawTX

Deserialización de la transacción Bitcoin

Para obtener fragmentos de información sobre la salida de una transacción de Bitcoin, utiliza los siguientes comandos, donde la primera salida (outs) de la transacción tiene un identificador único 8602122a7044b8795b5829b6b48fb1960a124f42ab1c003e769bbaad31cb2afd


root@kitploit:~
!./darkai -deserialize 8602122a7044b8795b5829b6b48fb1960a124f42ab1c003e769bbaad31cb2afd

Obtenemos la estructura de la respuesta del resultado de la deserialización:

root@kitploit:~
{'value': 677200, 'script': 'a91406612b7cb2027e80ec340f9e02ffe4a9a59ba76287'}
  • value: 677200 — la cantidad de esta salida se expresa en satoshis (1 BTC = 100,000,000 satoshis).
  • script: a91406612b7cb2027e80ec340f9e02ffe4a9a59ba76287 — un script que define las condiciones para gastar esta salida.

Explicación detallada de los elementos: Campo Value

  • Value: 677,200 satoshis.
  • Esta cantidad se puede gastar al crear la transacción correspondiente si se cumplen las condiciones del script.
  • Equivalente: 677,200/100,000,000 = 0.00677200 BTC.
Ataque de falsificación de firma digital: Cómo las vulnerabilidades CVE-2025-29774 y el error SIGHASH_SINGLE amenazan las billeteras de múltiples firmas Métodos de operación con Fake RawTX

Explicación detallada de los elementos: Campo Script

  • Significado del script: a91406612b7cb2027e80ec340f9e02ffe4a9a59ba76287
  • Este es un script de tipo “scriptPubKey” – parte de la estructura de salida de la transacción que especifica quién puede gastar estos fondos. El propósito más importante es garantizar la seguridad y el control sobre la disposición de los fondos.

Decodificación del script

  • El script comienza con un prefijo a914...87, que corresponde al formato P2SH (Pay to Script Hash):
    • a9 — OP_HASH160 (operador de hash)
    • 14 — longitud del siguiente valor (20 bytes = 40 caracteres hexadecimales)
    • 06612b7cb2027e80ec340f9e02ffe4a9a59ba762 — hash160 de la dirección de la billetera Bitcoin donde se almacenan las monedas BTC.
    • 87 — OP_EQUAL (un operador básico de comando de Bitcoin Script que implementa una comparación de dos datos para verificar su identidad)
  • Esto significa que el destinatario puede gastar los fondos si proporciona un script cuyo hash coincida con el valor proporcionado y proporciona firmas válidas para ese script.

Significado práctico del resultado

  • Esta salida de la transacción especificada contiene 677,200 satoshis (0.00677200 BTC), que está protegida por un script de tipo P2SH.
  • Para gastar fondos de dicha salida, será necesario conocer el script original y presentar las firmas correctas – una situación típica para billeteras de múltiples firmas, contratos inteligentes y otros esquemas de seguridad avanzados.
  • Esta información es importante para analizar la estructura de la transacción, verificar el destino de los fondos y comprender los requisitos para su uso posterior.

Deserializar una transacción por identificador

Como resultado de la deserialización de la transacción por identificador, 8602122a7044b8795b5829b6b48fb1960a124f42ab1c003e769bbaad31cb2afd se obtuvo la primera salida, que contiene la cantidad de 677,200 satoshis (0.00677200 BTC), protegida por un script P2SH. Para gestionar estos fondos, será necesario presentar el script de destino y firmar correctamente la transacción de desbloqueo que cumpla las condiciones del hash especificado.


Ataque de falsificación de firma digital: Cómo las vulnerabilidades CVE-2025-29774 y el error SIGHASH_SINGLE amenazan las billeteras de múltiples firmas Métodos de operación con Fake RawTX

Deserialización de la segunda transacción de Bitcoin

Para obtener fragmentos de información sobre la salida de los datos originales (output) de una transacción de Bitcoin, aplica los siguientes comandos, donde la primera salida (outs) de la transacción con un identificador único bd992789fd8cff1a2e515ce2c3473f510df933e1f44b3da6a8737630b82d0786

root@kitploit:~
!./darkai -deserialize bd992789fd8cff1a2e515ce2c3473f510df933e1f44b3da6a8737630b82d0786

Utilizando el proceso de interpretación, con la ayuda de Dark AI mediante la función de deserialización, obtenemos luego información sobre la estructura del primer elemento de salida (output) para la segunda transacción con el identificador
bd992789fd8cff1a2e515ce2c3473f510df933e1f44b3da6a8737630b82d0786.



Resultado:

root@kitploit:~
{'value': 5000000, 'script': 'a91406612b7cb2027e80ec340f9e02ffe4a9a59ba76287'}

1. Explicación detallada de los elementos: Campo Value

  • Contenido: 5000000
  • Este valor se expresa en satoshis, la unidad indivisible más pequeña de bitcoin; 1 BTC = 100,000,000 satoshis.
  • Propósito:
    Esta cantidad está asociada a una salida de transacción específica indicada en los elementos del array 'outs'. Solo se puede gastar si se cumplen las condiciones escritas en el script definido en el campo 'script'.
  • Conversión a Bitcoin: 5,000,000 satoshis = 0.05 BTC
Ataque de falsificación de firma digital: Cómo las vulnerabilidades CVE-2025-29774 y el error SIGHASH_SINGLE amenazan las billeteras de múltiples firmas Métodos de operación con Fake RawTX

2. Explicación detallada de los elementos: Campo Script

  • Contenido: 'a91406612b7cb2027e80ec340f9e02ffe4a9a59ba76287'
  • Este es el llamado script de bloqueo o, de otro modo, scriptPubKey – un script que especifica las condiciones bajo las cuales se puede gastar esta salida.

Decodificación del script

El valor especificado corresponde al tipo de script estándar en la red Bitcoin:

  • a9 — código de operación OP_HASH160 (produce RIPEMD-160 a partir de SHA-256 de la línea siguiente).
  • 14 — longitud del campo subsiguiente: 20 bytes (40 caracteres hexadecimales).
  • 06612b7cb2027e80ec340f9e02ffe4a9a59ba762 — es un hash de 20 bytes que identifica ya sea una dirección de billetera Bitcoin o un script.
  • 87 — código de operación OP_EQUAL.

En conjunto, esta entrada significa una dirección P2SH (Pay-to-Script-Hash). En este caso, los fondos se asignan a una determinada combinación de script, y para retirarlos, será necesario revelar el script cuyo hash está registrado aquí y presentar firmas (u otros datos) que cumplan las condiciones de este script.


Los usos más comunes de este esquema son para múltiples firmas, contratos inteligentes simples y complejos, múltiples firmas bilaterales, esquemas de seguridad condicional y otros escenarios avanzados.


3. El significado práctico del resultado, el tamaño y el propósito de los fondos.

  1. La transacción en cuestión (con hash bd992789fd8cff1a2e515ce2c3473f510df933e1f44b3da6a8737630b82d0786) tiene una salida en la que 0.05 BTC (5,000,000 satoshis) están "bloqueados" en la dirección P2SH que corresponde al hash 06612b7cb2027e80ec340f9e02ffe4a9a59ba762
  2. Condiciones para gastar:
    Para gastar estos fondos, al formar una transacción de gasto, es necesario presentar no solo una firma estándar, como en una transferencia directa, sino también el script en sí, cuyo hash está incrustado en esta salida, además de datos (por ejemplo, un conjunto de firmas digitales) que correspondan a las condiciones del script.
  3. Seguridad y flexibilidad:
    Este método permite implementar una lógica más compleja que enviar directamente a una dirección de Bitcoin normal.

4. Registro de la salida al nivel de compatibilidad con varios servicios y billeteras que soportan P2SH.

  • ID de transacción
    bd992789fd8cff1a2e515ce2c3473f510df933e1f44b3da6a8737630b82d0786
    contiene una salida en la que
    0.05 BTC (5,000,000 satoshis)
    está asegurado a un script P2SH (Pay-to-Script-Hash) con un hash de
    06612b7cb2027e80ec340f9e02ffe4a9a59ba762.
  • Para gastar estos fondos, debes revelar el script original y cumplir sus condiciones (por ejemplo, presentar todas las firmas en una múltiple firma).

Por lo tanto, el resultado de la deserialización informa la presencia de una cierta cantidad de bitcoins en una dirección condicional (P2SH) y define reglas estrictas para su gasto, lo que juega un papel clave en la gestión y contabilidad de fondos en la red Bitcoin.


Ataque de falsificación de firma digital: Cómo las vulnerabilidades CVE-2025-29774 y el error SIGHASH_SINGLE amenazan las billeteras de múltiples firmas Métodos de operación con Fake RawTX

Script de bloqueo P2SH (Pay-to-Script-Hash) en la red Bitcoin. ¿Qué significa este script?

El script 'a91406612b7cb2027e80ec340f9e02ffe4a9a59ba76287' se elige y utiliza en esta salida de transacción porque representa un script de bloqueo P2SH (Pay-to-Script-Hash) típico en la red Bitcoin.


Veámoslo pieza por pieza:

  • a9 — OP_HASH160: Una operación de hash que primero aplica SHA-256 y luego RIPEMD-160 a los datos subsiguientes.
  • 14 — la longitud del hash es 20 bytes (en formato hexadecimal).
  • 06612b7cb2027e80ec340f9e02ffe4a9a59ba762 — un hash de 20 bytes del script, conocido como el hash del script.
  • 87 — OP_EQUAL: Un operador que verifica la igualdad de dos valores en la pila.

Por lo tanto, este script requiere que en el momento de su uso (gasto de fondos) se presente un script cuyo hash coincida con 06612b7cb2027e80ec340f9e02ffe4a9a59ba762, y que se cumplan las condiciones de este script.


¿Por qué se eligió este en particular?

  • Conveniencia y seguridad: P2SH permite ocultar lógica compleja de gestión de fondos (como múltiples firmas o pagos condicionales) en un hash, simplificando la interfaz para el remitente y el receptor.
  • Estándar de la industria: P2SH se ha convertido en un estándar ampliamente aceptado porque simplifica la configuración de esquemas de seguridad complejos y es compatible con la mayoría de las billeteras y servicios.
  • Compacidad: El bloque almacena solo el hash de un script complejo, no todo el script – esto ahorra espacio y aumenta la eficiencia.
  • Flexibilidad: El propietario de los fondos puede crear condiciones arbitrarias para el gasto – como requerir múltiples firmas, retrasos de tiempo u otras reglas – y el hash de estas condiciones se almacena aquí.

El script 'a91406612b7cb2027e80ec340f9e02ffe4a9a59ba76287' es un script de bloqueo P2SH, que dice que para gastar 0.05 BTC, es necesario proporcionar el script original con el hash 06612b7cb2027e80ec340f9e02ffe4a9a59ba762 y cumplir las condiciones especificadas en él. Esto proporciona un equilibrio entre conveniencia, seguridad y funcionalidad – la razón principal para elegir este script en particular en esta transacción. El hash 06612b7cb2027e80ec340f9e02ffe4a9a59ba762 en el script P2SH es el resultado de un hash específico del script original (redeem script), que determina las condiciones para gastar los fondos de esta salida.


¿Por qué este hash y no otro?

  1. Un hash es una huella digital de un script que especifica las reglas para gastar.
    Al crear una dirección o salida P2SH, primero se escribe explícitamente el script (las condiciones para gastar Bitcoin), luego se aplican dos algoritmos de hash:
    • SHA-256 del script,
    • Luego RIPEMD-160 del resultado de SHA-256.
      El hash resultante de 20 bytes es 06612b7cb2027e80ec340f9e02ffe4a9a59ba762. Este hash identifica de manera única el escenario exacto para el cual fue generado.
  2. Unicidad e inmutabilidad
    Las funciones hash criptográficas tienen la propiedad de "efecto avalancha", por el cual incluso un cambio mínimo en el script original producirá un hash completamente diferente. Por lo tanto, este hash es único e infalsificable en el contexto del script original.
  3. El propósito de usar un hash es garantizar compacidad y seguridad.
    En lugar de almacenar el script completo en cada salida, que puede ser complejo y ocupar mucho espacio, solo se almacena su hash en el bloque. Esto ahorra espacio y aumenta la privacidad – el script en sí se revela solo cuando se gastan los fondos y solo a quienes cumplen las condiciones.
  4. La selección del hash es el resultado de un script específico definido por el creador de la dirección o billetera.
    El desarrollador o propietario de los fondos crea un script con las condiciones deseadas (por ejemplo, múltiples firmas, retraso de tiempo, otras condiciones lógicas). El script asignado se hashea y este hash se vincula a la salida de la transacción. Por lo tanto, no hay una selección arbitraria de hash: está determinada por el contenido del script original y el algoritmo criptográfico.

  • Este hash está estrictamente vinculado a un script específico que el propietario de la dirección ha instalado para proteger sus fondos.
  • Fue generado utilizando funciones hash criptográficas (SHA-256 + RIPEMD-160) a partir del script original (redeem script), por lo que no es posible seleccionar un hash diferente de forma aleatoria o arbitraria.
  • Este hash es un reflejo de la combinación única de condiciones de gasto, y es por eso que terminó en el script de salida de la transacción a91406612b7cb2027e80ec340f9e02ffe4a9a59ba76287

Por lo tanto, la elección de este hash en particular está dictada por la necesidad de un enlace preciso y seguro de la salida con condiciones de gasto específicas que controlan el acceso a los fondos en la blockchain. Todo esto está garantizado por las propiedades de las funciones hash criptográficas, su unicidad y la imposibilidad de recuperación inversa de los datos originales.


Mecanismo P2SH: Significado, Principio de Funcionamiento y Seguridad en la Red Bitcoin

Los desarrolladores de Bitcoin han incorporado el mecanismo P2SH (Pay-to-Script-Hash) en el código como una innovación clave que garantiza la seguridad y amplía las capacidades de la red blockchain. Consideremos la estructura y el principio de funcionamiento de este script, su diferencia con las transacciones clásicas, así como las razones para elegir este enfoque de almacenamiento y protección de activos digitales.

Tradicionalmente, las transacciones de Bitcoin han funcionado utilizando el esquema Pay-to-Pubkey-Hash (P2PKH), donde los fondos se “bloquean” usando el hash de la clave pública del destinatario. Para gastar estos fondos, el usuario debe proporcionar su firma digital y clave pública, las cuales son verificadas por la red.

Sin embargo, más allá de P2PKH, la interfaz era limitada, ya que Bitcoin Script permite condiciones de gasto mucho más complejas, desde multifirmas hasta bloqueos de tiempo y otros acuerdos de contratos inteligentes. El problema era que los scripts largos y complejos inevitablemente aumentaban el tamaño de las transacciones y reducían su usabilidad.


Fue para simplificar la interacción con escenarios tan complejos que se introdujo el concepto P2SH en 2012 , estandarizado en BIP 16 por Gavin Andresen. La esencia de P2SH se reduce a reemplazar el script completo de las condiciones de gasto en scriptPubKey por su hash criptográfico – el llamado script hash.


Ataque de falsificación de firma digital: Cómo las vulnerabilidades CVE-2025-29774 y el error SIGHASH_SINGLE amenazan los métodos operativos de las carteras multifirma con RawTX falsos


¿Cómo funciona la estructura del script de salida P2SH?

Veamos el script especificado como resultado de la deserialización:

root@kitploit:~
OP_HASH160 06612b7cb2027e80ec340f9e02ffe4a9a59ba762 OP_EQUAL

Este script se diferencia del P2PKH estándar en que, en lugar de un hash de clave pública, almacena un hash de un redeemScript – un conjunto de condiciones bajo las cuales se pueden gastar los fondos.

  • OP_HASH160 – hashea los datos (en este caso redeemScript) primero con el algoritmo SHA-256 y luego con RIPEMD-160.
  • 06612b7cb2027e80ec340f9e02ffe4a9a59ba762 — hash de 20 bytes del redeemScript.
  • OP_EQUAL – verifica si el redeemScript proporcionado es igual a este hash.

El proceso de gastar fondos a través de una salida P2SH

Para gastar dichos fondos, es necesario transmitir en las entradas (scriptSig) de la transacción que hace referencia a esta salida:

  1. redeemScript serializado – el script original cuyas condiciones están codificadas en un hash.
  2. Datos de desbloqueo – firmas u otra evidencia que cumplan las condiciones del redeemScript.

Al procesar una transacción, los nodos de la red:

  • Hashean el redeemScript y lo comparan con el hash especificado en la salida.
  • Si los hashes coinciden (es decir, OP_EQUAL devuelve verdadero), entonces el redeemScript se deserializa y ejecuta.
  • Una transacción se considera válida si el redeemScript se ejecuta correctamente, es decir, se cumplen todas las condiciones de gasto.

P2SH así traslada la responsabilidad de presentar y verificar los términos del gasto del remitente (que crea el script requerido) al gastador.


Las ventajas y la importancia de elegir dicho mecanismo

1. Flexibilidad y escenarios complejos

P2SH permite crear direcciones con condiciones arbitrarias, a menudo multinivel – por ejemplo, un requisito de multifirma (2 de 3, 3 de 5, etc.), límites de tiempo, lógica de distribución y mucho más. En este caso, el remitente simplemente envía fondos a una dirección hash compacta, sin entrar en detalles técnicos.


2. Ahorro de espacio

En lugar de almacenar el script completo en la blockchain, solo se almacena su hash en la transacción. Esto reduce la carga en la red, disminuye el tamaño de los bloques y acelera la verificación de las transacciones.


3. Mayor seguridad

Dado que el redeemScript solo se revela y verifica en el momento del gasto, aumenta la confidencialidad de los términos y dificulta los intentos de acceso no autorizado. El uso de funciones hash criptográficas garantiza la protección contra falsificaciones y modificaciones – cualquier ligera desviación en el script resultará en un hash diferente y la red rechazará la transacción.


4. Comodidad para usuarios y programadores

P2SH estandariza y simplifica el uso de contratos inteligentes complejos en Bitcoin, simplificando la integración y aumentando la compatibilidad con una variedad de carteras y servicios.


Ejemplo de uso: carteras multifirma

Un ejemplo clásico es una cartera que requiere firmas de dos de cinco participantes para completar una transacción. Con P2SH:

  • La salida contiene el hash del script correspondiente.
  • Para gastar fondos, es necesario pasar el script de habilitación multifirma completo en scriptSig con las firmas.
  • La red verifica la consistencia de los hashes y la validez de las firmas.

Esto hace que P2SH sea ideal para cuentas corporativas, empresas conjuntas y otras situaciones donde se requiere control de acceso. El mecanismo Pay-to-Script-Hash (P2SH) es una parte fundamental de la arquitectura de Bitcoin, proporcionando un equilibrio entre:

  • Seguridad (proteger los fondos mediante condiciones estrictas y criptografía),
  • Eficiencia (almacenar solo el hash, no todos los detalles),
  • Flexibilidad (soporte para cualquier condición de gasto, incluso complejas),
  • Comodidad (formato de dirección simple y estándar de acceso).

Ataque de falsificación de firma digital: Cómo las vulnerabilidades CVE-2025-29774 y el error SIGHASH_SINGLE amenazan los métodos operativos de las carteras multifirma con RawTX falsos


Criptoanálisis de la extracción de la primera entrada de transacción ( ins)

Ejecutemos un comando para obtener información sobre una de las entradas de una transacción con el hash 6102bfd4bad33443bcb99765c0751b6b8e4e65f4db4e3b65324c5e9e3dac8132. El análisis de dicha entrada es importante para comprender el mecanismo de autorización del gasto de fondos a nivel de script.

root@kitploit:~
!./darkai -scriptsig 6102bfd4bad33443bcb99765c0751b6b8e4e65f4db4e3b65324c5e9e3dac8132

El resultado de extraer la primera entrada de la transacción ( ins) se presenta a continuación:

root@kitploit:~
{
'script': '00483045022100e5d7c59ea1fb5d0285e755dfc09634e1e3af36d12950b9b5d5f92b136021b3d202202c181129443b08dcfb8d9ced30187186c57c96f9cdb3f3914e0798682ea35d2b03493046022100e1f8dbad16926cfa3bf61b66e23b3846323dcabf6c75748bcfad762fc50bfaf402210081d955160b5f8d2b9d09d8838a2cf61f5055009d9031e0e106e19ebab234d949034c695221023927b5cd7facefa7b85d02f73d1e1632b3aaf8dd15d4f9f359e37e39f05611962103d2c0e82979b8aba4591fe39cffbf255b3b9c67b3d24f94de79c5013420c67b802103ec010970aae2e3d75eef0b44eaa31d7a0d13392513cd0614ff1c136b3b1020df53ae',
'outpoint': {
'index': 1,
'hash': 'ec2a40cac3ac5dadf1d31f3cad03bdc8465caab5acbc5407ee7f4a7400aab577'
},
'sequence': 4294967295
}

1. Análisis detallado de los componentes de ScriptSig ( script)

  • El valor del campo script es el scriptSig , que se utiliza para desbloquear la salida de la transacción anterior correspondiente.
  • El contenido es una larga secuencia de bytes en formato hexadecimal.
  • En este caso, es un script de cinco componentes, que incluye:
    • Firmas digitales estándar según el protocolo ECDSA, típicamente para confirmar la propiedad de una clave privada.
    • Claves públicas necesarias para verificar la firma.
    • Puede haber una estructura que indique operaciones multifirma (múltiples claves públicas y firmas).

Análisis de la estructura del script:

  • Comienza con 00, que en el contexto de scriptSig puede significar OP_0 , tradicionalmente usado en escenarios multifirma (por ejemplo, en el caso del estándar multifirma Pay-to-Script-Hash, donde se necesita un marcador de posición).
  • A continuación vienen las firmas en formato DER (por ejemplo, 3045...), que típicamente consisten en una serie de bytes que contienen los detalles de la firma.
  • Las firmas son seguidas por claves públicas (en longitud y estructura, muy probablemente en formato comprimido, ya que tienen unos 33 bytes), que confirman que las firmas pertenecen a los propietarios correctos.
  • En general, el formato del script corresponde a redeemScript o la construcción típica de transacciones multifirma P2SH.

2. Outpoint (outpoint)

  • Contiene datos sobre la salida anterior que se utiliza en esta entrada:
    • 'hash': 'ec2a40cac3ac5dadf1d31f3cad03bdc8465caab5acbc5407ee7f4a7400aab577'— es el hash de la transacción anterior.
    • 'index': 1– indica la segunda salida (numerada desde cero), que se utiliza para desbloquear.
  • Por lo tanto, la entrada hace referencia a una salida específica de una transacción anterior, demostrando que el autor de la transacción tiene derecho a gastarla.

3. Sequence (sequence)

  • El valor 4294967295 (0xFFFFFFFF) es un número máximo de 32 bits.
  • En Bitcoin, este campo sirve para indicar que la entrada no está participando en el mecanismo Replace-By-Fee (RBF) ni tiene un bloqueo de tiempo/bloqueo relativo (Relative Timelock).
  • A menudo se usa por defecto para entradas fijas.

La importancia de scriptSig en un contexto de seguridad

  • ScriptSig son los datos para desbloquear fondos que están protegidos por el script de bloqueo de la salida anterior.
  • En el caso de transacciones P2SH (a menudo para multifirma), scriptSig contiene:
    • Firmas de los participantes que confirman el derecho a gastar los fondos.
    • El redeemScript original, cuyo hash está especificado en el script de bloqueo de la salida anterior.
  • Una verificación exitosa de scriptSig asegura que el autor de la transacción realmente tiene la autoridad necesaria para disponer de los fondos.

El criptoanálisis de la extracción de la primera entrada de transacción ( ins) con el hash de transacción dado mostró que:


  • La entrada de la primera transacción contiene un script de desbloqueo complejo, que incluye firmas digitales y claves públicas.
  • Se utiliza una referencia a una salida específica de otra transacción ec2a40cac3ac5dadf1d31f3cad03bdc8465caab5acbc5407ee7f4a7400aab577:1.
  • El valor máximo de secuencia indica la ausencia de bloqueos especiales o RBF.
  • Presumiblemente, se trata de una transacción multifirma P2SH, donde se requieren varias firmas para confirmar el gasto de los fondos.

Por lo tanto, los datos obtenidos permiten una comprensión más profunda de la mecánica de verificación de los derechos para gastar fondos, se utilizan para garantizar la seguridad de la red Bitcoin, así como en el desarrollo y auditoría de contratos inteligentes basados en scripts de Bitcoin.


Ataque de falsificación de firma digital: Cómo las vulnerabilidades CVE-2025-29774 y el error SIGHASH_SINGLE amenazan los métodos operativos de las carteras multifirma con RawTX falsos

Análisis detallado del resultado de la extracción de la segunda salida ( outs)

Ejecutemos el comando para obtener información sobre una de las salidas de la transacción con el identificador ec2a40cac3ac5dadf1d31f3cad03bdc8465caab5acbc5407ee7f4a7400aab577.

root@kitploit:~
!./darkai -redeemscript ec2a40cac3ac5dadf1d31f3cad03bdc8465caab5acbc5407ee7f4a7400aab577

outs Específicamente, la segunda salida ( ) de esta transacción, el elemento con índice 1, fue extraída.


El resultado obtenido:

root@kitploit:~
{
'value': 350000,
'script': 'a91406612b7cb2027e80ec340f9e02ffe4a9a59ba76287'
}

1. Análisis detallado del campo de datos recibido value

  • Tamaño: 350,000 satoshis.
  • Esta cantidad de fondos se encuentra en la segunda salida de la transacción especificada y puede gastarse si se cumplen las condiciones especificadas en el script correspondiente.
  • Traducción en BTC: 350,000 satoshi = 0.0035 BTC
Ataque de falsificación de firma digital: Cómo las vulnerabilidades CVE-2025-29774 y el error SIGHASH_SINGLE amenazan los métodos operativos de las carteras multifirma con RawTX falsos

2. Valor del campo script

  • Característica:
    El script a91406612b7cb2027e80ec340f9e02ffe4a9a59ba76287 es un script de bloqueo clásico (scriptPubKey) del formato P2SH (Pay-to-Script-Hash) .
  • Transcripción del script:
    • a9— OP_HASH160 es un operador que primero aplica SHA-256 y luego RIPEMD-160 a los datos de entrada.
    • 14— la longitud (20 bytes) del siguiente valor es el tamaño del hash.
    • 06612b7cb2027e80ec340f9e02ffe4a9a59ba762— hash de 20 bytes, también conocido como script hash , es una representación única del script de redención que controla el gasto de estos fondos.
    • 87— OP_EQUAL es un operador que compara dos valores y devuelve verdadero si son iguales.

Por lo tanto, el script requiere que para desbloquear (gastar fondos), el usuario presente un script de redención cuyo hash coincida con este valor.


El significado y el papel del redeem script en el contexto de P2SH

  • Redeem script es un script original que establece las condiciones para gastar fondos, por ejemplo, multifirma, un escenario complejo con un límite de tiempo, etc.
  • Las salidas de transacciones solo almacenan el hash del redeem script, ahorrando espacio y protegiendo los detalles de las condiciones.
  • Para utilizar los fondos invertidos en esta salida, al crear una nueva transacción, el usuario debe proporcionar en scriptSig un redeem script serializado que sea correctamente decodificado y verificado por la red.

Significado general del resultado

  • El ID de transacción ec2a40cac3ac5dadf1d31f3cad03bdc8465caab5acbc5407ee7f4a7400aab577está asociado con una salida que contiene 0.0035 BTC.
  • Estos fondos están vinculados a una dirección P2SH controlada por un script con un hash 06612b7cb2027e80ec340f9e02ffe4a9a59ba762.
  • Para gastar estos fondos, debe presentar un redeem script correspondiente a este hash y cumplir con las condiciones establecidas en él.

Digital Signature Forgery Attack: How CVE-2025-29774 Vulnerabilities and the SIGHASH_SINGLE Bug Threaten Multi-Signature Wallets Methods of Operations with Fake RawTX

La importancia de la información obtenida en un contexto más amplio

  • Este resultado nos permite confirmar que los fondos están efectivamente en la salida con las condiciones Pay-to-Script-Hash.
  • Comprender la estructura de dichas salidas es importante para el análisis de seguridad, el desarrollo de escenarios de asignación complejos y la verificación de condiciones de gasto.
  • El uso de P2SH proporciona un mecanismo seguro y eficiente para administrar fondos en la red Bitcoin, permitiendo la creación de contratos inteligentes y billeteras seguras.

La información recibida confirma que el segundo registro de salida de la transacción ec2a40cac3ac5dadf1d31f3cad03bdc8465caab5acbc5407ee7f4a7400aab577 almacena la cantidad de 0.0035 BTC, controlada por un script P2SH estándar con un valor hash160 06612b7cb2027e80ec340f9e02ffe4a9a59ba762. Para gestionar estos fondos, es necesario presentar el redeem script correspondiente, lo que proporciona un alto nivel de seguridad y flexibilidad en la gestión de bitcoins.


Confirmemos el descifrado de scriptSig:

root@kitploit:~
OP_FALSE 304502... 304602... 5221023927b5cd7facefa7b85d02f73d1e1632b3aaf8dd15d4f9f359e37e39f05611962103d2c0e82979b8aba4591fe39cffbf255b3b9c67b3d24f94de79c5013420c67b802103ec010970aae2e3d75eef0b44eaa31d7a0d13392513cd0614ff1c136b3b1020df53ae

Ejecutemos el comando para obtener HASH160 . Los desarrolladores de Bitcoin han establecido un estándar para un hash de 20 bytes (hex) que se usa ampliamente sin cambios en otras criptomonedas populares como Bitcoin (BTC), Ethereum (ETH), Tether (USDT), BNB (BNB), Solana (SOL), XRP (XRP), Cardano (ADA), Dogecoin (DOGE), USDC (USDC), Polkadot (DOT), Avalanche (AVAX), Shiba Inu (SHIB), Stellar (XLM), TRON (TRX), Chainlink (LINK), Litecoin (LTC), Bitcoin Cash (BCH), Monero (XMR) para denotar el identificador abreviado de scripts y claves públicas.


Ejecutemos el comando:

root@kitploit:~
!./darkai -hexdata 5221023927b5cd7facefa7b85d02f73d1e1632b3aaf8dd15d4f9f359e37e39f05611962103d2c0e82979b8aba4591fe39cffbf255b3b9c67b3d24f94de79c5013420c67b802103ec010970aae2e3d75eef0b44eaa31d7a0d13392513cd0614ff1c136b3b1020df53ae

Proceso de procesamiento:

  1. La cadena original, representada en formato hexadecimal, se convierte en una secuencia de bytes (decodificada de hex a formato binario). Esta secuencia es un script serializado (redeem script) o una estructura similar de un script de bitcoin.
  2. Los bytes recibidos se someten a hash utilizando el algoritmo SHA-256 (hash único), cuyo resultado se procesa luego mediante la función criptográfica RIPEMD-160.
  3. El hash RIPEMD-160 resultante de los datos binarios SHA-256 se obtiene como una cadena:
root@kitploit:~
06612b7cb2027e80ec340f9e02ffe4a9a59ba762

Este hash de 20 bytes (hex) se llama HASH160 y se usa ampliamente en Bitcoin para denotar un identificador abreviado de scripts y claves públicas.


Significado y contexto del resultado

  • El proceso de hash RIPEMD-160(SHA-256(datos)) , conocido como HASH160, es el estándar para crear direcciones y scripts en Bitcoin, incluido P2SH (Pay-to-Script-Hash). HASH160 proporciona un identificador único y compacto que ahorra espacio en la blockchain.
  • El uso de hash doble (SHA-256, luego RIPEMD-160) combina las fuertes propiedades criptográficas de ambas funciones: resistencia a colisiones, unilateralidad y resistencia a ataques.
  • El hash resultante corresponde al hash del script del redeem script, es decir, el script que controla el acceso a los fondos bloqueados en la dirección P2SH.
  • En particular, este HASH160 aparece en el script de bloqueo (scriptPubKey) de las salidas de transacciones específicas, lo que requiere que se proporcione el propio redeem script original con el mismo hash y las firmas correctas al gastar.

Detalles técnicos y explicaciones

  • Bitcoin tiene un concepto de hash doble SHA-256 y RIPEMD-160 para proteger direcciones y scripts.
  • El uso de HASH160 en lugar de una salida SHA-256 simple de 256 bits reduce la longitud del hash de 32 bytes a 20 bytes, lo que reduce el almacenamiento y el tamaño de los datos en la red.
  • HASH160 se utiliza para generar principalmente direcciones P2SH y direcciones P2PKH heredadas.

Un paso clave en el procesamiento de scripts de Bitcoin utilizando funciones hash criptográficas.
Convertir scripts serializados o claves públicas a HASH160 permite una identificación, indexación y protección eficiente de los datos en la blockchain de Bitcoin.

Hash recibido:

root@kitploit:~
{'06612b7cb2027e80ec340f9e02ffe4a9a59ba762'}

El equipo ha producido el hash exacto que sirve como enlace entre los scripts complejos y el formato compacto utilizado para almacenar y verificar transacciones en la red Bitcoin.


Digital Signature Forgery Attack: How CVE-2025-29774 Vulnerabilities and the SIGHASH_SINGLE Bug Threaten Multi-Signature Wallets Methods of Operations with Fake RawTX

Por qué Satoshi eligió el doble SHA-256 y cómo afecta la fortaleza criptográfica

Satoshi Nakamoto eligió usar el hash doble SHA-256 (es decir, aplicar SHA-256 dos veces seguidas) en los algoritmos de hash de Bitcoin por varias razones importantes que mejoran la fortaleza criptográfica y la seguridad de la red.

Razones para elegir el doble SHA-256

  1. Mejora de la resistencia a varios ataques
    Una sola aplicación de SHA-256 ya tiene una alta resistencia criptográfica, es resistente a colisiones y preimágenes. Sin embargo, la aplicación doble de la función hash – primero SHA-256 a los datos originales, luego SHA-256 al resultado – complica aún más el análisis y los ataques al hash.
    Esto reduce la probabilidad de seleccionar con éxito una colisión o recuperar inversamente los datos originales, hace que sea más laborioso seleccionar varias opciones y protege contra debilidades que son posibles en implementaciones específicas del algoritmo.
  2. Protección contra problemas de longitud de datos de entrada
    El doble SHA-256 proporciona una capa adicional de seguridad preventiva al tener en cuenta el comportamiento de la construcción interna del hash y el manejo de los bits de relleno en el marcado de datos. Esto minimiza los posibles ataques relacionados con el formato de datos.
  3. Seguimiento de buenas prácticas criptográficas
    El hash doble es una técnica de seguridad bien establecida en varios protocolos criptográficos. Por ejemplo, las sumas de verificación y las firmas digitales utilizan cifrado doble o hash doble. Esto aumenta la solidez de la cadena de seguridad.
  4. Seguridad probada y amplio soporte
    SHA-256 es miembro de la familia SHA-2 desarrollada por la Agencia de Seguridad Nacional (NSA) de EE. UU. y publicada por el Instituto Nacional de Estándares y Tecnología (NIST). Este algoritmo se considera uno de los más seguros en la actualidad, y su uso dual proporciona la máxima seguridad.

¿Cómo afecta esto a la fortaleza criptográfica?

  • Resistencia a colisiones y preimágenes
    Cada una de las rondas de SHA-256 es altamente resistente a colisiones: es extremadamente difícil encontrar dos entradas con el mismo hash. El doble hash mejora esta garantía porque un atacante debe encontrar una colisión para dos SHA-256 consecutivos, lo que aumenta significativamente la complejidad computacional.
  • Función unidireccional con efecto avalancha
    La aplicación doble mejora el "efecto avalancha", donde el más mínimo cambio en los datos de entrada provoca un cambio radical en el hash de salida, lo que dificulta la detección de patrones y la ingeniería inversa.
  • Resistencia mejorada al criptoanálisis
    El doble SHA-256 protege contra posibles debilidades de implementación o vulnerabilidades inesperadas que podrían descubrirse en una sola iteración, minimizando el riesgo de ataques que utilicen herramientas cuánticas o de computación clásica.
  • Aplicabilidad a Prueba de Trabajo y seguridad de blockchain
    El mecanismo PoW en Bitcoin se basa en calcular hashes de bloques que deben satisfacer una cierta dificultad. El doble hash crea una barrera adicional para la falsificación de bloques, aumentando la fiabilidad y la confianza en la blockchain 5 .

El uso dual de SHA-256es una elección deliberada de Satoshi Nakamoto para proporcionar una capa adicional de seguridad y una sólida fortaleza criptográfica a todo el sistema Bitcoin. Este diseño minimiza los riesgos de colisión, mejora la unilateralidad y protege de forma segura los datos en la red blockchain, creando una base sólida para la seguridad de las transacciones y el consenso en el sistema. Por lo tanto, el doble SHA-256 es un elemento clave de la arquitectura de Bitcoin, que combina técnicas criptográficas avanzadas con un sistema distribuido.


Digital Signature Forgery Attack: How CVE-2025-29774 Vulnerabilities and the SIGHASH_SINGLE Bug Threaten Multi-Signature Wallet Operational Methods with Fake RawTX


Multifirma en Bitcoin: el papel de redeemScript y la instrucción OP_CHECKMULTISIG

La seguridad y flexibilidad de las transacciones modernas de Bitcoin se basa en un sistema de scripting que permite condiciones complejas para gastar fondos. Uno de los mecanismos clave es la multifirma (multisig) , donde los fondos solo se pueden gastar si hay varias firmas digitales válidas de un conjunto de posibles. En este artículo, analizaremos en detalle cómo se implementa exactamente esto en Bitcoin, qué es redeemScript, cómo funciona la instrucción OP_CHECKMULTISIG y por qué este enfoque tiene demanda.

¿Qué es redeemScript?

En el contexto de Bitcoin, un redeemScript es un script que contiene las condiciones para gastar fondos, que se almacenan en la salida de la transacción en formato Pay-to-Script-Hash (P2SH). En lugar de almacenar el script completo en la blockchain, el hash del redeemScript se almacena en la salida, ahorrando espacio y ocultando los detalles de las condiciones hasta el momento del gasto.


RedeemScript puede incluir, por ejemplo, múltiples claves públicas y un número umbral de firmas – esto es lo que implementan las billeteras multifirma.


¿Cómo funciona OP_CHECKMULTISIG?

Consideremos la instrucción OP_CHECKMULTISIG: propósito y funcionamiento, donde el elemento principal en redeemScript que implementa la verificación de multifirma es OP_CHECKMULTISIG .

  • La instrucción recibe dos grupos de datos de la pila como entrada:
    • N claves públicas (por ejemplo, tres claves públicas)
    • M firmas (por ejemplo, dos firmas), donde M ≤ N es el umbral requerido de firmas para confirmar la transacción.
  • Para validar una transacción, OP_CHECKMULTISIG verifica que cada una de las M firmas esté correctamente firmada por cualquiera de las N claves públicas.
  • Si todas las firmas son válidas y coinciden con las claves en el redeemScript, la instrucción devuelve true , permitiendo gastar los fondos.

Características y error al eliminar un elemento de la pila

Debido a un error histórico en la implementación de OP_CHECKMULTISIG , se elimina un elemento adicional, un valor no utilizado, de la pila durante la ejecución. Para evitar este problema, scriptSig utiliza un elemento especial OP_FALSE(valor 0) al principio, que compensa este error y previene posibles vulnerabilidades.


  • A continuación veremos la implementación de OP_CHECKMULTISIG , que elimina un elemento adicional de la pila. Usando este error, el atacante compensa OP_CHECKMULTISIG como una vulnerabilidad potencial.
  • Por lo tanto, la estructura scriptSig para multifirma se ve algo así: donde el primer elemento del script es un marcador .OP_FALSE <firma1> <firma2> ... <redeemScript>OP_FALSE

Ejemplo práctico: multifirma 2 de 3

Basado en el código redeemScript:

root@kitploit:~
023927... 03d2c0... 03ec01... 3 OP_CHECKMULTISIG
  • Aquí se declaran 3 claves públicas .
  • El umbral es 2 firmas de estas tres requeridas para una verificación exitosa.
  • La operación OP_CHECKMULTISIGverifica que las dos firmas proporcionadas (en scriptSig) correspondan a dos de las tres claves y sean válidas.
  • OP_FALSEen scriptSig compensa el error de eliminar el valor extra.

La importancia y las ventajas de las billeteras multifirma

  • Mayor seguridad. El propietario de la billetera puede distribuir el control de los fondos entre varias personas o dispositivos, eliminando la posibilidad de un único gasto no autorizado.
  • Flexibilidad. Se pueden implementar varios esquemas, por ejemplo, "2 de 3", "3 de 5", con diferentes condiciones.
  • Eficiencia legal: Las multifirmas se utilizan a menudo en entornos corporativos para garantizar la gestión compartida de activos.

Contexto técnico y práctico

  • Los escenarios de multifirma se utilizan ampliamente en transacciones P2SH y SegWit.
  • La instrucción OP_CHECKMULTISIG es una de las operaciones que más recursos consume en la blockchain, ya que requiere verificar múltiples firmas. Existe un límite a nivel de protocolo en el número de operaciones de señal (sigops) por bloque.
  • A pesar de la historia con OP_FALSE, el mecanismo ha demostrado su fiabilidad y ha encontrado una amplia aplicación.

RedeemScript con la instrucción OP_CHECKMULTISIG es una herramienta compleja y poderosa en el arsenal de Bitcoin que permite crear monederos multifirma con un umbral de firmas, proporcionando un alto nivel de seguridad y control sobre los fondos. Este mecanismo se ha convertido en una piedra angular para organizaciones, usuarios y servicios que desean utilizar la gestión compartida de sus activos en un entorno descentralizado y seguro. Así, la multifirma a través de redeemScript y OP_CHECKMULTISIG no es solo una tecnología, sino una funcionalidad que expande las capacidades del modelo clásico de criptomoneda.


Ataque de falsificación de firma digital: Cómo las vulnerabilidades CVE-2025-29774 y el error SIGHASH_SINGLE amenazan los métodos operativos de monederos multifirma con RawTX falsos

Cómo funciona el mecanismo de verificación multifirma de Bitcoin con OP_CHECKMULTISIG y redeemScript

El mecanismo de verificación multifirma de Bitcoin se basa en el uso de scripts especiales con las instrucciones OP_CHECKMULTISIG y redeemScript, lo que permite la concordancia de firmas de umbral, proporcionando mayor seguridad y gestión compartida de los fondos.

Fundamentos del mecanismo multifirma

Multifirma es un sistema en el que se requieren múltiples firmas válidas de un conjunto dado de claves públicas para completar una transacción. Un esquema típico se denota como m de n — por ejemplo, "2 de 3", donde se necesitan dos firmas cualesquiera de tres claves para autorizar un gasto.

En Bitcoin, esta lógica se implementa a través de:

  • redeemScript — un script que describe las condiciones para gastar fondos. Contiene una lista de claves públicas y un parámetro de umbral (m).
  • scriptSig – el script de desbloqueo, que incluye las firmas necesarias para la verificación, y el propio redeemScript.

Cómo funciona redeemScript

La instrucción OP_CHECKMULTISIG verifica que las firmas proporcionadas en scriptSig sean válidas y coincidan con las claves públicas publicadas de redeemScript.

RedeemScript se estructura de la siguiente manera:

root@kitploit:~
OP_M <pubkey1> <pubkey2> ... <pubkeyN> OP_N OP_CHECKMULTISIG
  • OP_M y OP_N — instrucciones que especifican el número de firmas requeridas y el número total de claves públicas, respectivamente (por ejemplo, OP_2 y OP_3).
  • <pubkeyX> — claves públicas de los participantes.
  • OP_CHECKMULTISIG — un operador que implementa la verificación multifirma.

  • Toma como entrada varias firmas y un conjunto de claves públicas.
  • Para una verificación exitosa, cada firma debe coincidir correctamente con una de las claves públicas especificadas.
  • La operación devuelve verdadero si el número de firmas válidas alcanza el umbral m.

Una característica técnica importante es un error histórico de implementación de OP_CHECKMULTISIG que provoca que se elimine un elemento adicional no utilizado de la pila. Para compensar este error, en scriptSig se coloca un valor OP_FALSE (código 0) al inicio para "bloquear" el desplazamiento de la pila.


Cómo funciona la estructura de scriptSig

Para un monedero con multifirma "2 de 3", antes de gastar fondos, se forma scriptSig de la siguiente manera:

root@kitploit:~
OP_FALSE <signature1> <signature2> <redeemScript>
  • OP_FALSE — un valor ficticio para compensar el error de OP_CHECKMULTISIG.
  • <signature1> y <signature2> – dos firmas digitales autorizadas por los propietarios de las correspondientes claves privadas.
  • <redeemScript> — el script en sí con las claves públicas y los parámetros de verificación.

Al verificar una transacción de nodo:

  1. Extrae redeemScript de scriptSig.
  2. Lo hashea y lo compara con el hash almacenado en el script de bloqueo (scriptPubKey) de la salida anterior (formato P2SH – OP_HASH160 <hash de redeemScript> OP_EQUAL).
  3. Si los hashes coinciden, deserializa redeemScript.
  4. Ejecuta la instrucción OP_CHECKMULTISIG, comparando firmas y claves para encontrar una coincidencia.
  5. Devuelve verdadero si las comprobaciones son exitosas.

Si todas las entradas de una transacción pasan esta comprobación, la transacción se considera válida. Con dicha validez, al ejecutar el operador de este error, el atacante compensa  OP_CHECKMULTISIG  como una vulnerabilidad potencial.


Mecanismo multifirma a través de redeemScript y OP_CHECKMULTISIG

  • Seguridad incrementada: Múltiples titulares de claves privadas deben acordar realizar una transacción, reduciendo el riesgo de robo si una clave se ve comprometida.
  • Flexibilidad y escalabilidad: Se puede establecer un umbral arbitrario de firmas (de 1 a 15), así como una lista de participantes – de 2 a 15 claves públicas.
  • Gestión colectiva de activos: Adecuado para cuentas corporativas, monederos conjuntos, DAO, permitiendo un control de acceso robusto.
  • Transparencia y verificabilidad: Todos los datos y condiciones necesarios están en la blockchain, y la verificación de transacciones es automática, descentralizada y transparente.

El mecanismo de verificación multifirma de Bitcoin utilizando el comando OP_CHECKMULTISIG y redeemScript permite configurar esquemas complejos de firmas de umbral, y al ejecutar este operador de error, un atacante compensa  OP_CHECKMULTISIG  como una vulnerabilidad potencial en transacciones controladas en la red distribuida de Bitcoin.


¿Cuáles son las características y limitaciones al verificar múltiples firmas con OP_CHECKMULTISIG? Veamos los aspectos y limitaciones clave:

  1. El umbral de verificación de firmas
    OP_CHECKMULTISIG permite especificar el número de firmas requeridas T del total de claves públicas N (el esquema "T de N"). Por ejemplo, 2 de 3. Para que una transacción sea válida, es suficiente tener T firmas válidas.
  2. Verificar múltiples firmas en una sola operación
    A diferencia de la verificación de firma única (OP_CHECKSIG), OP_CHECKMULTISIG verifica múltiples firmas a la vez, correlacionándolas con las correspondientes claves públicas, lo que aumenta la eficiencia y la conveniencia de implementar monederos multifirma.
  3. Uso de redeemScript para una condición de gasto
    En el formato P2SH, el esquema multifirma está oculto bajo el hash de redeemScript – un script completo con claves públicas y parámetros. Para gastar los fondos, el usuario debe presentar el redeemScript y las firmas correspondientes.
  4. Error histórico – elemento extra en la pila
    OP_CHECKMULTISIG tiene la característica de eliminar un elemento adicional no utilizado de la pila durante la ejecución (un error de implementación "off-by-one"). Para compensarlo, se agrega un elemento ficticio OP_FALSE al inicio de scriptSig para alinear correctamente la pila. Esta es una característica reconocida y aceptada por la comunidad.

Limitaciones de OP_CHECKMULTISIG

  1. Número máximo de claves y firmas
    Bitcoin tiene un límite de 15 claves públicas y, en consecuencia, 15 firmas en un redeemScript. Esto se debe al límite de tamaño del script (~520 bytes) y al número de operaciones permitidas para verificación por bloque (límite de sigops).
  2. Aumento del tamaño de la transacción y las comisiones
    Las transacciones multifirma son más grandes debido al gran número de claves públicas, firmas y datos adicionales de redeemScript. Esto incrementa el tamaño de la transacción en sí y, como resultado, la comisión por su procesamiento.
  3. Límites de tamaño del script
    El tamaño máximo de cada script (entrada o salida) está limitado a 520 bytes. Con un gran número de claves, redeemScript se vuelve voluminoso, lo que afecta la conveniencia y eficiencia del uso de multifirma.
  4. Ocultación de condiciones de gasto solo cuando se usa P2SH
    Si no se usa P2SH, el script correcto con claves públicas y OP_CHECKMULTISIG se almacena abiertamente en las salidas de la transacción, lo que revela las claves públicas de antemano, reduciendo la privacidad.
  5. Falta de soporte nativo para lógica compleja
    Bitcoin Script es incompleto y limitado en capacidades, no hay bucles ni recursión, por lo que las condiciones políticas o contractuales complejas de las multifirmas se implementan de manera limitada.

Ataque de falsificación de firma digital: Cómo las vulnerabilidades CVE-2025-29774 y el error SIGHASH_SINGLE amenazan los métodos operativos de monederos multifirma con RawTX falsos


Tipos de Firmas en Bitcoin: Características y Rol de las Banderas SIGHASH

Bitcoin utiliza firmas digitales para autorizar transacciones, permitiendo a los propietarios de fondos confirmar su derecho a disponer de ellos. La peculiaridad es que las firmas pueden limitar su alcance de acción no a toda la transacción, sino solo a una parte de ella. Esto se implementa mediante banderas especiales – SIGHASH , que determinan qué datos de la transacción caen exactamente bajo la firma. Consideremos los tipos de hashes de firma, su propósito, ejemplos de uso, así como las características que surgen en situaciones no estándar.

Al firmar una transacción de Bitcoin, se crea una firma digital que se forma sobre un fragmento específico de datos de la transacción. Es a través de la bandera SIGHASH que se indica qué parte de estos datos debe cubrir esta firma. El tipo de hash de firma se transmite por el último byte de la propia firma y determina el área incluida en el hash, y por tanto en la sección firmada. Esto permite formar de manera flexible las condiciones sobre qué acciones específicas sobre la transacción son aprobadas por el firmante.


Los tres tipos principales de SIGHASH

1. SIGHASH_ALL (0x01)

Este es el tipo de firma predeterminado en la mayoría de los monederos y clientes. La firma cubre todas las entradas y todas las salidas de la transacción , lo que significa:

  • El firmante confirma esta combinación particular de fuentes y destinatarios.
  • Cualquier cambio en las entradas o salidas después de la firma invalida la firma.
  • Proporciona el mayor nivel de seguridad y previsibilidad de la transacción.

2. SIGHASH_NONE (0x02)

Con este tipo de firma, se firman todas las entradas, pero ninguna de las salidas :

  • El firmante acepta usar las entradas listadas, pero no se compromete con salidas específicas.
  • Esto permite cambiar las salidas de una transacción sin tener que volver a firmar las entradas.
  • Este enfoque no es seguro para entradas individuales y se usa más a menudo en escenarios específicos, como contratos inteligentes complejos o transacciones cooperativas.

3. SIGHASH_SINGLE (0x03)

Este tipo de firma firma todas las entradas, pero solo una salida – con el mismo número de índice que la entrada :

  • Es decir, la firma se limita al par "entrada N – salida N".
  • Permite al firmante controlar un par específico de entrada-salida mientras ignora el resto.
  • Ayuda a crear disposiciones parciales o condicionales de fondos.
  • Sin embargo, puede haber un problema si no hay una salida con el índice de la entrada – en ese caso, se devuelve un hash con un valor de uno (que es un error conocido descrito a continuación).

Ejemplo de una transacción real

Considere una transacción con tres entradas, donde se han extraído de los scripts de firma (scriptSig) de dos de ellas firmas que terminan con un byte 0x03 que indica SIGHASH_SINGLE — es decir, firmas que firman solo el par de entradas y salidas correspondientes. Sin embargo, aquí observamos una situación: la entrada con índice 2 no tiene una salida correspondiente con el mismo índice.


Ataque de falsificación de firma digital: Se utilizan varios métodos de evaluación de vulnerabilidades para prevenir incidentes criptográficos y mejorar la ciberseguridad de las plataformas de criptomonedas

791fe035d312dcf9196b48649a5c9a027198f623c0a5f5bd4cc311b8864dd0cf


Ataque de falsificación de firma digital: Se utilizan varios métodos de evaluación de vulnerabilidades para prevenir incidentes criptográficos y mejorar la ciberseguridad de las plataformas de criptomonedas

Transacción Raw


¿Qué sucede si no hay una salida por debajo del índice de entrada?

Debido a un error histórico de Bitcoin, en tales situaciones el hash de la transacción para firmar se devuelve como un número fijo – uno (int 1). Esto no corresponde a un hash válido de la transacción que se está firmando y puede crear problemas de seguridad y compatibilidad.

Banderas y modificadores adicionales

Además de los tres valores básicos de SIGHASH, son posibles combinaciones de estos valores con la bandera SIGHASH_ANYONECANPAY , que permite firmar solo una entrada, dejando las demás abiertas para modificación. Esto amplía las posibilidades para crear protocolos colaborativos complejos y transacciones multiparte, donde diferentes participantes firman solo sus partes.


Significado práctico y aplicación

  • SIGHASH_ALL proporciona la confirmación más completa de una transacción y se usa en monederos estándar.
  • SIGHASH_NONE y SIGHASH_SINGLE permiten firmas más flexibles y parciales utilizadas en escenarios complejos: multifirmas, contratos inteligentes, transacciones de confianza.
  • Comprender estos tipos es crítico para desarrolladores y analistas que crean transacciones personalizadas o investigan errores/vulnerabilidades.

Los tipos SIGHASH son Bitcoin un ingenioso mecanismo para gestionar el nivel de control y el alcance de las firmas digitales dentro de las transacciones. Logran un equilibrio entre seguridad, flexibilidad y compatibilidad. La historia incluye complicaciones inesperadas, como el error con SIGHASH_SINGLE sin salida correspondiente, lo que resalta la importancia de una comprensión profunda de los detalles técnicos para trabajar exitosamente con Bitcoin a un nivel avanzado.


¿Cómo afectan las diferencias entre SIGHASH_ALL, NONE y SINGLE a la seguridad de las transacciones de Bitcoin?

Las diferencias entre los tipos de firma SIGHASH_ALL, SIGHASH_NONE y SIGHASH_SINGLE tienen un impacto significativo en la seguridad de las transacciones de Bitcoin porque determinan qué partes de la transacción se mantienen dentro de la firma digital y, por lo tanto, están protegidas contra modificaciones.


1. SIGHASH_ALL – máxima seguridad

  • Descripción: La firma cubre todas las entradas y todas las salidas de una transacción .
  • Impacto en la seguridad:
    • Garantiza que ninguna entrada o salida pueda modificarse después de la firma.
    • Elimina la posibilidad de sustituir al destinatario o el monto del pago.
    • El firmante tiene control total sobre el resultado final de la transacción.
  • Riesgos: Alta rigidez: si es necesario cambiar algo (por ejemplo, agregar una salida o aumentar la comisión), se debe volver a firmar.

2. SIGHASH_NONE – salidas abiertas, entradas cerradas

  • Descripción: Se firman todas las entradas y todas las salidas quedan sin firmar .
  • Impacto en la seguridad:
    • Las entradas de la firma están protegidas, pero las salidas pueden ser cambiadas por cualquier persona después de la firma.
    • Potencial de abuso: Un atacante puede cambiar las direcciones y los montos de una transferencia después de la firma.
  • Uso: Rara vez se utiliza, principalmente en protocolos de colaboración de confianza y escenarios cooperativos.
  • Riesgos: Si un atacante obtiene acceso a las firmas, puede enviar fondos a sus direcciones sin el consentimiento del firmante.

3. SIGHASH_SINGLE — firma de la entrada y salida correspondientes

  • Descripción: Firma todas las entradas, pero solo la salida con el mismo índice que la entrada de la firma .
  • Impacto en la seguridad:
    • Permite al firmante controlar solo una salida específica, mientras que las demás permanecen modificables.
    • Si el número de salidas es menor que el número de entradas, se produce un error: para una salida faltante, el hash es 1, lo que puede dar lugar a vulnerabilidades.
    • Permite una distribución más flexible de la gestión de fondos, pero dicha flexibilidad conlleva una reducción de las garantías de gasto seguro.
  • Riesgos:
    • Posibilidad de reemplazar o eliminar salidas no cubiertas.
    • No es adecuado para transacciones donde es importante mantener toda la lógica de pago sin cambios.

El impacto final

Tipo Sighash¿Qué se firma?Nivel de seguridadRiesgos posiblesAplicación
SIGHASH_ALLTodas las entradas y salidas de la transacciónMáximo – sin cambios en absolutoRequerimiento de cambio (necesidad de volver a firmar la transacción)Estándar para la mayoría de pagos
SIGHASH_NONETodas las entradas, ninguna salidaMedio – las salidas no están protegidasSustitución de salidas, pérdida de control sobre los destinatariosEscenarios cooperativos, multi-firma
SIGHASH_SINGLETodas las entradas, salida con índice correspondiente a la entradaBajo – solo una salida estará protegidaError en ausencia de la salida correspondiente, sustitución parcialPagos parciales, escenarios complejos

La elección del tipo SIGHASH afecta directamente el grado de confianza en una transacción en la red de criptomonedas Bitcoin:

  • SIGHASH_ALL proporciona el nivel más alto de seguridad , por lo que se usa ampliamente para la mayoría de las transacciones.
  • SIGHASH_NONE y SIGHASH_SINGLE brindan flexibilidad y firma parcial , lo que puede ser útil en ciertos casos, pero también aumenta los riesgos de suplantación y abuso.
  • Comprender estas diferencias es fundamental al diseñar esquemas de múltiples firmas, protocolos complejos y contratos inteligentes de Bitcoin, donde el equilibrio entre flexibilidad y seguridad debe sopesarse cuidadosamente.

Cómo el mal uso de SIGHASH_ALL puede generar vulnerabilidades en las transacciones

El uso incorrecto o la falta de una implementación correcta de SIGHASH_ALL en las firmas de transacciones de Bitcoin puede generar vulnerabilidades graves que afectan la seguridad de los fondos y la integridad del sistema. Los aspectos clave de estas vulnerabilidades son:



    Read more

Descargar herramienta