Après la faille lamentable sur les portfeuille physique (hardware wallet) Coldcard de la marque Coinkite il y a une semaine, c’est au tour de BTCPay Server d’annoncer un bug critique qui a déjà causé la perte de fond. Si vous faites tourner une instance de BTCPay Server pour accepter Bitcoin dans votre commerce, il faut impérativement mettre à jour vers la version 2.4.2.

Plus d’information ici (désolé, ils n’ont pas posté sur nostr malheureusement): https://x.com/BtcpayServer/status/2085755643659522240

Mais après la mise à jour, si votre nœud Lightning utilise LND (le plus courant), il faut également re-générer les macaroon, des sortes de jetons de connexion entre les applications et le nœud Lightning. Voici la procédure complète.

Faite la mise à jour de BTCPay Server vers la version 2.4.2 (ou ultérieur), depuis l’interface admin (installation docker) ou depuis l’app store sur le OS de noeud Bitcoin type Umbrel, Start9 etc…

Ensuite stopper BTCPay et Lightning LND, souvent la commande est:

sudo systemctl stop btcpay
sudo systemctl stop lightning

Si les noms de services ne sont pas ceux-là, chercher les bons nom.
Sur Umbrel, Start9 et autre, il est possible d’arrêter les applications depuis l’interface web (click droit, stop sur Umbrel par example).

Il faut maintenant supprimer les macaroon qui aurait potentiellement pu être intercepté par un hacker avant le correctif.

Avant de les supprimer, vous pouvez en faire des copies pour les restaurer en cas de problème, à vous de voir. Si tout va bien vous pourrez supprimer les copies à la fin.

Sur une installation BTCP Pay Server via Docker:

sudo su -
docker cp btcpayserver_lnd_bitcoin:/data/data/chain/bitcoin/mainnet/admin.macaroon ~/admin.macaroon.backup
docker cp btcpayserver_lnd_bitcoin:/data/data/chain/bitcoin/mainnet/invoice.macaroon ~/invoice.macaroon.backup
docker cp btcpayserver_lnd_bitcoin:/data/data/chain/bitcoin/mainnet/invoices.macaroon ~/invoices.macaroon.backup
docker cp btcpayserver_lnd_bitcoin:/data/data/chain/bitcoin/mainnet/readonly.macaroon ~/readonly.macaroon.backup
docker cp btcpayserver_lnd_bitcoin:/data/data/chain/bitcoin/mainnet/chainnotifier.macaroon ~/chainnotifier.macaroon.backup
docker cp btcpayserver_lnd_bitcoin:/data/data/chain/bitcoin/mainnet/router.macaroon ~/router.macaroon.backup
docker cp btcpayserver_lnd_bitcoin:/data/data/chain/bitcoin/mainnet/signer.macaroon ~/signer.macaroon.backup
docker cp btcpayserver_lnd_bitcoin:/data/data/chain/bitcoin/mainnet/walletkit.macaroon ~/walletkit.macaroon.backup
docker cp btcpayserver_lnd_bitcoin:/data/data/chain/bitcoin/mainnet/macaroons.db ~/macaroon.db.backup

Puis les effacer et relancer:


docker exec btcpayserver_lnd_bitcoin rm -f /data/*.macaroon
docker exec btcpayserver_lnd_bitcoin rm -f /data/data/macaroons.db
docker exec btcpayserver_lnd_bitcoin rm -f /data/data/chain/bitcoin/mainnet/macaroons.db
docker exec btcpayserver_lnd_bitcoin rm -f /data/data/chain/bitcoin/mainnet/*.macaroon
docker restart btcpayserver_lnd_bitcoin

Sur Umbrel, là encore on peut faire des copies de sauvegarde au cas où (optionnel):

cp /home/umbrel/umbrel/app-data/lightning/data/lnd/data/chain/bitcoin/mainnet/admin.macaroon ~/admin.macaroon.backup
cp /home/umbrel/umbrel/app-data/lightning/data/lnd/data/chain/bitcoin/mainnet/invoice.macaroon ~/invoice.macaroon.backup
cp /home/umbrel/umbrel/app-data/lightning/data/lnd/data/chain/bitcoin/mainnet/invoices.macaroon ~/invoices.macaroon.backup
cp /home/umbrel/umbrel/app-data/lightning/data/lnd/data/chain/bitcoin/mainnet/readonly.macaroon ~/readonly.macaroon.backup
cp /home/umbrel/umbrel/app-data/lightning/data/lnd/data/chain/bitcoin/mainnet/chainnotifier.macaroon ~/chainnotifier.macaroon.backup
cp /home/umbrel/umbrel/app-data/lightning/data/lnd/data/chain/bitcoin/mainnet/router.macaroon ~/router.macaroon.backup
cp /home/umbrel/umbrel/app-data/lightning/data/lnd/data/chain/bitcoin/mainnet/signer.macaroon ~/signer.macaroon.backup
cp /home/umbrel/umbrel/app-data/lightning/data/lnd/data/chain/bitcoin/mainnet/walletkit.macaroon ~/walletkit.macaroon.backup
cp /home/umbrel/umbrel/app-data/lightning/data/lnd/data/chain/bitcoin/mainnet/macaroons.db ~/macaroon.db.backup

Et la suppression (obligatoire)

rm -f /home/umbrel/umbrel/app-data/lightning/data/lnd/data/chain/bitcoin/mainnet/macaroons.db
rm -f /home/umbrel/umbrel/app-data/lightning/data/lnd/data/chain/bitcoin/mainnet/*.macaroon

Redémarrer les app depuis l’interface web, click-droit, start Lightning, puis BTCPay.

Pour Start9 et d’autres type d’installation, il faudra adapter un peu les commandes et les chemins, mais l’idée reste la même.

Vérifiez maintenant que tout fonctionne, nœud Lightning (payer une facture vers un wallet externe pour voir, au hasard chatshat@bitcoincoin.ch si vous êtes généreux), puis tester BTCPay Server en générant et payant une facture depuis un wallet externe (genre Phoenix).

Si vous avez besoin de support, n’hésitez pas à nous contacter, nous reviendrons vers vous au plus vite.

par Chatsha

Auteur et formateur pour Génération Bitcoin, basé en Suisse romande mais actif globalement en ligne. N'hésitez pas à me contacter pour parler de votre projet ou poser vos questions sur Bitcoin et autres sujets liés.