pull down to refresh

There's now a pull request from Roasbeef:

build: update to version of btcd with wire parsing bug fix #7004 https://github.com/lightningnetwork/lnd/pull/7004

reply

UPDATE

📢 lnd v0.15.2 hotfix has just been released — update ASAP #79472 https://github.com/lightningnetwork/lnd/releases/tag/v0.15.2-beta

reply

At first glance it sounds serious but it seems to be a bug in btcd and not a taproot bug

This is likely the transaction that caused problems for the nodes https://mempool.space/tx/7393096d97bfee8660f4100ffd61874d62f9a65de9fb6acf740c4c386990ef73

Its a 998-of-999 tapscript multisig https://twitter.com/brqgoo/status/1579216353780957185

reply

Correct, it's not a bug in taproot, it's a bug in LND. CLN is unaffected https://twitter.com/Core_LN/status/1579258808161153025

reply

It only effects lnd nodes using btcd (a golang implementation) not bitcoin-core afaict. The changeset was confirmed to fix the problem and is available on master.

reply

My node running LND with a Bitcoin core backend was affected. Upgrading to current release fixed the issue.

reply

No, it affects lnd nodes that uses bitcoind backend as well. The bug is in the transaction parser.

reply

looks like you can check your node with the "lncli getinfo" command line

reply

My node is effected and I'm using bitcoin-core, so this isn't isolated to btcd as the ticket alludes.

After uninstalling the default raspian verison of go, and manually installing go 1.18 as per lnd compile instructions, then compiling and installing LND v0.15.2-beta branch, my node is back up and running.

I'm afraid this procedure isn't for the passive noderunner and the lightning network is going to be crippled until a new lnd package is released.

reply

That's unfortunate, and yes, this is no walk in the park...

view on twitter.com
reply

If you are seeing this now - Update lnd version to v0.15.2-beta immediately. Not doing so, will make your lnd node stuck in "syncing to blockhain" mode forever.

Lnd Release 0.15.2 - https://github.com/lightningnetwork/lnd/releases/tag/v0.15.2-beta

reply

I was wondering why everything stopped working for me.

reply

Maybe there is a good lesson here. If running an LND node, use a CLN watchtower (and vice versa).

reply

This problem is actually caused by a missing specification in BIP144 to put some kind of a reasonable limit on the size of transaction witness data.

By my estimation, with a ~$600 fee, and a 127999 of 128000 a person can delay all transaction processing by one block.

This could be used in addition to a DoS attack on a channel counterpart to perform a sniper attack on a channel in the last hour of its HTLC timeout. It would start to become economic somewhere around channel size of 0.5 BTC.

reply
Interesting approach to this attack vector.  We are in the 
Lightning Network´s infancy, we take advantage of the 
same network that has allowed Visa and Mastercard 
to monopolize payments and thus we are subject to 
some attacks as well.

We should be keeping an eye and testing as much 
as possible.
reply

The only thing to be done about it at this point is simply use small channels that can't be economically attacked. Putting a really big fee on the closure transaction would also possibly give a strong chance of displacing the giant tx.

I'm sure some kind of countermeasure will be devised in the future but for now best to just keep channels small like no bigger than 0.5btc maybe, if you aren't very sure about your counterparty, 0.1. In any case, more links are better so 10 0.1btc channels is probably better for the network than 2 at 0.5.

reply

Another reason I run CLN... Too many RPis nodes with LND, run by noobs. I stopped running LND few time ago. I use it only for testing stuff when is needed but not on my long run private node.

reply

The "bug" was a reasonable DoS and processing bounds measure just not in the spec for the majority of bitcoin nodes operating. Roasbeef put it in there when Segwit was rolled out. 5 years passed until someone blew it up.

reply

Also, to be clear, you can run LND with bitcoind instead of btcd.

reply

it'd be tested out before releasing, software engineering

reply

Fix is in: #79472

reply

for anyone using umbel you can fix it by doing the following

ssh into your machine

sudo ./umbrel/scripts/repo set https://github.com/MaxKotlan/umbrel-apps

sudo ./umbrel/scripts/repo update

then go to the umbrel app store and update lnd

this fix hasn't been merged in yet, but once an official umbrel update is created you can

sudo ./umbrel/scripts/repo default-repo

to set it back to the official repo.

Submitted this change as a pull request to umbrel https://github.com/getumbrel/umbrel-apps/pull/190

reply

I'm assuming I can't just pull this on an Umbrel running on 0.4.X, right?

Do you perphaps have a guide around to migrate to 0.5.X if that is necessary?

reply

Yeah this won't work for that. You'll have to update to 0.5.X or manually fix it.

For umbrel 0.4.x you'll have to edit the ./umbrel/docker-compose.yml file manually.

In that file you'll see a list of services.

If you scroll down to the lnd section

    ...
                networks:
                    default:
                        ipv4_address: $BITCOIN_IP
        lnd:
                container_name: lnd
                image: lightninglabs/lnd:v0.14.1-beta@sha256:810f290f4da51adaf57d53bc1f1e65b52b03c543f322da0b98fb8c47be94a27a
                user: 1000:1000
                depends_on: [ tor_proxy, manager ]
                volumes:
                        - ${PWD}/lnd:/data/.lnd
                environment:
                  HOME: /data
                restart: on-failure
                stop_grace_period: 5m30s
                ports:
                    - "9735"
                    - "$LND_REST_PORT:$LND_REST_PORT"
                    - "$LND_GRPC_PORT:$LND_GRPC_PORT"
                networks:
                    default:
                        ipv4_address: $LND_IP
        dashboard:
                container_name: dashboard
...

you should be able to manually edit the container (on line 7 here) to

lightninglabs/lnd:v0.15.2-beta@sha256:a011b06c622c947a3039d76a5a08b4896fc6a02dea6add3afd345019f8737923

and then restart the node, or run

sudo ./umbrel/script/start

to just apply the update

reply

Thank you so much!!! I don’t want to upgrade my umbrel to 0.5.X will try this manual update for my node

reply

it worked!! Node went down this morning did this fix after restarting and about 10 mins wait all my peers and channels came back. For your assistance I tipped 5k sats.

reply

Wow thank you so much! Really appreciate it. Happy your node is fixed.

reply

Curious with LND going to 15.3 how do I find the image file on the GitHub to manually update my node? One of my channels is not working and my node isn’t routing any payments anymore.

reply

Thanks a lot. This is exactly what I did a few hours ago and it worked fine. No further steps were needed.

reply

Awesome! Glad to hear the fix worked

reply

As or upgrading to 0.5.X, you should be able to go to the settings menu and click the update button if you are on 0.4.18. https://github.com/getumbrel/umbrel/issues/1422

If not, then I'm not then in all honesty not sure what the procedure is. It might let you update to 0.4.18 and then after 0.5.X.

If not, you may need to manually apply the fix or reinstall 0.5.X.

reply

Update: the PR has been merged. These steps should not be needed. You should be able to update from the umbrel app store.

If you don't see it try

sudo ./umbrel/scripts/repo update

reply