Commit c683c7d
committed
ksmbd: fix heap-based overflow in set_ntacl_dacl()
The testcase use SMB2_SET_INFO_HE command to set a malformed file attribute
under the label `security.NTACL`. SMB2_QUERY_INFO_HE command in testcase
trigger the following overflow.
[ 4712.003781] ==================================================================
[ 4712.003790] BUG: KASAN: slab-out-of-bounds in build_sec_desc+0x842/0x1dd0 [ksmbd]
[ 4712.003807] Write of size 1060 at addr ffff88801e34c068 by task kworker/0:0/4190
[ 4712.003813] CPU: 0 PID: 4190 Comm: kworker/0:0 Not tainted 5.19.0-rc5 #1
[ 4712.003850] Workqueue: ksmbd-io handle_ksmbd_work [ksmbd]
[ 4712.003867] Call Trace:
[ 4712.003870] <TASK>
[ 4712.003873] dump_stack_lvl+0x49/0x5f
[ 4712.003935] print_report.cold+0x5e/0x5cf
[ 4712.003972] ? ksmbd_vfs_get_sd_xattr+0x16d/0x500 [ksmbd]
[ 4712.003984] ? cmp_map_id+0x200/0x200
[ 4712.003988] ? build_sec_desc+0x842/0x1dd0 [ksmbd]
[ 4712.004000] kasan_report+0xaa/0x120
[ 4712.004045] ? build_sec_desc+0x842/0x1dd0 [ksmbd]
[ 4712.004056] kasan_check_range+0x100/0x1e0
[ 4712.004060] memcpy+0x3c/0x60
[ 4712.004064] build_sec_desc+0x842/0x1dd0 [ksmbd]
[ 4712.004076] ? parse_sec_desc+0x580/0x580 [ksmbd]
[ 4712.004088] ? ksmbd_acls_fattr+0x281/0x410 [ksmbd]
[ 4712.004099] smb2_query_info+0xa8f/0x6110 [ksmbd]
[ 4712.004111] ? psi_group_change+0x856/0xd70
[ 4712.004148] ? update_load_avg+0x1c3/0x1af0
[ 4712.004152] ? asym_cpu_capacity_scan+0x5d0/0x5d0
[ 4712.004157] ? xas_load+0x23/0x300
[ 4712.004162] ? smb2_query_dir+0x1530/0x1530 [ksmbd]
[ 4712.004173] ? _raw_spin_lock_bh+0xe0/0xe0
[ 4712.004179] handle_ksmbd_work+0x30e/0x1020 [ksmbd]
[ 4712.004192] process_one_work+0x778/0x11c0
[ 4712.004227] ? _raw_spin_lock_irq+0x8e/0xe0
[ 4712.004231] worker_thread+0x544/0x1180
[ 4712.004234] ? __cpuidle_text_end+0x4/0x4
[ 4712.004239] kthread+0x282/0x320
[ 4712.004243] ? process_one_work+0x11c0/0x11c0
[ 4712.004246] ? kthread_complete_and_exit+0x30/0x30
[ 4712.004282] ret_from_fork+0x1f/0x30
This patch add the buffer validation for security descriptor that is
stored by malformed SMB2_SET_INFO_HE command. and allocate large
response buffer about SMB2_O_INFO_SECURITY file info class.
Signed-off-by: Namjae Jeon <[email protected]>1 parent fbf3f2d commit c683c7d
4 files changed
+118
-56
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
540 | 540 | | |
541 | 541 | | |
542 | 542 | | |
543 | | - | |
544 | | - | |
545 | | - | |
| 543 | + | |
| 544 | + | |
| 545 | + | |
| 546 | + | |
546 | 547 | | |
547 | 548 | | |
548 | 549 | | |
| |||
3024 | 3025 | | |
3025 | 3026 | | |
3026 | 3027 | | |
3027 | | - | |
| 3028 | + | |
3028 | 3029 | | |
3029 | 3030 | | |
3030 | 3031 | | |
| |||
3881 | 3882 | | |
3882 | 3883 | | |
3883 | 3884 | | |
| 3885 | + | |
| 3886 | + | |
| 3887 | + | |
| 3888 | + | |
| 3889 | + | |
| 3890 | + | |
| 3891 | + | |
| 3892 | + | |
| 3893 | + | |
3884 | 3894 | | |
3885 | 3895 | | |
3886 | 3896 | | |
| |||
3890 | 3900 | | |
3891 | 3901 | | |
3892 | 3902 | | |
3893 | | - | |
3894 | | - | |
3895 | | - | |
| 3903 | + | |
3896 | 3904 | | |
3897 | 3905 | | |
3898 | 3906 | | |
| |||
5187 | 5195 | | |
5188 | 5196 | | |
5189 | 5197 | | |
5190 | | - | |
| 5198 | + | |
5191 | 5199 | | |
5192 | 5200 | | |
5193 | 5201 | | |
| |||
5233 | 5241 | | |
5234 | 5242 | | |
5235 | 5243 | | |
5236 | | - | |
5237 | | - | |
5238 | | - | |
5239 | | - | |
5240 | | - | |
| 5244 | + | |
| 5245 | + | |
| 5246 | + | |
| 5247 | + | |
| 5248 | + | |
| 5249 | + | |
| 5250 | + | |
| 5251 | + | |
5241 | 5252 | | |
5242 | 5253 | | |
5243 | 5254 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
724 | 724 | | |
725 | 725 | | |
726 | 726 | | |
| 727 | + | |
727 | 728 | | |
728 | 729 | | |
729 | 730 | | |
| |||
737 | 738 | | |
738 | 739 | | |
739 | 740 | | |
740 | | - | |
741 | | - | |
742 | | - | |
| 741 | + | |
| 742 | + | |
| 743 | + | |
| 744 | + | |
| 745 | + | |
| 746 | + | |
| 747 | + | |
| 748 | + | |
| 749 | + | |
| 750 | + | |
| 751 | + | |
| 752 | + | |
| 753 | + | |
743 | 754 | | |
744 | 755 | | |
745 | 756 | | |
| |||
912 | 923 | | |
913 | 924 | | |
914 | 925 | | |
915 | | - | |
| 926 | + | |
916 | 927 | | |
917 | 928 | | |
918 | 929 | | |
| |||
972 | 983 | | |
973 | 984 | | |
974 | 985 | | |
975 | | - | |
976 | | - | |
977 | 986 | | |
978 | 987 | | |
| 988 | + | |
| 989 | + | |
| 990 | + | |
| 991 | + | |
| 992 | + | |
| 993 | + | |
| 994 | + | |
| 995 | + | |
| 996 | + | |
| 997 | + | |
| 998 | + | |
| 999 | + | |
979 | 1000 | | |
980 | | - | |
981 | | - | |
982 | 1001 | | |
983 | | - | |
| 1002 | + | |
| 1003 | + | |
| 1004 | + | |
984 | 1005 | | |
985 | 1006 | | |
986 | 1007 | | |
| |||
1014 | 1035 | | |
1015 | 1036 | | |
1016 | 1037 | | |
1017 | | - | |
1018 | | - | |
| 1038 | + | |
| 1039 | + | |
1019 | 1040 | | |
1020 | 1041 | | |
1021 | 1042 | | |
1022 | | - | |
1023 | | - | |
1024 | | - | |
| 1043 | + | |
| 1044 | + | |
| 1045 | + | |
1025 | 1046 | | |
1026 | 1047 | | |
1027 | | - | |
| 1048 | + | |
1028 | 1049 | | |
1029 | 1050 | | |
1030 | 1051 | | |
1031 | 1052 | | |
1032 | 1053 | | |
| 1054 | + | |
1033 | 1055 | | |
1034 | 1056 | | |
| 1057 | + | |
| 1058 | + | |
| 1059 | + | |
| 1060 | + | |
| 1061 | + | |
| 1062 | + | |
1035 | 1063 | | |
1036 | 1064 | | |
1037 | 1065 | | |
| |||
1042 | 1070 | | |
1043 | 1071 | | |
1044 | 1072 | | |
| 1073 | + | |
1045 | 1074 | | |
1046 | 1075 | | |
1047 | 1076 | | |
1048 | 1077 | | |
1049 | 1078 | | |
| 1079 | + | |
| 1080 | + | |
| 1081 | + | |
| 1082 | + | |
| 1083 | + | |
| 1084 | + | |
| 1085 | + | |
| 1086 | + | |
| 1087 | + | |
| 1088 | + | |
| 1089 | + | |
1050 | 1090 | | |
1051 | 1091 | | |
1052 | 1092 | | |
| |||
1091 | 1131 | | |
1092 | 1132 | | |
1093 | 1133 | | |
1094 | | - | |
1095 | | - | |
| 1134 | + | |
1096 | 1135 | | |
1097 | 1136 | | |
1098 | 1137 | | |
| |||
1187 | 1226 | | |
1188 | 1227 | | |
1189 | 1228 | | |
1190 | | - | |
| 1229 | + | |
1191 | 1230 | | |
1192 | 1231 | | |
1193 | 1232 | | |
| |||
1196 | 1235 | | |
1197 | 1236 | | |
1198 | 1237 | | |
1199 | | - | |
| 1238 | + | |
1200 | 1239 | | |
1201 | 1240 | | |
1202 | | - | |
1203 | | - | |
1204 | | - | |
1205 | | - | |
1206 | | - | |
1207 | | - | |
| 1241 | + | |
| 1242 | + | |
| 1243 | + | |
| 1244 | + | |
| 1245 | + | |
| 1246 | + | |
| 1247 | + | |
| 1248 | + | |
| 1249 | + | |
1208 | 1250 | | |
1209 | 1251 | | |
1210 | | - | |
1211 | | - | |
1212 | | - | |
1213 | | - | |
1214 | | - | |
| 1252 | + | |
| 1253 | + | |
1215 | 1254 | | |
1216 | | - | |
1217 | | - | |
1218 | | - | |
1219 | | - | |
1220 | | - | |
| 1255 | + | |
| 1256 | + | |
1221 | 1257 | | |
1222 | 1258 | | |
1223 | | - | |
| 1259 | + | |
1224 | 1260 | | |
1225 | 1261 | | |
1226 | 1262 | | |
1227 | 1263 | | |
1228 | | - | |
1229 | | - | |
| 1264 | + | |
1230 | 1265 | | |
1231 | 1266 | | |
1232 | 1267 | | |
1233 | 1268 | | |
1234 | 1269 | | |
1235 | 1270 | | |
1236 | 1271 | | |
| 1272 | + | |
1237 | 1273 | | |
| 1274 | + | |
| 1275 | + | |
| 1276 | + | |
| 1277 | + | |
| 1278 | + | |
| 1279 | + | |
1238 | 1280 | | |
1239 | 1281 | | |
1240 | | - | |
1241 | | - | |
1242 | 1282 | | |
1243 | 1283 | | |
1244 | 1284 | | |
| |||
1250 | 1290 | | |
1251 | 1291 | | |
1252 | 1292 | | |
| 1293 | + | |
1253 | 1294 | | |
| 1295 | + | |
| 1296 | + | |
| 1297 | + | |
| 1298 | + | |
| 1299 | + | |
| 1300 | + | |
| 1301 | + | |
1254 | 1302 | | |
1255 | 1303 | | |
1256 | 1304 | | |
| |||
1260 | 1308 | | |
1261 | 1309 | | |
1262 | 1310 | | |
1263 | | - | |
1264 | | - | |
1265 | 1311 | | |
1266 | 1312 | | |
1267 | 1313 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
196 | 196 | | |
197 | 197 | | |
198 | 198 | | |
199 | | - | |
| 199 | + | |
200 | 200 | | |
201 | 201 | | |
202 | 202 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1707 | 1707 | | |
1708 | 1708 | | |
1709 | 1709 | | |
| 1710 | + | |
| 1711 | + | |
| 1712 | + | |
| 1713 | + | |
| 1714 | + | |
1710 | 1715 | | |
1711 | 1716 | | |
1712 | 1717 | | |
| |||
0 commit comments