Pages:
Author

Topic: the bs "Satoshi:0.8.99" (Read 6355 times)

legendary
Activity: 924
Merit: 1132
November 17, 2013, 02:14:38 PM
#41
Agreed.  The restriction should be effective on inbound and outbound connections alike.  And that is a fairly easy patch to write.

newbie
Activity: 38
Merit: 0
November 17, 2013, 06:02:32 AM
#40
If you are running a bitcoin listening node on Linux, this example iptables rule would help to limit the number of incoming connections coming from the same IPv4 subnet.

So the bitcoind built-in /16 restriction (https://github.com/bitcoin/bitcoin/blob/master/src/net.cpp#L1331) is not working?

That is outbound, there is no limit for inbound.   One IP address could theoretically fill all incoming listening slots of the entire world.  That is unless they used something like my iptables rule above.  Some of the devs indicated that they would welcome an option for this kind of behavior in bitcoind itself.

I would think being listed in the peer list (getpeerinfo) means the bitcoind has successfully exchanged packets/handshaked with its peers. Even if the restriction is outbound (outgoing packets), it still does not make sense for the multiple nodes from the same /16 to be able to establish connection with my bitcoind.
legendary
Activity: 2053
Merit: 1356
aka tonikt
November 17, 2013, 06:00:34 AM
#39
They don't act like the spying nodes from the OP, though - they do send invs, sometimes even very fresh ones.





source: https://blockchain.info/pools

It might be a miner's solution to speed up a propagation time of the blocks it mines.
sr. member
Activity: 263
Merit: 250
November 17, 2013, 02:07:12 AM
#38
If you are running a bitcoin listening node on Linux, this example iptables rule would help to limit the number of incoming connections coming from the same IPv4 subnet.

So the bitcoind built-in /16 restriction (https://github.com/bitcoin/bitcoin/blob/master/src/net.cpp#L1331) is not working?

That is outbound, there is no limit for inbound.   One IP address could theoretically fill all incoming listening slots of the entire world.  That is unless they used something like my iptables rule above.  Some of the devs indicated that they would welcome an option for this kind of behavior in bitcoind itself.
newbie
Activity: 38
Merit: 0
November 17, 2013, 02:02:57 AM
#37
If you are running a bitcoin listening node on Linux, this example iptables rule would help to limit the number of incoming connections coming from the same IPv4 subnet.

So the bitcoind built-in /16 restriction (https://github.com/bitcoin/bitcoin/blob/master/src/net.cpp#L1331) is not working?
legendary
Activity: 905
Merit: 1012
November 16, 2013, 08:31:50 PM
#36
This subnet is owned by a Swiss academic institution:

http://whois.domaintools.com/129.132.230.0

If anyone knows who this group is, can they please make them aware of the difficulties they are causing?
sr. member
Activity: 263
Merit: 250
November 16, 2013, 08:29:12 PM
#35
If you are running a bitcoin listening node on Linux, this example iptables rule would help to limit the number of incoming connections coming from the same IPv4 subnet.

Code:
# Reject TCP connection if quantity of connections per class C network is exceeded.
# "--connlimit-above 2" is default in this example.  The limit can be increased if
# your server has sufficient RAM to handle an increased bitcoin.conf maxconnections=
# parameter much higher than the default 150 simultaneous connections.
-A INPUT -p tcp --syn --dport 8333 -m connlimit --connlimit-above 2 --connlimit-mask 24 -j REJECT --reject-with tcp-reset
# Allow TCP connection if not rejected by the previous limit
-A INPUT -m state --state NEW -m tcp -p tcp --dport 8333 -j ACCEPT

# This TCP connection limit per source class C subnet is similar to a Slowloris
# HTTP DoS mitigation measure, except it is safe to have a very small limit.
# It is non-fatal for legitimate clients to fail to connect because there exist
# plenty of other legitimate nodes to choose from that offer the same service.
# It is more important to allow random, distributed clients to connect with a 90%
# success rate than it is to that ensure 100% of clients are able to connect.
newbie
Activity: 38
Merit: 0
November 16, 2013, 07:53:16 PM
#34
My bitcoind is configured to accept max. 32 connections, i.e. maxconnections=32 in bitcoin.conf. Now I am seeing this:

Code:
$ ./bitcoind getpeerinfo | grep BTC-ETHZ | wc -l
23
$ ./bitcoind getpeerinfo | grep 129.132.230 | wc -l
23
$ ./bitcoind getpeerinfo | grep 0.8.99 | wc -l
23

They took 70% of my connections. All from the same network with IP address 129.132.230.*. I thought bitcoind is hardcoded to accept only 1 peer per /16 network??
donator
Activity: 1218
Merit: 1079
Gerald Davis
November 11, 2013, 02:08:16 PM
#33
Jut curious but does bitcoind support IP blacklisting.  Yeah it probably can (and would be better done) at the firewall level but this topic just made me wonder if there is any config option in bitcoind.
legendary
Activity: 1512
Merit: 1036
November 11, 2013, 01:59:49 PM
#32
Looks like they're mostly hosted at your-server.de

Whoever is doing this, please set your subVer field appropriately. Otherwise it just makes you look like a DoS attacker ....
The same hosting IP space of bitcoincharts/bitcoinwatch...
legendary
Activity: 1386
Merit: 1009
November 08, 2013, 09:08:23 PM
#31
Did you guys also notice that there is an entire subnet 129.132.230.0/24 doing quite a similar stuff...?
By the way, they are considered "hub nodes" by blockchain.info
https://blockchain.info/hub-nodes

Their subver is somewhat different
Code:
{
"addr" : "129.132.230.69:41037",
"services" : "00000001",
"lastsend" : 1383962848,
"lastrecv" : 1383962839,
"bytessent" : 110486,
"bytesrecv" : 74817,
"conntime" : 1383962013,
"version" : 70001,
"subver" : "/BTC-ETHZ:0.8.99/",
"inbound" : true,
"startingheight" : 268607,
"banscore" : 0,
"syncnode" : true
},

What does it have to do with ETH Zurich?

It's interesting because ETHZ had quite a few publications about bitcoin.
legendary
Activity: 2053
Merit: 1356
aka tonikt
October 30, 2013, 12:07:24 PM
#30
Did you guys also notice that there is an entire subnet 129.132.230.0/24 doing quite a similar stuff...?
legendary
Activity: 2053
Merit: 1356
aka tonikt
October 29, 2013, 12:32:02 PM
#29
You're right @Cryddit - it's a good solution to broadcast your own txs slowly, like each new second you send it to another peer... there is no rush with it anyway.

But I think they might also be spying for mining nodes - and a mining node wants to propagate new blocks as quickly as possible.
So that's a tough problem to solve.

What I do in my client now, I never broadcast locally created txs to nodes that have not sent me any inv.
But when they find out what I do, its easy to circumvent - all they need to do is send me an inv once for awhile.
legendary
Activity: 924
Merit: 1132
October 29, 2013, 12:27:49 PM
#28
Suggestions on how to do this that won't turn into a game of whack-a-mole?

I think that these nodes are listening to see where transactions originate.  As long as, by listening, they can see where transactions originate, they will continue to listen. The only way to get rid of them is to deprive them of the ability to obtain the information they seek.  They are worth getting rid of because they fail to follow protocol in propagation of tx and block information.  If this defection from protocol becomes widespread it constitutes a DoS attack, wherein nodes are cut off from the network by having their connections clogged with these useless fake clients. 

Obtaining the information they seek relies on the fact that the current client propagates transactions to all connected nodes, including them.   

The only way to get rid of them, therefore, is to quit doing that.  Instead, propagate a new transaction to one, two, or three nodes, regardless of how many are connected.  Propagate a received transaction to nine or ten nodes, regardless of how many are connected. 

That will make it very difficult for these eavesdroppers to tell where new transactions originate.  And hopefully it will deprive their owners of the motivation to continue to keep up this attack.

zvs
legendary
Activity: 1680
Merit: 1000
https://web.archive.org/web/*/nogleg.com
October 28, 2013, 06:59:00 PM
#27
oh, re: the stuff I said earlier

Code:
2013-10-28 23:47:36 received block 000000000000000177422a58c0204921623eaff044b88d8a0dc4eeeb1e133cfa
2013-10-28 23:47:36 Committing 6844 changed transactions to coin database...
2013-10-28 23:47:36 SetBestChain: new best=000000000000000177422a58c0204921623eaff044b88d8a0dc4eeeb1e133cfa  height=266620  log2_work=73.28903  tx=26163172  date=2013-10-28 23:47:57 progress=1.000002
2013-10-28 23:47:36 ProcessBlock: ACCEPTED
2013-10-28 23:47:36 getblocks -1 to 0000000000000000000000000000000000000000000000000000000000000000 limit 500
2013-10-28 23:47:36 getblocks 266619 to 000000000000000177422a58c0204921623eaff044b88d8a0dc4eeeb1e133cfa limit 500
2013-10-28 23:47:36 getblocks 266619 to 000000000000000177422a58c0204921623eaff044b88d8a0dc4eeeb1e133cfa limit 500
2013-10-28 23:47:37 getblocks 266619 to 000000000000000177422a58c0204921623eaff044b88d8a0dc4eeeb1e133cfa limit 500
2013-10-28 23:47:37 getblocks 266619 to 000000000000000177422a58c0204921623eaff044b88d8a0dc4eeeb1e133cfa limit 500
2013-10-28 23:47:37 getblocks 266619 to 000000000000000177422a58c0204921623eaff044b88d8a0dc4eeeb1e133cfa limit 500
2013-10-28 23:47:37 getblocks 266619 to 000000000000000177422a58c0204921623eaff044b88d8a0dc4eeeb1e133cfa limit 500
2013-10-28 23:47:37 getblocks 266619 to 000000000000000177422a58c0204921623eaff044b88d8a0dc4eeeb1e133cfa limit 500
2013-10-28 23:47:37 getblocks 266619 to 000000000000000177422a58c0204921623eaff044b88d8a0dc4eeeb1e133cfa limit 500
2013-10-28 23:47:37 getblocks 266619 to 000000000000000177422a58c0204921623eaff044b88d8a0dc4eeeb1e133cfa limit 500
2013-10-28 23:47:37 getblocks 266619 to 000000000000000177422a58c0204921623eaff044b88d8a0dc4eeeb1e133cfa limit 500
2013-10-28 23:47:37 getblocks 266618 to 000000000000000177422a58c0204921623eaff044b88d8a0dc4eeeb1e133cfa limit 500
2013-10-28 23:47:37 getblocks 266619 to 000000000000000177422a58c0204921623eaff044b88d8a0dc4eeeb1e133cfa limit 500
2013-10-28 23:47:37 getblocks 266619 to 000000000000000177422a58c0204921623eaff044b88d8a0dc4eeeb1e133cfa limit 500
2013-10-28 23:47:37 getblocks 266618 to 000000000000000177422a58c0204921623eaff044b88d8a0dc4eeeb1e133cfa limit 500
2013-10-28 23:47:37 getblocks 266619 to 000000000000000177422a58c0204921623eaff044b88d8a0dc4eeeb1e133cfa limit 500
2013-10-28 23:47:37 getblocks 266619 to 000000000000000177422a58c0204921623eaff044b88d8a0dc4eeeb1e133cfa limit 500
2013-10-28 23:47:37 getblocks 266619 to 000000000000000177422a58c0204921623eaff044b88d8a0dc4eeeb1e133cfa limit 500
2013-10-28 23:47:37 getblocks 266619 to 000000000000000177422a58c0204921623eaff044b88d8a0dc4eeeb1e133cfa limit 500
2013-10-28 23:47:37 getblocks 266619 to 000000000000000177422a58c0204921623eaff044b88d8a0dc4eeeb1e133cfa limit 500
2013-10-28 23:47:37 getblocks 266619 to 000000000000000177422a58c0204921623eaff044b88d8a0dc4eeeb1e133cfa limit 500
2013-10-28 23:47:37 getblocks 266619 to 000000000000000177422a58c0204921623eaff044b88d8a0dc4eeeb1e133cfa limit 500
2013-10-28 23:47:37 getblocks 266619 to 000000000000000177422a58c0204921623eaff044b88d8a0dc4eeeb1e133cfa limit 500
2013-10-28 23:47:37 getblocks 266619 to 000000000000000177422a58c0204921623eaff044b88d8a0dc4eeeb1e133cfa limit 500
2013-10-28 23:47:37 getblocks 266619 to 000000000000000177422a58c0204921623eaff044b88d8a0dc4eeeb1e133cfa limit 500
2013-10-28 23:47:37 getblocks 266619 to 000000000000000177422a58c0204921623eaff044b88d8a0dc4eeeb1e133cfa limit 500
2013-10-28 23:47:37 getblocks 266619 to 000000000000000177422a58c0204921623eaff044b88d8a0dc4eeeb1e133cfa limit 500
2013-10-28 23:47:37 getblocks 266619 to 000000000000000177422a58c0204921623eaff044b88d8a0dc4eeeb1e133cfa limit 500
2013-10-28 23:47:37 getblocks 266618 to 00000000000000095f2b79ac211d800ca268f58d2429b049d2fd64e68ba8db3c limit 500
2013-10-28 23:47:37 getblocks 266619 to 000000000000000177422a58c0204921623eaff044b88d8a0dc4eeeb1e133cfa limit 500
2013-10-28 23:47:37 getblocks 266619 to 000000000000000177422a58c0204921623eaff044b88d8a0dc4eeeb1e133cfa limit 500
2013-10-28 23:47:37 getblocks 266619 to 000000000000000177422a58c0204921623eaff044b88d8a0dc4eeeb1e133cfa limit 500
2013-10-28 23:47:37 getblocks 266619 to 000000000000000177422a58c0204921623eaff044b88d8a0dc4eeeb1e133cfa limit 500
2013-10-28 23:47:37 getblocks 266619 to 000000000000000177422a58c0204921623eaff044b88d8a0dc4eeeb1e133cfa limit 500
2013-10-28 23:47:37 getblocks 266619 to 000000000000000177422a58c0204921623eaff044b88d8a0dc4eeeb1e133cfa limit 500
2013-10-28 23:47:37 getblocks 266619 to 000000000000000177422a58c0204921623eaff044b88d8a0dc4eeeb1e133cfa limit 500
2013-10-28 23:47:37 getblocks 266619 to 000000000000000177422a58c0204921623eaff044b88d8a0dc4eeeb1e133cfa limit 500
2013-10-28 23:47:37 getblocks 266619 to 000000000000000177422a58c0204921623eaff044b88d8a0dc4eeeb1e133cfa limit 500
2013-10-28 23:47:37 getblocks 266619 to 000000000000000177422a58c0204921623eaff044b88d8a0dc4eeeb1e133cfa limit 500
2013-10-28 23:47:37 getblocks 266619 to 000000000000000177422a58c0204921623eaff044b88d8a0dc4eeeb1e133cfa limit 500
2013-10-28 23:47:37 getblocks 266619 to 000000000000000177422a58c0204921623eaff044b88d8a0dc4eeeb1e133cfa limit 500
2013-10-28 23:47:38 getblocks 266619 to 000000000000000177422a58c0204921623eaff044b88d8a0dc4eeeb1e133cfa limit 500
2013-10-28 23:47:38 getblocks 266619 to 000000000000000177422a58c0204921623eaff044b88d8a0dc4eeeb1e133cfa limit 500
2013-10-28 23:47:38 getblocks 266619 to 000000000000000177422a58c0204921623eaff044b88d8a0dc4eeeb1e133cfa limit 500
2013-10-28 23:47:39 getblocks 266619 to 000000000000000177422a58c0204921623eaff044b88d8a0dc4eeeb1e133cfa limit 500

another nice example, when one checks block 266619

normally you'd just get some getblocks -1 to 0000000000000000000000000000000000000000000000000000000000000000 in there, not all the requests for block 266619 and 266620 (and in some cases 266618, 266619, and 266620)

needs changing on handling of block requests i would think
kjj
legendary
Activity: 1302
Merit: 1026
October 28, 2013, 02:48:30 PM
#26
Uh. NTP is pretty much completely insecure in practice. And if you have free control of time you can inflate bitcoin randomly.  At the same time, nodes don't really need precise time.

There is insecure, and then there is insecure.  Are there any real world attacks that don't require the attacker to be in a position where they could do much worse?

Also, note that the time data used by the bitcoin network is also totally unauthenticated and insecure.  Our pseudoclock is adjusted based on the version message timestamp, which is trivial to modify.  We even potentially reject blocks (which contain a somewhat secure timestamp) based partially on data collected from the totally insecure timestamps reported in the unauthenticated version messages.

Hell, for all we know, the bogus timestamps from these nodes are a real world attack test.

I know that bitcoin doesn't need an accurate clock, but every node on the network has an accurate clock available anyway.
legendary
Activity: 1120
Merit: 1152
October 28, 2013, 02:39:48 PM
#25
No one should be doing serious work on the internet without a solid clock, and money is about as serious as serious gets.

Bitcoin can handle a clock that's off by roughly an hour off just fine. Clock accuracy just isn't a big deal.

We were smart enough to avoid creating our own PKI in favor of the existing system that is good enough.  Why aren't we smart enough to avoid creating our own clock synchronization system?

We didn't create a clock synchronization system, we created a peer averaging system. Think correctness vs. consensus.

Also, if the PKI in the payment protocol is attacked, all that happens is some users lose their money. If there is a wide-spread NTP attack, especially affecting miners, the whole system can collapse.
staff
Activity: 4284
Merit: 8808
October 28, 2013, 02:13:05 PM
#24
Uh. NTP is pretty much completely insecure in practice. And if you have free control of time you can inflate bitcoin randomly.  At the same time, nodes don't really need precise time.
kjj
legendary
Activity: 1302
Merit: 1026
October 28, 2013, 02:05:25 PM
#23
FWIW, these are also the same nodes which have been triggering the incorrect time warnings.

We should have fixed the time nonsense in bitcoin long ago.

Despite the imperfections of NTP, there is no excuse for a p2p network (which runs on the same internet as NTP) to fudge the clock.  If I have a good NTP lock, and I connect to a node with a different time, that node is wrong and should be kicked immediately.  If I don't have a good NTP lock and I connect to a node which does, that node should kick me.

I don't know that making whatever this is fix their clocks will cure anything, but it can't hurt, and we should have done it long ago.

Emphasis on if

Unfortunately we can't just ship bitcoind out of the box with NTP support, because then whatever NTP servers we use - even if we use a whole bunch - suddenly become a central point of control of the whole Bitcoin network. This is made even worse by how NTP isn't authenticated.

Maybe we could get away with abusing https and timestamping servers based on the logic they won't want to be proven to be lying, especially the latter, but ultimately we really just want users to set their damn clocks right.

It's ugly and there's no good solution to the problem unfortunately. Satoshi should have picked something more like a six or twelve hour window, rather than two, but widening that window now is a hard-fork even to SPV clients.

Why would we need to include NTP?  Is there some OS out there with network support that can run a bitcoin node, but not NTP?

No one should be doing serious work on the internet without a solid clock, and money is about as serious as serious gets.

After a while, this really degenerates into the SSL debate.  SSL sucks.  Why does everyone use it?  Because everything else is worse.  NTP sucks.  Why does everyone use it?  Because everything else (including bitcoind's crappy pseudo-NTP) is worse.

We were smart enough to avoid creating our own PKI in favor of the existing system that is good enough.  Why aren't we smart enough to avoid creating our own clock synchronization system?

P.S.  pool.ntp.org.  The Air Force could probably mess with it if they were willing to crash some planes, but I doubt that anyone else could do much damage.  I know we have some timekeeping enthusiasts around.  Is the NTP pool more vulnerable than I'm aware of?

Edit 2013-10-28 19:32: removed an extra "a"
legendary
Activity: 1120
Merit: 1152
October 28, 2013, 01:21:15 PM
#22
FWIW, these are also the same nodes which have been triggering the incorrect time warnings.

We should have fixed the time nonsense in bitcoin long ago.

Despite the imperfections of NTP, there is no excuse for a p2p network (which runs on the same internet as NTP) to fudge the clock.  If I have a good NTP lock, and I connect to a node with a different time, that node is wrong and should be kicked immediately.  If I don't have a good NTP lock and I connect to a node which does, that node should kick me.

I don't know that making whatever this is fix their clocks will cure anything, but it can't hurt, and we should have done it long ago.

Emphasis on if

Unfortunately we can't just ship bitcoind out of the box with NTP support, because then whatever NTP servers we use - even if we use a whole bunch - suddenly become a central point of control of the whole Bitcoin network. This is made even worse by how NTP isn't authenticated.

Maybe we could get away with abusing https and timestamping servers based on the logic they won't want to be proven to be lying, especially the latter, but ultimately we really just want users to set their damn clocks right.

It's ugly and there's no good solution to the problem unfortunately. Satoshi should have picked something more like a six or twelve hour window, rather than two, but widening that window now is a hard-fork even to SPV clients.
Pages:
Jump to: