Hacker News new | ask | show | jobs
by nullc 1296 days ago
Having not followed the projects' security process, presumably this is something the author didn't think was a serious issue themselves.

This doesn't appear to be new or interesting: If you exhaust a hosts incoming sockets it temporarily can't accept new connections.

Bitcoin itself already prioritizes existing and "good" connections to a substantial extent. Networks and IPs with multiple existing connections are prioritized for disconnection to handle new connections[1]. The result is that most existing connections are undisturbed, which makes it fairly ineffectual as an attack-- unless someone has broken something in the last couple years since I worked on it. A few years ago there were some periodic waves of people attempting attacks like this that went completely unnoticed in public due to their lack of meaningful effect.

It's annoying that new connections can be frustrated while an attack is ongoing, but since bitcoin connections are extremely long lived it doesn't have much of an impact, which is the security property the software is intended to uphold. The comment about 'finalization' suggests the author of the post isn't particularly familiar with how bitcoin works.

And at least if the attack is at a high enough rate, since the exhaustion will happen at the kernel before it gets to the bitcoin software, there isn't much for the bitcoin software to do. The host can implement firewall rules to mitigate, though even that can only work to the extent that the attack hasn't just effectively become volumetric.

It might be reasonable for the bitcoin authors to recommend some standard iptables rules that people should deploy as a best practice to protect their kernel's TCP stack (and avoid the issue that people will screw them up when coming up with their own).

[1] https://github.com/bitcoin/bitcoin/blob/master/src/node/evic...

1 comments

i considered this and needed clarification. i didn't know whether the p2p connections remained open or made frequent disconnect/reconnects. what happens to sync'd nodes with active peers is yet to be seen. it's too early, at least for me, to know whether peers would drop a node under attack over timeouts, how bitcoind behaves with peers while tcp/8333 is experiencing stress, etc.
A large portion of a nodes connections live as long as possible given the uptime of the connected nodes. Care is taken it protect long working connections to provide as strong a protection against new and short lived attacks as possible-- a working network should stay working. A sustained attack can frustrate newly connecting/restarting hosts when the recipient is publicly reachable and known to the attacker, but I think that's essentially insoluble (if nothing else, a volumetric attack would guarantee it).

If you're going to be making announcements and whatever, you probably should have taken the time to characterize your observations completely! The failure to do so makes it kinda just look like more lamesauce attempts at market manipulation (not to lob an accusation, it's just what it looks like -- there is a long history of that kind of activity).

> it's too early, at least for me, to know whether peers would drop a node under attack over timeouts,

Do your homework! You're not the first person who ever thought of attacking a bitcoin node. While I'm sure there are areas for improvement, you're not likely to be able to make useful suggestions from a position of almost total ignorance.

>Do your homework! You're not the first person who ever thought of attacking a bitcoin node. While I'm sure there are areas for improvement, you're not likely to be able to make useful suggestions from a position of almost total ignorance.

again, i've successfully found remote crashes and dos issues in 25 - 30 blockchains. i don't care if you're a biased developer who takes this to heart. i'm going to see to brutalizing bitcoind and making it clear to you what happens when i attack nodes. cocky academics like you motivate me. he who laughs last etc.

Fantastic, I'm sure the bitcoin developers will appreciate the free labor. But if you care you have any reputation as anything but a hotheaded fool-- you should probably tone the public announcements down until you've actually completed your work! Otherwise, even when you do carry work though until you find something interesting (and I'm sure you would if you work at it long enough)-- you'll still have earned a poor reputation regardless.
i don't guard my reputation. this isn't 48 laws of power. i'd never become a blockchain socialite to the extent of social climbing to become blockstream's cto. i answer to no one and don't try to mold how others perceive me. interesting insults though - though i can assure you wholeheartedly that you don't want to make it personal. just so you know where you stand, who i am and who pulls rank on who. i rce'd slack too. bitcoin is food now. there is a dos here regardless - but thanks for the motivation
Haha. Typical digitalgangster/aoler/irc kiddie behavior. You are no one. You have no power. Your obsession with vanity handles shows who you are and what you're about. Making an announcement on a non-bug when you don't know about slowloris style attacks or how a one-liner derails your entire existence is just sad.

This is a great opportunity to get your ego in check. If you're really interested in security, follow the right path. No one here is impressed that you RCE'd slack (likely using someone else's research, and exploit dev nonetheless). No one is impressed with your Twitter or livejournal handle. And btw fuck anti and rj2 and the rest of those spam/scammers.

You probably smell bad. Dork.

There are many tools that will help you answer things like this i.e. Wireshark.