1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
|
Network Working Group D. Nelson
Request for Comments: 5080 Elbrys Networks, Inc
Updates: 2865, 2866, 2869, 3579 A. DeKok
Category: Standards Track FreeRADIUS
December 2007
Common Remote Authentication Dial In User Service (RADIUS)
Implementation Issues and Suggested Fixes
Status of This Memo
This document specifies an Internet standards track protocol for the
Internet community, and requests discussion and suggestions for
improvements. Please refer to the current edition of the "Internet
Official Protocol Standards" (STD 1) for the standardization state
and status of this protocol. Distribution of this memo is unlimited.
Abstract
This document describes common issues seen in Remote Authentication
Dial In User Service (RADIUS) implementations and suggests some
fixes. Where applicable, ambiguities and errors in previous RADIUS
specifications are clarified.
Nelson & DeKok Standards Track [Page 1]
^L
RFC 5080 RADIUS Issues & Fixes December 2007
Table of Contents
1. Introduction ....................................................2
1.1. Terminology ................................................3
1.2. Requirements Language ......................................3
2. Issues ..........................................................3
2.1. Session Definition .........................................3
2.1.1. State Attribute .....................................3
2.1.2. Request-ID Supplementation ..........................6
2.2. Overload Conditions ........................................7
2.2.1. Retransmission Behavior .............................7
2.2.2. Duplicate Detection and Orderly Delivery ...........10
2.2.3. Server Response to Overload ........................11
2.3. Accounting Issues .........................................12
2.3.1. Attributes Allowed in an Interim Update ............12
2.3.2. Acct-Session-Id and Acct-Multi-Session-Id ..........12
2.3.3. Request Authenticator ..............................13
2.3.4. Interim-Accounting-Interval ........................13
2.3.5. Counter Values in the RADIUS Management
Information Base (MIB) .............................14
2.4. Multiple Filter-ID Attributes .............................15
2.5. Mandatory and Optional Attributes .........................16
2.6. Interpretation of Access-Reject ...........................18
2.6.1. Improper Use of Access-Reject ......................18
2.6.2. Service Request Denial .............................19
2.7. Addressing ................................................20
2.7.1. Link-Local Addresses ...............................20
2.7.2. Multiple Addresses .................................20
2.8. Idle-Timeout ..............................................21
2.9. Unknown Identity ..........................................21
2.10. Responses After Retransmissions ..........................22
2.11. Framed-IPv6-Prefix .......................................23
3. Security Considerations ........................................24
4. References .....................................................25
4.1. Normative References ......................................25
4.2. Informative References ....................................25
1. Introduction
The last few years have seen an increase in the deployment of RADIUS
clients and servers. This document describes common issues seen in
RADIUS implementations and suggests some fixes. Where applicable,
ambiguities and errors in previous RADIUS specifications are
clarified.
Nelson & DeKok Standards Track [Page 2]
^L
RFC 5080 RADIUS Issues & Fixes December 2007
1.1. Terminology
This document uses the following terms:
Network Access Server (NAS)
The device providing access to the network. Also known as the
Authenticator in IEEE 802.1X or Extensible Authentication Protocol
(EAP) terminology, or RADIUS client.
service
The NAS provides a service to the user, such as network access via
802.11 or Point to Point Protocol (PPP).
session
Each service provided by the NAS to a peer constitutes a session,
with the beginning of the session defined as the point where
service is first provided, and the end of the session is defined
as the point where service is ended. A peer may have multiple
sessions in parallel or series if the NAS supports that, with each
session generating a separate start and stop accounting record.
silently discard
This means the implementation discards the packet without further
processing. The implementation SHOULD provide the capability of
logging the error, including the contents of the silently
discarded packet, and SHOULD record the event in a statistics
counter.
1.2. Requirements Language
In this document, several words are used to signify the requirements
of the specification. The key words "MUST", "MUST NOT", "REQUIRED",
"SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY",
and "OPTIONAL" in this document are to be interpreted as described in
[RFC2119].
2. Issues
2.1. Session Definition
2.1.1. State Attribute
Regarding the State attribute, [RFC2865] Section 5.24 states:
This Attribute is available to be sent by the server to the client
in an Access-Challenge and MUST be sent unmodified from the client
to the server in the new Access-Request reply to that challenge,
if any.
Nelson & DeKok Standards Track [Page 3]
^L
RFC 5080 RADIUS Issues & Fixes December 2007
This Attribute is available to be sent by the server to the client
in an Access-Accept that also includes a Termination-Action
Attribute with the value of RADIUS-Request. If the NAS performs
the Termination-Action by sending a new Access-Request upon
termination of the current session, it MUST include the State
attribute unchanged in that Access-Request.
Some RADIUS client implementations do not properly use the State
attribute in order to distinguish a restarted EAP authentication
process from the continuation of an ongoing process (by the same user
on the same NAS and port). Where an EAP-Message attribute is
included in an Access-Challenge or Access-Accept attribute, RADIUS
servers SHOULD also include a State attribute. See Section 2.1.2 on
Request ID supplementation for additional benefits to using the State
attribute in this fashion.
As defined in [RFC2865] Table 5.44, Access-Request packets may
contain a State attribute. The table does not qualify this
statement, while the text in Section 5.24 (quoted above) adds other
requirements not specified in that table.
We extend the requirements of [RFC2865] to say that Access-Requests
that are part of an ongoing Access-Request / Access-Challenge
authentication process SHOULD contain a State attribute. It is the
responsibility of the server, to send a State attribute in an
Access-Challenge packet, if that server needs a State attribute in a
subsequent Access-Request to tie multiple Access-Requests together
into one authentication session. As defined in [RFC2865] Section
5.24, the State MUST be sent unmodified from the client to the server
in the new Access-Request reply to that challenge, if any.
While most server implementations require the presence of a State
attribute in an Access-Challenge packet, some challenge-response
systems can distinguish the initial request from the response to the
challenge without using a State attribute to track an authentication
session. The Access-Challenge and subsequent Access-Request packets
for those systems do not need to contain a State attribute.
Other authentication mechanisms need to tie a sequence of Access-
Request / Access-Challenge packets together into one ongoing
authentication session. Servers implementing those authentication
mechanisms SHOULD include a State attribute in Access-Challenge
packets.
In general, if the authentication process involves one or more
Access-Request / Access-Challenge sequences, the State attribute
SHOULD be sent by the server in the Access-Challenge packets. Using
the State attribute to create a multi-packet session is the simplest
Nelson & DeKok Standards Track [Page 4]
^L
RFC 5080 RADIUS Issues & Fixes December 2007
method available in RADIUS today. While other methods of creating
multi-packet sessions are possible (e.g., [RFC3579] Section 2.6.1),
those methods are NOT RECOMMENDED.
The only permissible values for a State attribute are values provided
in an Access-Accept, Access-Challenge, CoA-Request or Disconnect-
Request packet. A RADIUS client MUST use only those values for the
State attribute that it has previously received from a server. An
Access-Request sent as a result of a new or restarted authentication
run MUST NOT include the State attribute, even if a State attribute
has previously been received in an Access-Challenge for the same user
and port.
Access-Request packets that contain a Service-Type attribute with the
value Authorize Only (17) MUST contain a State attribute. Access-
Request packets that contain a Service-Type attribute with value Call
Check (10) SHOULD NOT contain a State attribute. Any other Access-
Request packet that performs authorization checks MUST contain a
State attribute. This last requirement often means that an Access-
Accept needs to contain a State attribute, which can then be used in
a later Access-Request that performs authorization checks.
The standard use case for Call Check is pre-screening authentication
based solely on the end-point identifier information, such as phone
number or Media Access Control (MAC) address in Calling-Station-ID
and optionally Called-Station-ID. In this use case, the NAS has no
way to obtain a State attribute suitable for inclusion in an Access-
Request. Other, non-standard, uses of Call Check may require or
permit the use of a State attribute, but are beyond the scope of this
document.
In an Access-Request with a Service-Type Attribute with value Call
Check, it is NOT RECOMMENDED for the User-Name and User-Password
attributes to contain the same values (e.g., a MAC address).
Implementing MAC address checking without using a Service-Type of
Call Check is NOT RECOMMENDED. This practice gives an attacker both
the clear-text and cipher-text of the User-Password field, which
permits many attacks on the security of the RADIUS protocol. For
example, if the Request Authenticator does not satisfy the [RFC2865]
requirements on global and temporal uniqueness, the practice
described above may lead to the compromise of the User-Password
attribute in other Access-Requests for unrelated users. Access to
the cipher-text enables offline dictionary attacks, potentially
exposing the shared secret and compromising the entire RADIUS
protocol.
Nelson & DeKok Standards Track [Page 5]
^L
RFC 5080 RADIUS Issues & Fixes December 2007
Any Access-Request packet that performs authorization checks,
including Call Check, SHOULD contain a Message-Authenticator
attribute. Any response to an Access-Request performing an
authorization check MUST NOT contain confidential information about
any user (such as Tunnel-Password), unless that Access-Request
contains a State attribute. The use of State here permits the
authorization check to be tied to an earlier user authentication. In
that case, the server MAY respond to the NAS with confidential
information about that user. The server MUST NOT respond to that
authorization check with confidential information about any other
user.
For an Access-Request packet performing an authorization check that
does not contain a State attribute, the server MUST respond with an
Access-Reject.
2.1.2. Request-ID Supplementation
[RFC3579] Section 2.6.1 states:
In EAP, each session has its own unique Identifier space. RADIUS
server implementations MUST be able to distinguish between EAP
packets with the same Identifier existing within distinct
sessions, originating on the same NAS. For this purpose, sessions
can be distinguished based on NAS and session identification
attributes. NAS identification attributes include NAS-Identifier,
NAS-IPv6-Address and NAS-IPv4-Address. Session identification
attributes include User-Name, NAS-Port, NAS-Port-Type, NAS-Port-
Id, Called-Station-Id, Calling-Station-Id and Originating-Line-
Info.
There are issues with the suggested algorithm. Since proxies may
modify Access-Request attributes such as NAS-IP-Address, depending on
any attribute under control of the NAS to distinguish request
identifiers can result in deployment problems.
The FreeRADIUS implementation does not track EAP identifiers by NAS-
IP-Address or other non-EAP attributes sent by the NAS. Instead, it
uses the EAP identifier, source Internet Protocol (IP) address, and
the State attribute as a "key" to uniquely identify each EAP session.
Since the State attribute is under the control of the RADIUS server,
the uniqueness of each session is controlled by the server, not the
NAS. The algorithm used in FreeRADIUS is as follows:
Nelson & DeKok Standards Track [Page 6]
^L
RFC 5080 RADIUS Issues & Fixes December 2007
if (EAP start, or EAP identity) {
allocate unique State Attribute
insert session into "active session" table with
key=(EAP identifier, State, source IP)
} else {
look up active session in table, with above key
}
This algorithm appears to work well in a variety of situations,
including situations where home servers receive messages via
intermediate RADIUS proxies.
Implementations that do not use this algorithm are often restricted
to having an EAP Identifier space per NAS, or perhaps one that is
global to the implementation. These restrictions are unnecessary
when the above algorithm is used, which gives each session a unique
EAP Identifier space. The above algorithm SHOULD be used to track
EAP sessions in preference to any other method.
2.2. Overload Conditions
2.2.1. Retransmission Behavior
[RFC2865] Section 2.4 describes the retransmission requirements for
RADIUS clients:
At one extreme, RADIUS does not require a "responsive" detection
of lost data. The user is willing to wait several seconds for the
authentication to complete. The generally aggressive Transmission
Control Protocol (TCP) retransmission (based on average round trip
time) is not required, nor is the acknowledgment overhead of TCP.
At the other extreme, the user is not willing to wait several
minutes for authentication. Therefore the reliable delivery of
TCP data two minutes later is not useful. The faster use of an
alternate server allows the user to gain access before giving up.
Some existing RADIUS clients implement excessively aggressive
retransmission behavior, utilizing default retransmission timeouts of
one second or less without support for congestive backoff. When
deployed at a large scale, these implementations are susceptible to
congestive collapse. For example, as the result of a power failure,
a network with 3,000 NAS devices with a fixed retransmission timer of
one second will continuously generate 3,000 RADIUS Access-Requests
per second. This is sufficient to overwhelm most RADIUS servers.
Nelson & DeKok Standards Track [Page 7]
^L
RFC 5080 RADIUS Issues & Fixes December 2007
Suggested solutions include:
[a] Jitter. To avoid synchronization, a RADIUS client SHOULD
incorporate induced jitter within its retransmission
algorithm, as specified below.
[b] Congestive backoff. While it is not necessary for RADIUS
client implementations to implement complex retransmission
algorithms, implementations SHOULD support congestive
backoff.
RADIUS retransmission timers are based on the model used in Dynamic
Host Configuration Protocol for IPv6 (DHCPv6) [RFC3315]. Variables
used here are also borrowed from this specification. RADIUS is a
request/response-based protocol. The message exchange terminates
when the requester successfully receives the answer, or the message
exchange is considered to have failed according to the RECOMMENDED
retransmission mechanism described below. Other retransmission
mechanisms are possible, as long as they satisfy the requirements on
jitter and congestive backoff.
The following algorithms apply to any client that originates RADIUS
packets, including but not limited to Access-Request, Accounting-
Request, Disconnect-Request, and CoA-Request [RFC3576].
The retransmission behavior is controlled and described by the
following variables:
RT Retransmission timeout
IRT Initial retransmission time (default 2 seconds)
MRC Maximum retransmission count (default 5 attempts)
MRT Maximum retransmission time (default 16 seconds)
MRD Maximum retransmission duration (default 30 seconds)
RAND Randomization factor
With each message transmission or retransmission, the sender sets RT
according to the rules given below. If RT expires before the message
exchange terminates, the sender re-computes RT and retransmits the
message.
Nelson & DeKok Standards Track [Page 8]
^L
RFC 5080 RADIUS Issues & Fixes December 2007
Each of the computations of a new RT include a randomization factor
(RAND), which is a random number chosen with a uniform distribution
between -0.1 and +0.1. The randomization factor is included to
minimize the synchronization of messages.
The algorithm for choosing a random number does not need to be
cryptographically sound. The algorithm SHOULD produce a different
sequence of random numbers from each invocation.
RT for the first message transmission is based on IRT:
RT = IRT + RAND*IRT
RT for each subsequent message retransmission is based on the
previous value of RT:
RT = 2*RTprev + RAND*RTprev
MRT specifies an upper bound on the value of RT (disregarding the
randomization added by the use of RAND). If MRT has a value of 0,
there is no upper limit on the value of RT. Otherwise:
if (RT > MRT)
RT = MRT + RAND*MRT
MRD specifies an upper bound on the length of time a sender may
retransmit a message. The message exchange fails once MRD seconds
have elapsed since the client first transmitted the message. MRD
MUST be set, and SHOULD have a value between 5 and 30 seconds. These
values mirror the values for a server's duplicate detection cache, as
described in the next section.
MRC specifies an upper bound on the number of times a sender may
retransmit a message. If MRC is zero, the message exchange fails
once MRD seconds have elapsed since the client first transmitted the
message. If MRC is non-zero, the message exchange fails when either
the sender has transmitted the message MRC times, or when MRD seconds
have elapsed since the client first transmitted the message.
For Accounting-Request packets, the default values for MRC, MRD, and
MRT SHOULD be zero. These settings will enable a RADIUS client to
continue sending accounting requests to a RADIUS server until the
request is acknowledged. If any of MRC, MRD, or MRT are non-zero,
then the accounting information could potentially be discarded
without being recorded.
Nelson & DeKok Standards Track [Page 9]
^L
RFC 5080 RADIUS Issues & Fixes December 2007
2.2.2. Duplicate Detection and Orderly Delivery
When packets are retransmitted by a client, the server may receive
duplicate requests. The limitations of the transport protocol used
by RADIUS, the User Datagram Protocol (UDP), means that the Access-
Request packets may be received, and potentially processed, in an
order different from the order in which the packets were sent.
However, the discussion of the Identifier field in Section 3 of
[RFC2865] says:
The RADIUS server can detect a duplicate request if it has the
same client source IP address and source UDP port and Identifier
within a short span of time.
Also, Section 7 of [RFC4669] defines a
radiusAuthServDupAccessRequests object as:
The number of duplicate Access-Request packets received.
This text has a number of implications. First, without duplicate
detection, a RADIUS server may process an authentication request
twice, leading to an erroneous conclusion that a user has logged in
twice. That behavior is undesirable, so duplicate detection is
desirable. Second, the server may track not only the duplicate
request, but also the replies to those requests. This behavior
permits the server to send duplicate replies in response to duplicate
requests, increasing network stability.
Since Access-Request packets may also be sent by the client in
response to an Access-Challenge from the server, those packets form a
logically ordered stream, and, therefore have additional ordering
requirements over Access-Request packets for different sessions.
Implementing duplicate detection results in new packets being
processed only once, ensuring order.
RADIUS servers MUST therefore implement duplicate detection for
Access-Request packets, as described in Section 3 of [RFC2865].
Implementations MUST also cache the Responses (Access-Accept,
Access-Challenge, or Access-Reject) that they send in response to
Access-Request packets. If a server receives a valid duplicate
Access-Request for which it has already sent a Response, it MUST
resend its original Response without reprocessing the request. The
server MUST silently discard any duplicate Access-Requests for which
a Response has not yet been sent.
Nelson & DeKok Standards Track [Page 10]
^L
RFC 5080 RADIUS Issues & Fixes December 2007
Each cache entry SHOULD be purged after a period of time. This time
SHOULD be no less than 5 seconds, and no more than 30 seconds. After
about 30 seconds, most RADIUS clients and end users will have given
up on the authentication request. Therefore, there is little value
in having a larger cache timeout.
Cache entries MUST also be purged if the server receives a valid
Access-Request packet that matches a cached Access-Request packet in
source address, source port, RADIUS Identifier, and receiving socket,
but where the Request Authenticator field is different from the one
in the cached packet. If the request contains a Message-
Authenticator attribute, the request MUST be processed as described
in [RFC3580] Section 3.2. Packets with invalid Message-
Authenticators MUST NOT affect the cache in any way.
However, Access-Request packets not containing a Message-
Authenticator attribute always affect the cache, even though they may
be trivially forged. To avoid this issue, server implementations may
be configured to require the presence of a Message-Authenticator
attribute in Access-Request packets. Requests not containing a
Message-Authenticator attribute MAY then be silently discarded.
Client implementations SHOULD include a Message-Authenticator
attribute in every Access-Request to further help mitigate this
issue.
When sending requests, RADIUS clients MUST NOT reuse Identifiers for
a source IP address and source UDP port until either a valid response
has been received, or the request has timed out. Clients SHOULD
allocate Identifiers via a least-recently-used (LRU) method for a
particular source IP address and source UDP port.
RADIUS clients do not have to perform duplicate detection. When a
client sends a request, it processes the first response that has a
valid Response Authenticator as defined in [RFC2865] Section 3. Any
later responses MUST be silently discarded, as they do not match a
pending request. That is, later responses are treated exactly the
same as unsolicited responses, and are silently discarded.
2.2.3. Server Response to Overload
Some RADIUS server implementations are not robust in response to
overload, dropping packets with even probability across multiple
sessions. In an overload situation, this results in a high failure
rate for multi-round authentication protocols such as EAP [RFC3579].
Typically, users will continually retry in an attempt to gain access,
increasing the load even further.
Nelson & DeKok Standards Track [Page 11]
^L
RFC 5080 RADIUS Issues & Fixes December 2007
A more sensible approach is for a RADIUS server to preferentially
accept RADIUS Access-Request packets containing a valid State
attribute, so that multi-round authentication conversations, once
begun, will be more likely to succeed. Similarly, a server that is
proxying requests should preferentially process Access-Accept,
Access-Challenge, or Access-Reject packets from home servers before
processing new requests from a NAS.
These methods will allow some users to gain access to the network,
reducing the load created by ongoing access attempts.
2.3. Accounting Issues
2.3.1. Attributes Allowed in an Interim Update
[RFC2866] indicates that Acct-Input-Octets, Acct-Output-Octets,
Acct-Session-Time, Acct-Input-Packets, Acct-Output-Packets and Acct-
Terminate-Cause attributes "can only be present in Accounting-Request
records where the Acct-Status-Type is set to Stop".
However [RFC2869] Section 2.1 states:
It is envisioned that an Interim Accounting record (with Acct-
Status-Type = Interim-Update (3)) would contain all of the
attributes normally found in an Accounting Stop message with the
exception of the Acct-Term-Cause attribute.
Although [RFC2869] does not indicate that it updates [RFC2866], this
is an oversight, and the above attributes are allowable in an Interim
Accounting record.
2.3.2. Acct-Session-Id and Acct-Multi-Session-Id
[RFC2866] Section 5.5 describes Acct-Session-Id as Text within the
figure summarizing the attribute format, but then goes on to state
that "The String field SHOULD be a string of UTF-8 encoded 10646
characters".
[RFC2865] defines the Text type as "containing UTF-8 encoded 10646
characters", which is compatible with the description of Acct-
Session-Id. Since other attributes are consistently described as
"Text" within both the figure summarizing the attribute format, and
the following attribute definition, it appears that this is a
typographical error, and that Acct-Session-Id is of type Text, and
not of type String.
Nelson & DeKok Standards Track [Page 12]
^L
RFC 5080 RADIUS Issues & Fixes December 2007
The definition of the Acct-Multi-Session-Id attribute also has
typographical errors. It says:
A summary of the Acct-Session-Id attribute format ...
This text should read:
A summary of the Acct-Multi-Session-Id attribute format ...
The Acct-Multi-Session-Id attribute is also defined as being of type
String. However, the language in the text strongly recommends that
implementors consider the attribute as being of type Text. It is
unclear why the type String was chosen for this attribute when the
type Text would be sufficient. This attribute SHOULD be treated as
Text.
2.3.3. Request Authenticator
[RFC2866] Section 4.1 states:
The Request Authenticator of an Accounting-Request contains a 16-
octet MD5 hash value calculated according to the method described
in "Request Authenticator" above.
However, the text does not indicate any action to take when an
Accounting-Request packet contains an invalid Request Authenticator.
The following text should be considered to be part of the above
description:
The Request Authenticator field MUST contain the correct data, as
given by the above calculation. Invalid packets are silently
discarded. Note that some early implementations always set the
Request Authenticator to all zeros. New implementations of RADIUS
clients MUST use the above algorithm to calculate the Request
Authenticator field. New RADIUS server implementations MUST
silently discard invalid packets.
2.3.4. Interim-Accounting-Interval
[RFC2869] Section 2.1 states:
It is also possible to statically configure an interim value on
the NAS itself. Note that a locally configured value on the NAS
MUST override the value found in an Access-Accept.
This requirement may be phrased too strongly. It is conceivable that
a NAS implementation has a setting for a "minimum" value of Interim-
Accounting-Interval, based on resource constraints in the NAS, and
Nelson & DeKok Standards Track [Page 13]
^L
RFC 5080 RADIUS Issues & Fixes December 2007
network loading in the local environment of the NAS. In such cases,
the value administratively provisioned in the NAS should not be
over-ridden by a smaller value from an Access-Accept message. The
NAS's value could be over-ridden by a larger one, however. The
intent is that the NAS sends accounting information at fixed
intervals that are short enough so that the potential loss of
billable revenue is limited, but also that the accounting updates are
infrequent enough so that the NAS, network, and RADIUS server are not
overloaded.
2.3.5. Counter Values in the RADIUS Management Information Base (MIB)
The RADIUS Authentication and Authorization Client MIB module
([RFC2618] [RFC4668]) includes counters of packet statistics. In the
descriptive text of the MIB module, formulas are provided for certain
counter objects. Implementors have noted apparent inconsistencies in
the formulas that could result in negative values.
Since the original MIB module specified in [RFC2618] had been widely
implemented, the RADEXT WG chose not to change the object definitions
or to create new ones within the revised MIB module [RFC4668].
However, this section explains the issues and provides guidance for
implementors regarding the interpretation of the textual description
and comments for certain MIB objects.
The issues raised can be summarized as follows:
Issue (1):
-- TotalIncomingPackets = Accepts + Rejects + Challenges +
UnknownTypes
--
-- TotalIncomingPackets - MalformedResponses - BadAuthenticators -
-- UnknownTypes - PacketsDropped = Successfully received
--
-- AccessRequests + PendingRequests + ClientTimeouts =
-- Successfully Received
It appears that the value of "Successfully Received" could be
negative, since various counters are subtracted from
TotalIncomingPackets that are not included in the calculation of
TotalIncomingPackets.
It also appears that "AccessRequests + PendingRequests +
ClientTimeouts = Successfully Received" should read "AccessRequests +
PendingRequests + ClientTimeouts = Successfully Transmitted".
Nelson & DeKok Standards Track [Page 14]
^L
RFC 5080 RADIUS Issues & Fixes December 2007
"TotalIncomingPackets" and "Successfully Received" are temporary
variables, i.e., not objects within the MIB module. The comment text
in the MIB modules is intended, therefore, to aid in understanding.
What's of consequence is the consistency of values of the objects in
the MIB module, and that does not appear to be impacted by the
inconsistencies noted above. It does appear, however, that the
"Successfully Received" variable should be labeled "Successfully
Transmitted".
In addition, the definition of Accept, Reject or Challenge counters
indicates that they MUST be incremented before the message is
validated. If the message is invalid, one of MalformedResponses,
BadAuthenticators, or PacketsDropped counters will be additionally
incremented. In that case, the first two equations are consistent,
i.e., "Successfully Received" could not be negative.
Issue (2):
It appears that the radiusAuthClientPendingRequests counter is
decremented upon retransmission. That would mean a retransmitted
packet is not considered as being pending, although such
retransmissions can still be considered as being pending requests.
The definition of this MIB object in [RFC2618] is as follows:
The number of RADIUS Access-Request packets destined for this
server that have not yet timed out or received a response. This
variable is incremented when an Access-Request is sent and
decremented due to receipt of an Access-Accept, Access-Reject or
Access-Challenge, a timeout or retransmission.
This object purports to count the number of pending request packets.
It is open to interpretation whether or not retransmissions of a
request are to be counted as additional pending packets. In either
event, it seems appropriate to treat retransmissions consistently
with respect to incrementing and decrementing this counter.
2.4. Multiple Filter-ID Attributes
[RFC2865] Section 5.11 states:
Zero or more Filter-Id attributes MAY be sent in an Access-Accept
packet.
Nelson & DeKok Standards Track [Page 15]
^L
RFC 5080 RADIUS Issues & Fixes December 2007
In practice, the behavior of a RADIUS client receiving multiple
Filter-ID attributes is implementation dependent. For example, some
implementations treat multiple instances of the Filter-ID attribute
as alternative filters; the first Filter-ID attribute having a name
matching a locally defined filter is used, and the remaining ones are
discarded. Other implementations may combine matching filters.
As a result, the interpretation of multiple Filter-ID attributes is
undefined within RADIUS. The sending of multiple Filter-ID
attributes within an Access-Accept SHOULD be avoided within
heterogeneous deployments and roaming scenarios, where it is likely
to produce unpredictable results.
2.5. Mandatory and Optional Attributes
RADIUS attributes do not explicitly state whether they are optional
or mandatory. Nevertheless, there are instances where RADIUS
attributes need to be treated as mandatory.
[RFC2865] Section 1.1 states:
A NAS that does not implement a given service MUST NOT implement
the RADIUS attributes for that service. For example, a NAS that
is unable to offer Apple Remote Access Protocol (ARAP) service
MUST NOT implement the RADIUS attributes for ARAP. A NAS MUST
treat a RADIUS access-accept authorizing an unavailable service as
an access-reject instead.
With respect to the Service-Type attribute, [RFC2865] Section 5.6
says:
This Attribute indicates the type of service the user has
requested, or the type of service to be provided. It MAY be used
in both Access-Request and Access-Accept packets. A NAS is not
required to implement all of these service types, and MUST treat
unknown or unsupported Service-Types as though an Access-Reject
had been received instead.
[RFC2865] Section 5 states:
A RADIUS server MAY ignore Attributes with an unknown Type.
A RADIUS client MAY ignore Attributes with an unknown Type.
Nelson & DeKok Standards Track [Page 16]
^L
RFC 5080 RADIUS Issues & Fixes December 2007
With respect to Vendor-Specific Attributes (VSAs), [RFC2865] Section
5.26 states:
Servers not equipped to interpret the vendor-specific information
sent by a client MUST ignore it (although it may be reported).
Clients which do not receive desired vendor-specific information
SHOULD make an attempt to operate without it, although they may do
so (and report they are doing so) in a degraded mode.
It is possible for either a standard attribute or a VSA to represent
a request for an unavailable service. However, where the Type,
Vendor-ID, or Vendor-Type is unknown, a RADIUS client will not know
whether or not the attribute defines a service.
In general, it is best for a RADIUS client to err on the side of
caution. On receiving an Access-Accept including an attribute of
known Type for an unimplemented service, a RADIUS client MUST treat
it as an Access-Reject, as directed in [RFC2865] Section 1.1. On
receiving an Access-Accept including an attribute of unknown Type, a
RADIUS client SHOULD assume that it is a potential service
definition, and treat it as an Access-Reject. Unknown VSAs SHOULD be
ignored by RADIUS clients.
In order to avoid introducing changes in default behavior, existing
implementations that do not obey this recommendation should make the
behavior configurable, with the legacy behavior being enabled by
default. A configuration flag such as "treat unknown attributes as
reject" can be exposed to the system administrator. If the flag is
set to true, then Access-Accepts containing unknown attributes are
treated as Access-Rejects. If the flag is set to false, then unknown
attributes in Access-Accepts are silently ignored.
On receiving a packet including an attribute of unknown Type, RADIUS
authentication server implementations SHOULD ignore such attributes.
However, RADIUS accounting server implementations typically do not
need to understand attributes in order to write them to stable
storage or pass them to the billing engine. Therefore, accounting
server implementations SHOULD be equipped to handle unknown
attributes.
To avoid misinterpretation of service requests encoded within VSAs,
RADIUS servers SHOULD NOT send VSAs containing service requests to
RADIUS clients that are not known to understand them. For example, a
RADIUS server should not send a VSA encoding a filter without
knowledge that the RADIUS client supports the VSA.
Nelson & DeKok Standards Track [Page 17]
^L
RFC 5080 RADIUS Issues & Fixes December 2007
2.6. Interpretation of Access-Reject
2.6.1. Improper Use of Access-Reject
The intent of an Access-Reject is to deny access to the requested
service. [RFC2865] Section 2 states:
If any condition is not met, the RADIUS server sends an "Access-
Reject" response indicating that this user request is invalid. If
desired, the server MAY include a text message in the Access-
Reject which MAY be displayed by the client to the user. No other
Attributes (except Proxy-State) are permitted in an Access-Reject.
This text makes it clear that RADIUS does not allow the provisioning
of services within an Access-Reject. If the desire is to allow
limited access, then an Access-Accept can be sent with attributes
provisioning limited access. Attributes within an Access-Reject are
restricted to those necessary to route the message (e.g., Proxy-
State), attributes providing the user with an indication that access
has been denied (e.g., an EAP-Message attribute containing an EAP-
Failure), or attributes conveying an error message (e.g., a Reply-
Message or Error-Cause attribute).
Unfortunately, there are examples where this requirement has been
misunderstood. [RFC2869] Section 2.2 states:
If that authentication fails, the RADIUS server should return an
Access-Reject packet to the NAS, with optional Password-Retry and
Reply-Messages attributes. The presence of Password-Retry
indicates the ARAP NAS MAY choose to initiate another challenge-
response cycle...
This paragraph is problematic from two perspectives. Firstly, a
Password-Retry attribute is being returned in an Access-Reject; this
attribute does not fit into the categories established in [RFC2865].
Secondly, an Access-Reject packet is being sent in the context of a
continuing authentication conversation; [RFC2865] requires use of an
Access-Challenge for this. [RFC2869] uses the phrase "challenge-
response" to describe this use of Access-Reject, indicating that the
semantics of Access-Challenge are being used.
[RFC2865] Section 4.4 addresses the semantics of Access-Challenge
being equivalent to Access-Reject in some cases:
If the NAS does not support challenge/response, it MUST treat an
Access-Challenge as though it had received an Access-Reject
instead.
Nelson & DeKok Standards Track [Page 18]
^L
RFC 5080 RADIUS Issues & Fixes December 2007
While it is difficult to correct existing deployments of [RFC2869],
we make the following recommendations:
[1] New RADIUS specifications and implementations MUST NOT use
Access-Reject where the semantics of Access-Challenge are
intended.
[2] Access-Reject MUST mean denial of access to the requested
service. In response to an Access-Reject, the NAS MUST NOT
send any additional Access-Request packets for that user
session.
[3] New deployments of ARAP [RFC2869] SHOULD use Access-
Challenge instead of Access-Reject packets in the
conversations described in [RFC2869] Section 2.2.
We also note that the table of attributes in [RFC2869] Section 5.19
has an error for the Password-Retry attribute. It says:
Request Accept Reject Challenge # Attribute
0 0 0-1 0 75 Password-Retry
However, the text in [RFC2869], Section 2.3.2 says that Password-
Retry can be included within an Access-Challenge packet for EAP
authentication sessions. We recommend a correction to the table that
removes the "0-1" from the Reject column, and moves it to the
Challenge column. We also add a "Note 2" to follow the existing
"Note 1" in the document to clarify the use of this attribute.
Request Accept Reject Challenge # Attribute
0 0 0 0-1 75 Password-Retry [Note 2]
[Note 2] As per RFC 3579, the use of the Password-Retry in EAP
authentications is deprecated. The Password-Retry attribute can be
used only for ARAP authentication.
2.6.2. Service Request Denial
RADIUS has been deployed for purposes outside network access
authentication, authorization, and accounting. For example, RADIUS
has been deployed as a "back-end" for authenticating Voice Over IP
(VOIP) connections, Hypertext Transfer Protocol (HTTP) sessions
(e.g., Apache), File Transfer Protocol (FTP) sessions (e.g.,
proftpd), and machine logins for multiple operating systems (e.g.,
bsdi, pam, and gina). In those contexts, an Access-Reject sent to
the RADIUS client MUST be interpreted as a rejection of the request
for service, and the RADIUS client MUST NOT offer that service to the
user.
Nelson & DeKok Standards Track [Page 19]
^L
RFC 5080 RADIUS Issues & Fixes December 2007
For example, when an authentication failure occurs in the context of
an FTP session, the normal semantics for rejecting FTP services
apply. The rejection does not necessarily cause the FTP server to
terminate the underlying TCP connection, but the FTP server MUST NOT
offer any services protected by user authentication.
Users may request multiple services from the NAS. Where those
services are independent, the deployment MUST treat the RADIUS
sessions as being independent.
For example, a NAS may offer multi-link services where a user may
have multiple simultaneous network connections. In that case, an
Access-Reject for a later multi-link connection request does not
necessarily mean that earlier multi-link connections are torn down.
Similarly, if a NAS offers both dialup and VOIP services, the
rejection of a VOIP attempt does not mean that the dialup session is
torn down.
2.7. Addressing
2.7.1. Link-Local Addresses
Since Link-Local addresses are unique only on the local link, if the
NAS and RADIUS server are not on the same link, then an IPv6 Link-
Local address [RFC4862] or an IPv4 Link-Local Address [RFC3927]
cannot be used to uniquely identify the NAS. A NAS SHOULD NOT
utilize a link-scope address within a NAS-IPv6-Address or NAS-IP-
Address attribute. A RADIUS server receiving a NAS-IPv6-Address or
NAS-IP-Address attribute containing a Link-Local address SHOULD NOT
count such an attribute toward satisfying the requirements of
[RFC3162] Section 2.1:
NAS-IPv6-Address and/or NAS-IP-Address MAY be present in an
Access-Request packet; however, if neither attribute is present
then NAS-Identifier MUST be present.
2.7.2. Multiple Addresses
There are situations in which a RADIUS client or server may have
multiple addresses. For example, a dual stack host can have both
IPv4 and IPv6 addresses; a host that is a member of multiple VLANs
could have IPv4 and/or IPv6 addresses on each VLAN; a host can have
multiple IPv4 or IPv6 addresses on a single interface. However,
[RFC2865] Section 5.44 only permits zero or one NAS-IP-Address
attributes within an Access-Request, and [RFC3162] Section 3 only
permits zero or one NAS-IPv6-Address attributes within an Access-
Request. When a NAS has more than one global address and no ability
to determine which is used for identification in a particular
Nelson & DeKok Standards Track [Page 20]
^L
RFC 5080 RADIUS Issues & Fixes December 2007
request, it is RECOMMENDED that the NAS include the NAS-Identifier
attribute in an Access-Request in order to identify itself to the
RADIUS server.
[RFC2865] Section 3 states:
A RADIUS server MUST use the source IP address of the RADIUS UDP
packet to decide which shared secret to use, so that RADIUS
requests can be proxied.
Therefore, if a RADIUS client sends packets from more than one source
address, a shared secret will need to be configured on both the
client and server for each source address.
2.8. Idle-Timeout
With respect to the Idle-Timeout attribute, [RFC2865] Section 5.28
states:
This Attribute sets the maximum number of consecutive seconds of
idle connection allowed to the user before termination of the
session or prompt. This Attribute is available to be sent by the
server to the client in an Access-Accept or Access-Challenge.
[RFC3580] Section 3.12 states:
The Idle-Timeout attribute is described in [RFC2865]. For IEEE
802 media other than 802.11 the media are always on. As a result
the Idle-Timeout attribute is typically only used with wireless
media such as IEEE 802.11. It is possible for a wireless device
to wander out of range of all Access Points. In this case, the
Idle-Timeout attribute indicates the maximum time that a wireless
device may remain idle.
In the above paragraphs "idle" may not necessarily mean "no traffic";
the NAS may support filters defining what traffic is included in the
idle time determination. As a result, an "idle connection" is
defined by local policy in the absence of other attributes.
2.9. Unknown Identity
[RFC3748] Section 5.1 states:
If the Identity is unknown, the Identity Response field should be
zero bytes in length.
Nelson & DeKok Standards Track [Page 21]
^L
RFC 5080 RADIUS Issues & Fixes December 2007
However, [RFC2865] Section 5.1 describes the User-Name attribute as
follows:
The String field is one or more octets.
How should the RADIUS client behave if it receives an EAP-
Response/Identity that is zero octets in length?
[RFC2865] Section 5.1 states:
This Attribute indicates the name of the user to be authenticated.
It MUST be sent in Access-Request packets if available.
This suggests that the User-Name attribute may be omitted if it is
unavailable.
However, [RFC3579] Section 2.1 states:
In order to permit non-EAP aware RADIUS proxies to forward the
Access-Request packet, if the NAS initially sends an EAP-
Request/Identity message to the peer, the NAS MUST copy the
contents of the Type-Data field of the EAP-Response/Identity
received from the peer into the User-Name attribute and MUST
include the Type-Data field of the EAP-Response/Identity in the
User-Name attribute in every subsequent Access-Request.
This suggests that the User-Name attribute should contain the
contents of the Type-Data field of the EAP-Response/Identity, even if
it is zero octets in length.
Note that [RFC4282] does not permit a Network Access Identifier (NAI)
of zero octets, so that an EAP-Response/Identity with a Type-Data
field of zero octets MUST NOT be construed as a request for privacy
(e.g., anonymous NAI).
When a NAS receives an EAP-Response/Identity with a Type-Data field
that is zero octets in length, it is RECOMMENDED that it either omit
the User-Name attribute in the Access-Request or include the
Calling-Station-Id in the User-Name attribute, along with a Calling-
Station-Id attribute.
2.10. Responses After Retransmissions
Some implementations do not correctly handle the receipt of RADIUS
responses after retransmissions. [RFC2865] Section 2.5 states:
Nelson & DeKok Standards Track [Page 22]
^L
RFC 5080 RADIUS Issues & Fixes December 2007
If the NAS is retransmitting a RADIUS request to the same server
as before, and the attributes haven't changed, you MUST use the
same Request Authenticator, ID, and source port. If any
attributes have changed, you MUST use a new Request Authenticator
and ID.
Note that changing the Request ID for a retransmission may have
undesirable side effects. Since RADIUS does not have a clear
definition of a "session", it is perfectly valid for a RADIUS server
to treat a retransmission as a new session request, and to reject it
due to, for example, the enforcement of restrictions on multiple
simultaneous logins.
In that situation, the NAS may receive a belated Access-Accept for
the first request, and an Access-Reject for the retransmitted
request, both of which apply to the same "session".
We suggest that the contents of Access-Request packets SHOULD NOT be
changed during retransmissions. If they must be changed due to the
inclusion of an Event-Timestamp attribute, for example, then
responses to earlier transmissions MUST be silently discarded. Any
response to the current request MUST be treated as the definitive
response, even if as noted above, it disagrees with earlier
responses.
This problem can be made worse by implementations that use a fixed
retransmission timeout (30 seconds is common). We reiterate the
suggestions in Section 2.1 about using congestive backoff. In that
case, responses to earlier transmissions MAY be used as data points
for congestive backoff, even if their contents are discarded.
2.11. Framed-IPv6-Prefix
[RFC3162] Section 2.3 says:
This Attribute indicates an IPv6 prefix (and corresponding route)
to be configured for the user. It MAY be used in Access-Accept
packets, and can appear multiple times. It MAY be used in an
Access-Request packet as a hint by the NAS to the server that it
would prefer these prefix(es), but the server is not required to
honor the hint. Since it is assumed that the NAS will plumb a
route corresponding to the prefix, it is not necessary for the
server to also send a Framed-IPv6-Route attribute for the same
prefix.
An Internet Service Provider (ISP) may desire to support Prefix
Delegation [RFC4818] at the same time that it would like to assign a
prefix for the link between the NAS and the user. The intent of the
Nelson & DeKok Standards Track [Page 23]
^L
RFC 5080 RADIUS Issues & Fixes December 2007
paragraph was to enable the NAS to advertise the prefix (such as via
a Router Advertisement). If the Framed-Routing attribute is used, it
is also possible that the prefix would be advertised in a routing
protocol such as Routing Information Protocol Next Generation
(RIPNG). RFC 2865 Section 5.10 describes the purpose of Framed-
Routing:
This Attribute indicates the routing method for the user, when the
user is a router to a network. It is only used in Access-Accept
packets.
The description of the Prefix-Length field in RFC 3162 indicates
excessively wide latitude:
The length of the prefix, in bits. At least 0 and no larger than
128.
This length appears too broad, because it is not clear what a NAS
should do with a prefix of greater granularity than /64. For
example, the Framed-IPv6-Prefix may contain a /128. This does not
imply that the NAS should assign an IPv6 address to the end user,
because RFC 3162 already defines a Framed-IPv6-Identifier attribute
to handle the Identifier portion.
It appears that the Framed-IPv6-Prefix is used for the link between
the NAS and Customer Premises Equipment (CPE) only if a /64 prefix is
assigned. When a /64 or larger prefix is sent, the intent is for the
NAS to send a routing advertisement containing the information
present in the Framed-IPv6-Prefix attribute.
The CPE may also require a delegated prefix for its own use, if it is
decrementing the Hop Limit field of IP headers. In that case, it
should be delegated a prefix by the NAS via the Delegated-IPv6-Prefix
attribute [RFC4818]. If the CPE is not decrementing Hop Limit, it
does not require a delegated prefix.
3. Security Considerations
The contents of the State attribute are available to both the RADIUS
client and observers of the RADIUS protocol. RADIUS server
implementations should ensure that the State attribute does not
disclose sensitive information to a RADIUS client or third parties
observing the RADIUS protocol.
The cache mechanism described in Section 2.2.2 is vulnerable to
attacks when Access-Request packets do not contain a Message-
Authenticator attribute. If the server accepts requests without a
Message-Authenticator, then RADIUS packets can be trivially forged by
Nelson & DeKok Standards Track [Page 24]
^L
RFC 5080 RADIUS Issues & Fixes December 2007
an attacker. Cache entries can then be forcibly expired, negating
the utility of the cache. This attack can be mitigated by following
the suggestions in [RFC3579] Section 4, or by requiring the presence
of Message-Authenticator, as described in Sections 2.1.1 and 2.2.2.
Since this document describes the use of RADIUS for purposes of
authentication, authorization, and accounting in a wide variety of
networks, applications using these specifications are vulnerable to
all of the threats that are present in other RADIUS applications.
For a discussion of these threats, see [RFC2865], [RFC2607],
[RFC3162], [RFC3579], and [RFC3580].
4. References
4.1. Normative References
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119, March 1997.
[RFC2865] Rigney, C., Willens, S., Rubens, A., and W. Simpson,
"Remote Authentication Dial In User Service (RADIUS)",
RFC 2865, June 2000.
[RFC4818] Salowey, J. and R. Droms, "RADIUS Delegated-IPv6-Prefix
Attribute", RFC 4818, April 2007.
4.2. Informative References
[RFC2607] Aboba, B. and J. Vollbrecht, "Proxy Chaining and Policy
Implementation in Roaming", RFC 2607, June 1999.
[RFC2618] Aboba, B. and G. Zorn, "RADIUS Authentication Client
MIB", RFC 2618, June 1999.
[RFC2866] Rigney, C., "RADIUS Accounting", RFC 2866, June 2000.
[RFC2869] Rigney, C., Willats, W., and P. Calhoun, "RADIUS
Extensions", RFC 2869, June 2000.
[RFC3162] Aboba, B., Zorn, G., and D. Mitton, "RADIUS and IPv6",
RFC 3162, August 2001.
[RFC3315] Droms, R., Ed., Bound, J., Volz, B., Lemon, T., Perkins,
C., and M. Carney, "Dynamic Host Configuration Protocol
for IPv6 (DHCPv6)", RFC 3315, July 2003.
Nelson & DeKok Standards Track [Page 25]
^L
RFC 5080 RADIUS Issues & Fixes December 2007
[RFC3576] Chiba, M., Dommety, G., Eklund, M., Mitton, D., and B.
Aboba, "Dynamic Authorization Extensions to Remote
Authentication Dial In User Service (RADIUS)", RFC 3576,
July 2003.
[RFC3579] Aboba, B. and P. Calhoun, "RADIUS (Remote Authentication
Dial In User Service) Support For Extensible
Authentication Protocol (EAP)", RFC 3579, September 2003.
[RFC3580] Congdon, P., Aboba, B., Smith, A., Zorn, G., and J.
Roese, "IEEE 802.1X Remote Authentication Dial In User
Service (RADIUS) Usage Guidelines", RFC 3580, September
2003.
[RFC3748] Aboba, B., Blunk, L., Vollbrecht, J., Carlson, J., and H.
Levkowetz, Ed., "Extensible Authentication Protocol
(EAP)", RFC 3748, June 2004.
[RFC3927] Cheshire, S., Aboba, B., and E. Guttman, "Dynamic
Configuration of IPv4 Link-Local Addresses", RFC 3927,
May 2005.
[RFC4282] Aboba, B., Beadles, M., Arkko, J., and P. Eronen, "The
Network Access Identifier", RFC 4282, December 2005.
[RFC4668] Nelson, D., "RADIUS Authentication Client MIB for IPv6",
RFC 4668, August 2006.
[RFC4669] Nelson, D., "RADIUS Authentication Server MIB for IPv6",
RFC 4669, August 2006.
[RFC4862] Thomson, S., Narten, T., and T. Jinmei, "IPv6 Stateless
Address Autoconfiguration", RFC 4862, September 2007.
[PANA] Forsberg, D., Ohba, Y.,Ed., Patil, B., Tschofenig, H.,
and A. Yegin, "Protocol for Carrying Authentication for
Network Access (PANA)", Work in Progress.
Nelson & DeKok Standards Track [Page 26]
^L
RFC 5080 RADIUS Issues & Fixes December 2007
Acknowledgments
The authors would like to acknowledge Glen Zorn and Bernard Aboba for
contributions to this document.
The alternate algorithm to [RFC3579] Section 2.6.1 that is described
in Section 2.1.2 of this document was designed by Raghu Dendukuri.
The text discussing retransmissions in Section 2.2.1 is taken with
minor edits from Section 9 of" Protocol for Carrying Authentication
for Network Access (PANA)" [PANA].
Alan DeKok wishes to acknowledge the support of Quiconnect Inc.,
where he was employed during much of the work on this document.
David Nelson wishes to acknowledge the support of Enterasys Networks,
where he was employed during much of the work on this document.
Authors' Addresses
David B. Nelson
Elbrys Networks, Inc.
75 Rochester Ave., Unit 3
Portsmouth, N.H. 03801 USA
Phone: +1.603.570.2636
EMail: dnelson@elbrysnetworks.com
Alan DeKok
The FreeRADIUS Server Project
http://freeradius.org/
EMail: aland@freeradius.org
Nelson & DeKok Standards Track [Page 27]
^L
RFC 5080 RADIUS Issues & Fixes December 2007
Full Copyright Statement
Copyright (C) The IETF Trust (2007).
This document is subject to the rights, licenses and restrictions
contained in BCP 78, and except as set forth therein, the authors
retain all their rights.
This document and the information contained herein are provided on an
"AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY, THE IETF TRUST AND
THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS
OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF
THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
Intellectual Property
The IETF takes no position regarding the validity or scope of any
Intellectual Property Rights or other rights that might be claimed to
pertain to the implementation or use of the technology described in
this document or the extent to which any license under such rights
might or might not be available; nor does it represent that it has
made any independent effort to identify any such rights. Information
on the procedures with respect to rights in RFC documents can be
found in BCP 78 and BCP 79.
Copies of IPR disclosures made to the IETF Secretariat and any
assurances of licenses to be made available, or the result of an
attempt made to obtain a general license or permission for the use of
such proprietary rights by implementers or users of this
specification can be obtained from the IETF on-line IPR repository at
http://www.ietf.org/ipr.
The IETF invites any interested party to bring to its attention any
copyrights, patents or patent applications, or other proprietary
rights that may cover technology that may be required to implement
this standard. Please address the information to the IETF at
ietf-ipr@ietf.org.
Nelson & DeKok Standards Track [Page 28]
^L
|