Ich schreibe einen Vertrag für einen ERC20-Token, basierend auf Zepellin-Verträgen. Mir ist aufgefallen, dass ihr Code den Kurzadressenangriff nicht behandelt. Heißt das, ich sollte mich nicht darum kümmern?
Darüber gab es eine Diskussion .
Der Hauptgrund ist, dass es sich um eine Schwachstelle anderer Verträge und nicht um den Token selbst handelt. Es ist ihre Aufgabe, alle Argumente zu prüfen. Also ja, Sie sollten sich als Token-Entwickler nicht darum kümmern, aber als Vertragsentwickler).
Seit Solidity v0.5.0 ist es nicht mehr notwendig. Aus dem Changelog :
Code-Generator: Zur Laufzeit zurückkehren, wenn calldata zu kurz ist oder außerhalb der Grenzen liegt. Dies geschieht innerhalb des ABI-Decoders und gilt daher auch für abi.decode().
Das Ausführen einer Funktion mit weniger als erforderlich lässt die Transaktion fehlschlagen. Obwohl Sie mehr Daten senden können und es funktioniert, werden die zusätzlichen Daten ignoriert.
Der Kurzadressenangriff ist ein Problem auf Benutzeroberflächenebene.
Es sollte nicht auf der Smart-Contract-Ebene angegangen werden.
Der Angriff auf Kurzadressen wird auf der Ebene der Benutzeroberfläche abgemildert, indem verlangt wird, dass alle Adressen Prüfsummen-Ethereum-Adressen sind:
https://github.com/ethereum/EIPs/blob/master/EIPS/eip-55.md
Wenn die Benutzeroberfläche Ihrer (unbenannten) Multisig-Implementierung die Gültigkeit der Ethereum-Adresse korrekt überprüft, ist sie sicher.
gute Stimmung