This repository is an extension of our research on cryptocurrency clones and vulnerabilities that takes existing vulnerabilities in major coins and uses clone detection tools as a method of identifying propagation of these vulnerabilities in other coins.
List of documented CVEs
National Vulnerability Database (NVD) Report
A reachable assert statement in Bitcoin Core allows a remote denial of service (application crash) exploitable by miners via attempting to double-spend a transaction insinde a mined block. This CVE also later leads to an inflation bug, which we do not focus on here.
The code relevant to this vulnerability can be found in the file validation.cpp
of Bitcoin Core 0.14.X.
This specific file can be found here.
When a block containing a double spent transaction is validated, it skips the duplicate input check because of the false parameter here. The double spend will reach the function UpdateCoins(), and the inputs to the transaction are being marked as spent in the Unspent Transaction Output(UTXO) database. The first time the transaction is seen, the coins involved are marked as spent. Since the coins involved in the transaction are already marked as spent, the second time the transaction is seen, coins->vout[nPos].IsNull()
will be true. It will then enter this if statement and subsequently execute the assert statement that follows. The assert then causes the node to crash, resulting in the denial of service vulnerability. (Paraphrased from Source 2)
The coin(s) that we found to still contain this vulnerability as of 26/3/2019 include:
- Irlecoin
- MinexCoin (Fixed)
- MktCoin
- PlatinCoin
- QuasarCoin
- TCOIN
Total Coins: 6
These coin(s) still contain unpatched instances of the vulnerability in their code base which can be found here
National Vulnerability Database (NVD) Report
BCTV14 setup produces elements that violate soundness, misleading the original Sprout zk-SNARK verifier into accepting the correctness of a transaction. This allows an attacker to create very large, virtually unlimited amounts of counterfeit shielded tokens without detection. Zcash has switched to different parameters using a new “Sprout-on-Groth16” proving system as of the Sapling network upgrade on October 28th 2018, and so is not affected by the bug.
The code relevant to this vulnerability can be found in the file JoinSplit.cpp
of Zcash 1.X.
This specific file can be found here.
The coin(s) that we found to still contain this vulnerability as of 27/5/2019 include:
Total Coins: 1
These coin(s) still contain unpatched instances of the vulnerability in their code base which can be found here
- [Zcash blog disclosure])(https://z.cash/blog/zcash-counterfeiting-vulnerability-successfully-remediated/)
These two vulnerabilites are closely related and hence are grouped in the same section. All coins presented in this section are vulnerable to both vulnerabilities.
National Vulnerability Database (NVD) Report
A remote network alert system originating from Bitcoin allows the denial of service (memory exhaustion) if an attacker can sign a message with a certain private key that had been known by unintended actors. Due to an infinitely sized map, an attacker can send a large number of alerts (or very large alerts, or both) to a node, causing the node to run out of memory and crash.
National Vulnerability Database (NVD) Report
A 'final alert' was developed to prevent attackers from abusing CVE-2016-10724, which comprises a maximum ID alert that overrides all previous alerts. A final alert is an alert that meets the following conditions here. However, due to alerts being classified by their hashes, any alert can be classified as a final alert, which can also cause the the node to run out of memory. Final alerts are also supposed to be uncancellable, but can inadvertently be cancelled. Alerts first check they cancel any existing alert. Then they are checked for whether any of the remaining alerts cancel it. Because of this order, it is possible to create an alert which cancels a final alert before the node checks whether that alert is cancelled by the final alert. Thus an attacker can cancel a final alert with another alert allowing a node to also be vulnerable to CVE-2016-10724.
The alert system in itself also creates a centralized source in the cryptocurrency. Bitcoin has since deprecated the alert system entirely. Bitcoin has also released a patch for the alert vulnerability which can be found here
The code relevant to these vulnerabilities can be found in the file alert.cpp
of Bitcoin 0.12.X.
This specific file can be found here.
The coin(s) that we found to still contain both CVE-2016-10724 and CVE-2016-10745 as of 14/6/2019 include:
- Absolute
- Adirondack
- AdultChain
- Advance
- Aegeus
- Afro
- AGNI coin
- Airin
- Alpha
- ALQO
- Amero
- Amnesia
- ANODOS
- ANON
- APEIRON
- Apollon
- AquariusCoin
- Aquila
- ArcticCoin
- ARGO
- Aricoin
- Arion
- ARTAX
- Artiqox
- AudioCoin
- Auroracoin
- B3Coin
- BANQ
- Baxur
- Bettex coin
- BiblePay
- Bifrost
- Birake
- BitBay
- Bitcloud
- Bitcoin 2
- Bitcoin Adult
- Bitcoin Final
- Bitcoin Lightning
- Bitcoin Private
- Bitcoin W Spectrum
- BitcoinZ
- Bitcurrency
- BitF
- Bithold
- BitNodes Pro
- Bitradio
- BitRewards
- BlackCoin
- Blocknet
- Blocknode
- Braincoin
- BUCK
- Bullion
- Bulwark
- BuzzCoin
- Capital Coin
- Capra Coin
- Carboncoin
- CardBuyers
- Carebit
- CatoCoin
- Cazcoin
- Cerberus
- CHEESE
- Clams
- Coin2Play
- CoinonatX
- ColossusXT
- Community coin
- Concierge coin
- Condominium Coin
- Copico
- COREZ
- Cosmos Coin
- Crave
- Cropcoin
- CrowdCoin
- Crown
- Cryply
- Cryptoflow
- Cryptonite
- Cryptonodes
- CUBEX
- Curium
- CurveCoin
- DEMOS PAY
- Desire
- Deuscoin
- Deutsche eMark
- Deviant Coin
- Dextro
- Diamond
- DigiMoney
- Digitalcoin
- DigitalPrice
- Digiwage
- Dividend Cash
- DIXIcoin
- Dogecoin
- Dravite
- Dynamic
- Dystem
- EA Coin
- EarnzCoin
- Elbrus
- Ellerium Project
- Elliot Coin
- Elliotcoin
- EmerCoin
- Emrals
- Epic
- Eternity
- Ethereum Cash
- ExclusiveCoin
- Exsolution
- EXUS Coin
- Fantasy Cash
- Fantasy Gold
- FEIRM
- FLCoin
- Folm
- Force Network
- Francs
- Freicoin
- FriendshipCoin
- Frozen
- FuturoCoin
- Gainer
- GambleCoin
- GameCredits
- GenesisX
- Gentarium
- GeyserCoin
- Giant
- Globycoin
- GoaCoin
- GoByte
- Gold Poker
- GoldBlocks
- Graphcoin
- Gravium
- Growers International
- Guardian Coin
- Harvest Masternode Coin
- HeldCoin
- Helium Chain
- Help The Homeless Coin
- Helpico
- Hera Coin
- HERB
- HiddenTalk
- High Temperature Coin
- HIGHLAND
- Hilux
- Hobonickels
- Horizen
- Hush
- I0Coin
- Ignition
- ImageCash
- INDINODE
- Infinex
- Infinipay
- Innoket
- Innova
- INSaNe
- InstaDEX
- Interstellar Holdings
- Interzone
- ION
- IPSUM
- Jiyo
- Joulecoin
- Kaicoin
- Kalkulus
- Keyco
- KRAIT
- Kraken Coin
- Kzcash
- LanaCoin
- Landcoin
- LasVegasCoin
- League Coin
- Legion Coin
- LemonCoin
- LetItRide
- Liberty
- LightPayCoin
- Linda
- LINUX PAY
- Lizus Payments
- LOBSTEX Coin
- LogisCoin
- LUNIQUE
- Macro
- MagnaCoin
- MAKETRIP
- Mambo Coin
- MarteXcoin
- MasterBit
- Masternode Community Coin
- Masternodecoin
- Medic Coin
- Memetic
- Mero
- Mirai
- MNPCoin
- MonetaryUnit
- MoneyBag
- Monkey Project
- MontBlanc 3000
- MotileCoin
- Motion
- MOUSE
- MTI Coin
- MUNcoin
- MYCE
- Nanucoin
- NewYorkCoin
- NextON
- Nitrous
- Nodium
- Northern
- NulleX
- Nyerium
- NYXCoin
- OASIS
- Obsidian
- Ondori
- Over Powered Coin
- Oyster Platform
- PACcoin
- Pandacoin
- PapelCoin
- Parlay
- PAXEX
- PayDay Coin
- Peony Coin
- PepeCoin
- Pesetacoin
- PHOBOS
- Phonecoin
- Phore
- PICPOTO
- PIVX
- PlatinumBAR
- Plexus
- Printex
- ProCurrency
- Profit Hunters Coin
- Project Coin
- Prototanium
- Pura
- Purealt
- PZDC Project
- Qbic
- Quantis
- Quark
- Qubitcoin
- Quix
- QYNO
- Rabbit
- Race
- Radium
- Ragnarok
- Rampant Coin
- Rapture
- Reddcoin
- Reliance
- Renos
- Revolvercoin
- Rhenium
- Ride My Car
- Riecoin
- Roi Coin
- Rover Coin
- RPICoin
- Rubycoin
- Safe
- SafeCoin
- SafeInsure
- SagaCoin
- SaluS
- Sanchezium
- SAROS
- Satoshicoin
- savenode
- Scorecoin
- SCRIV
- SecureCloudCoin
- SecureTag
- Seedcoin
- Shard Coin
- Sharingmarketcoin
- SIBCoin
- SimpleBank
- SJWCoin
- Smart Quorum
- SmartFox
- SnowGem
- Social Send
- Solaris
- Solarium
- Somnio
- SoomCoin
- Sovereign Coin
- SPEDO
- Sphere
- Stakecube
- StarCash Network
- Stipend
- StoneCoin
- StrongHands Masternode
- SUB1X
- Sucre
- SunCoin
- SuppoCoin
- Supro
- SwagBucks
- SwapCash
- Swipp
- SwisscoinCash
- Syndicate
- TajCoin
- Talium
- Talus
- Tao
- Teloscoin
- Terracoin
- The Freedom Coin
- TIMEISMONEY
- Timicoin
- Tincoin
- Tokugawa
- Traid
- Transfercoin
- TravelPay
- Tribe
- Trittium
- Trollcoin
- Ultranatum
- United Crypto Community
- Unobtanium
- UservCoin
- Vantaur
- VapersCoin
- VectorAI
- Velum
- VIOG
- Vitae
- Vivid Coin
- VIVO
- VIZZOTOP
- VoteCoin
- Vsync
- Wavi
- Worx
- XANO
- Xchange
- Xdna
- xGalaxy
- XORN
- XUEZ
- Xuma
- YICOIN
- Zcash
- ZCore
- Zealium
- ZelCash
- Zennies
- Zero
- Zest
- Zixx
- Zoomba
- ZoZoCoin
- zXFLEA
Total Coins: 377
These coin(s) still contain unpatched instances of the vulnerability in their code base which can be found here
*All files uploaded have been cloned from their respective coin repositories.