Sybil Attack Tool overreacts and hallucinates that attacks are happening #15
Open
opened 2025-04-21 14:58:00 -04:00 by idk
·
2 comments
No Branch/Tag Specified
master
i2p-2.9.0
i2p-2.8.2-10-rc
i2p-2.8.2-9-rc
i2p-2.8.2-8
i2p-2.8.2-7
i2p-2.8.2-6
i2p-2.8.2-5
i2p-2.8.2-4
i2p-2.8.2-3
i2p-2.8.2-2
i2p-2.8.2-1
i2p-2.8.2
i2p-2.8.1-2-rc
2.8.1-2-rc
i2p-2.8.1-1-rc
i2p-release-2.8.1
i2p-2.8.0-8-rc
i2p-2.8.0-7-rc
i2p-2.8.0-6-rc
i2p-2.8.0-5
i2p-2.8.0-4
i2p-2.8.0-3
i2p-2.8.0-2
i2p-windows-2.8.0
i2p-2.8.0-1
i2p-2.8.1
i2p-2.8.0
i2p-2.7.0-9-rc
i2p-2.7.0-8-rc
i2p-2.7.0-7-rc
i2p-2.7.0-6-rc
i2p-2.7.0-5-rc
i2p-2.7.0-4
i2p-2.7.0-3
i2p-2.7.0-2
i2p-2.7.0-1
i2p-2.7.0
i2p-2.6.1-4-rc
i2p-2.6.1-3
i2p-2.6.1-2
i2p-2.6.1-1
i2p-2.6.1
i2p-2.6.0-2-rc
i2p-2.6.0-1
i2p-2.6.1-cssfix
i2p-2.6.0
i2p-2.5.2-8-rc
i2p-2.5.2-7-rc
i2p-2.5.2-6
i2p-2.5.2-0
i2p-2.5.2-5
i2p-2.5.2-4
i2p-2.5.2-3
i2p-2.5.2-2
i2p-2.5.2-1
i2p-2.5.2
i2p-2.5.1-2-rc
i2p-2.5.1-1
i2p-2.5.1
i2p-2.5.1-0
i2p-2.5.0-4
i2p-2.5.0-3
i2p-2.5.0-2
i2p-2.5.0-1
i2p-2.5.0
i2p-2.5.0-0
i2p-2.4.0-10rc
i2p-2.4.0-4
i2p-2.4.03
i2p-2.4.0
i2p-2.3.0-14--rc
i2p-2.3.0--rc
i2p-2.3.0-14-rc
i2p-2.3.0-13
i2p-2.3.0-12
i2p-2.3.0
i2p-2.2.1
i2p-maven-2.2.0
i2p-2.2.0
i2p-2.1.0
i2p-2.0.0
i2p-jpackage-1.9.4
i2p-jpackage-1.9.1
i2p-android-1.9.0
i2p-1.9.0
i2p-android-1.8.2
i2p-android-1.8.1
i2p-1.8.0
i2p-jpackage-1.7.1
i2p-1.7.0
i2p-jpackage-1.6.1
i2p-1.6.1
i2p-1.6.0
i2p-jpackage-1.5.1
i2p-1.5.0
i2p-0.9.50
i2p-0.9.49
i2p-0.9.48
i2p-0.9.47
i2p-0.9.46
i2p-0.9.45
i2p-0.9.44
i2p-0.9.43
i2p-0.9.42
i2p-0.9.41
i2p-0.9.40
i2p-0.9.39
i2p-0.9.38
i2p-0.9.37
i2p-0.9.36
i2p-0.9.35
i2p-0.9.34
i2p-0.9.33
i2p-0.9.32
i2p-0.9.31
i2p-0.9.30
i2p-0.9.29-win1
i2p-0.9.29
i2p-0.9.28
i2p-0.9.27
i2p-0.9.26
i2p-0.9.25
i2p-0.9.24
i2p-0.9.23
i2p-0.9.22
i2p-0.9.21
i2p-0.9.20
i2p-0.9.19
i2p-0.9.18
i2p-0.9.17
i2p-0.9.16
i2p-0.9.15
i2p-0.9.14.1
i2p-0.9.14
i2p-0.9.13
i2p-0.9.12
i2p-0.9.11
i2p-0.9.10
i2p-0.9.9
i2p-0.9.8.1
i2p-0.9.8
i2p-0.9.7.1
i2p-0.9.7
i2p-0.9.6
i2p-0.9.5-win1
i2p-0.9.5
i2p-0.9.4
i2p-0.9.3
i2p-0.9.2
i2p-0.9.1
i2p-0.9
i2p-0.8.13
i2p-0.8.12
i2p-0.8.11
i2p-0.8.10
i2p-0.8.9
i2p-0.8.8
i2p-0.8.7
i2p-0.8.6
i2p-0.8.5
i2p-0.8.4
i2p-0.8.3
i2p-0.8.2
i2p-0.8.1
i2p-0.8
i2p-0.7.14
i2p-0.7.13
i2p-0.7.12
i2p-0.7.11
i2p-0.7.10
i2p-0.7.9
i2p-0.7.8
i2p-0.7.7
i2p-0.7.6
i2p-0.7.5
i2p-0.7.4
i2p-0.7.3
i2p-0.7.2
i2p-0.7.1
i2p-0.7
i2p-0.6.5
i2p-0.6.4
i2p-0.6.3
i2p-0.6.2
i2p-0.6.1.33
i2p-0.6.1.32
i2p-0.6.1.31
0.6.1.30-20
0.6.1.30-20-cvs-suck-import
i2p_0_6_1_30
i2p_0_6_1_29
i2p_0_6_1_28
i2p_0_6_1_27
i2p_0_6_1_26
i2p_0_6_1_25
i2p_0_6_1_24
i2p_0_6_1_23
i2p_0_6_1_22
i2p_0_6_1_21
i2p_0_6_1_20
i2p_0_6_1_19
i2p_0_6_1_18
i2p_0_6_1_17
i2p_0_6_1_16
i2p_0_6_1_15
i2p_0_6_1_14
i2p_0_6_1_13
i2p_0_6_1_12
i2p_0_6_1_11
i2p_0_6_1_10
i2p_0_6_1_9
i2p_0_6_1_8
i2p_0_6_1_7
i2p_0_6_1_6
i2p_0_6_1_5
i2p_0_6_1_4
i2p_0_6_1_3
i2p_0_6_1_2
i2p_0_6_1_1
i2p_0_6_1
i2p_0_6_0_6
i2p_0_6_0_5
i2p_0_6_0_4
i2p_0_6_0_3
i2p_0_6_0_2
i2p_0_6_0_1
i2p_0_6
i2p_0_5_0_7
i2p_0_5_0_6
i2p_0_5_0_5
i2p_0_5_0_4
i2p_0_5_0_3
i2p_0_5_0_2
i2p_0_5_0_1
i2p_0_5
i2p_0_5_post_merge
i2p_0_4_2_6
i2p_0_4_2_5
i2p_0_4_2_4
i2p_0_4_2_3
i2p_0_4_2_2
i2p_0_4_2_1
i2p_0_4_2
i2p_0_4_1_4
i2p_0_4_1_3
i2p_0_4_1_2
i2p_0_4_1_1
i2p_0_4_1
i2p_0_4_0_1
i2p_0_4
i2p_0_3_4_3
i2p_0_3_4_2
i2p_0_3_4_1
i2p_0_3_4
i2p_0_3_3
i2p_0_3_2_3
i2p_0_3_2_2
i2p_0_3_2_1
i2p_0_3_2
i2p_0_3_1_5
i2p_0_3_1_4
i2p_0_3_1_3
i2p_0_3_1_2
i2p_0_3_1_1
i2p_0_3_1
i2p_0_3_0_4
i2p_post_great_renaming
i2p_0_3_0_3
Labels
Clear labels
#1026
#1031
#1033
#1036
#1040
#1049
#1051
#1065
#1067
#1076
#1105
#1112
#1139
#1166
#1170
#1172
#1176
#1200
#1222
#1223
#1259
#1263
#1274
#1289
#1302
#1304
#1306
#1308
#1320
#1337
#1338
#1372
#1381
#1384
#1393
#1399
#1410
#1415
#1418
#1438
#1453
#1460
#1479
#1491
#1499
#1519
#1522
#1560
#1564
#1584
#1609
#1613
#1637
#1655
#1657
#1684
#1685
#1689
#1694
#1697
#1716
#1724
#1740
#1742
#1753
#1758
#1766
#1767
#1775
#1802
#1805
#1834
#1837
#1838
#1847
#1848
#1869
#1877
#1893
#1907
#1911
#1915
#1928
#1938
#1951
#1979
#1981
#1982
#1985
#1990
#1999
#2018
#2023
#2024
#2035
#2039
#2056
#2080
#2081
#2083
#2085
#2086
#2088
#2090
#2099
#2100
#2101
#2102
#2106
#2110
#2112
#2114
#2121
#2142
#2145
#2146
#2147
#2149
#2158
#2160
#2162
#2169
#2173
#2177
#2182
#2193
#2212
#2221
#2230
#2231
#2233
#2238
#2240
#2241
#2244
#2251
#2252
#2255
#2257
#2259
#2261
#2263
#2264
#2265
#2269
#2271
#2274
#2275
#2278
#2281
#2297
#23
#2302
#2303
#2304
#2305
#2306
#2309
#2319
#2323
#2324
#2325
#2336
#2337
#2340
#2341
#2346
#2350
#2363
#2371
#2374
#2375
#2376
#2381
#2386
#2393
#2396
#2402
#2411
#2420
#2421
#2426
#2428
#2429
#2431
#2433
#2434
#2446
#2459
#2467
#2472
#2475
#2496
#2497
#2506
#2509
#2512
#2540
#2562
#2572
#2608
#2609
#2613
#2619
#2620
#2625
#2640
#2641
#2642
#2643
#2646
#2647
#2650
#2653
#2655
#2656
#2658
#2660
#2664
#2670
#2672
#2675
#2680
#2681
#2682
#2689
#2690
#2691
#2695
#2700
#2701
#2703
#2704
#2705
#2707
#2711
#2721
#2729
#2730
#2733
#2734
#2735
#2736
#2737
#2738
#2750
#2751
#2754
#2763
#2764
#2766
#2771
#2772
#2773
#2774
#2775
#2780
#2782
#2792
#2793
#2795
#2796
#2799
#2801
#2802
#2803
#2805
#2807
#371
#374
#375
#376
#377
#378
#380
#381
#383
#384
#385
#386
#392
#44
#532
#629
#662
#666
#689
#691
#698
#699
#719
#725
#730
#731
#738
#745
#752
#774
#816
#818
#82
#829
#847
#857
#888
#933
#961
#971
#977
#981
0.9.18
0.9.20
0.9.21
0.9.23
0.9.24
0.9.25
0.9.27
0.9.28
0.9.29
0.9.30
0.9.31
0.9.32
0.9.33
0.9.35
0.9.36
0.9.37
0.9.38
0.9.39
0.9.42
0.9.43
0.9.45
0.9.46
0.9.47
0.9.48
0.9.49
0.9.50
0.9.9
BOB
I2CP
SAM
addressbook
api
apps
blocker
build
console
critical
crypto
data
debian
defect
docker
duplicate
easy-install bundle
enhancement
eventually
general
i2psnark
i2ptunnel
infrastructure
installer
jetty
maintenance
major
minor
misc
naming
netdb
not a bug
not our bug
package
profiles
research
router
soon
streaming
susidns
susimail
systray
task
tests
transport
trivial
tunnels
unconfirmed
undecided
update
utils
website
wontfix
works-for-me
wrapper
No Label
Milestone
No items
No Milestone
Projects
Clear projects
No project
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: I2P_Developers/i2p.i2p#15
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
No description provided.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
I'm using this issue to document changes in the functionality of the sybil attack tool that I have been experimenting with, and the reasons for them.
Background: during the 2024 netDb attacks, hundreds of thousands(millions?) of routerInfos were published by an attacker which "Cloned" IP addresses and ports which the attacker discovered by analyzing the netDb and harvesting the IP addresses and ports of reachable routers. This caused the Java I2P distribution to misidentify routers as part of a Sybil attack. In response, all IP checks in the Sybil Attack Tool were disabled.
At this time, the only thing the Sybil Attack Tool has the energy to care about is the people who got an old version of Vuze by downloading it from SourceForge(33 versions behind). It is basically impossible to reach the attack threshold without modifying it. This should not necessarily remain the case, in my opinion. Instead, I believe it is possible to reconsider aspects of the Sybil Attack Tool to improve it's capabilities and limit it's ability to hallucinate an attack. This suggestion is based on some hypotheses:
What should we change?
Effectively this should render the possible points value a fixed range, perhaps from 0-100, wherein it's only possible to reach the ban threshold if multiple penalties are high. The weights should take into account categories also, as in it should be impossible to reach the ban threshold using only IP-related penalties for instance.
Additional modifications beyond this point are still speculative, and it will be very difficult to test this without a running clone attack.
Related branches:
I was actually going to ping you on this later after I have it tidied back up. This would qualify as another one of those "long-term projects" that I might have dropped all at once but I'm trying to change my ways here and split it up into reasonable, reviewable parts that only do one or two things at a time. To answer your questions anyway:
By hallucinations I mean a few things:
Pretty straightforward. A router under attack "saw" dozens of peers on the same IP address, when in fact there was only one there.
Because of the fact that the router saw routers that weren't actually there, Sybil tool mis-identified the nature of the attack. It saw fleets of routers appearing on the same IP address, concludes that someone on that IP address was running a bunch of routers to try and take over multiple hops in somebody's tunnel, and decided to ban them. I think I also referred to this phenomenon as "Threat Inflation." The actual attack could never have affected the network in this way(by tunnel takeover) because the routers were fake, and didn't look like what the Sybil tool saw.
No, I think that making it impossible to reach the threshold is a different(current) problem, and that threat inflation hallucinations are the one I'm trying to figure out. I'd like to make it possible to reach the ban threshold again, but only if multiple sources of threat points(reasons) contribute to the overall threat point total reaching the threshold. In other words, I want to re-enable IP checks, but I want to make it impossible for the Sybil tool to indicate a Sybil attack using only IP checks, and the total for all IP checks should never be over a specified value, a value which is lower than the minimum threshold for banning routers.
Sure it does? If I can make it so that, for instance, it's only possible to get 30 total points from IP checks, then if the ban threshold is 50, another 20 total points must come from some other indicator or set of indicators. If there is a "hard maximum" on every potential source of threat points, then we can both limit the effect of any individual "hallucination" and decide on how seriously we take any given source of threat points as part of the total.
In fact, I think forcing each individual source of threat points to adhere to a range is a prerequisite for a meaningful definition of a "High" penalty, because right now there is no clearly defined range for most of them, they range from -40(For a verified router family with keys included in the router) to +(the biggest possible double). This is most problematic so far for the IP checks because it's obviously super easy to make the IP checks go through the roof and outweigh anything else in the analysis.
Confused about the term "hallucinate". During the attack, it was a real attack, not hallucinations. Currently, as you say, it's impossible to reach the threshold, so there are no hallucinations. So you're proposing to fix a problem that doesn't exist?
Changing the points system from linear to exponential or to a fixed range doesn't help you implement a 'multiple penalties are high' algorithm. That's orthogonal. So that doesn't make sense. You could do either/or/both but they're independent.
Your 'must have two separate high penalties' is an interesting proposal but not clear what it buys us or why that's better.
As a documentation exercise or first step it may be helpful to write up the current checks/weights/min/max for each check.