第 4 章 提案手法のツール化と実験
4.5 機能評価 (4) セキュリティ知識との連携
4.5.1 Rails に対応した CWE, CAPEC のサブグラフの作成
4.5.1.4 コマンド抽象化ライブラリの更新
コマンド抽象化ライブラリのSC,RCと、選択されたCWE,CAPECとを対応付 ける。CVEに登録されたRailsに関する脆弱性で、実装コードの問題箇所とCWE の関係が特定できる場合は、その関係を登録する。この段階で、分類対象となる コマンドを表4.14に示す。対象となるコマンドの数は、SCで33個、RCで15個 であり、それはツールの開発者で十分に分類可能な数である。また、Railsの実装 コードを関連付けられたCWEは31、CAPECは8となった。
Railsなどに固有なMass Assignmentの脆弱性については、CWE-915が該当 するが、ドメイン選択、フレームワーク選択で選択したCWEには含まれていな い。そのため、選択でもれたCWEについては個別に追加する。
表4.14: コマンド抽象化ライブラリのコマンド数とSC,RC数
Lib. Total SC RC SC example RC example
Ruby 29 1 5 escapeHTML eval, system
Rails 145 15 10 html_escape html_safe, raw, redirect_to Devise 44 9 0 sign_in, sign_out, sign_up –
CanCan 9 8 0 authorize!, can, cannot –
こうして得られたCWE、CAPECとコマンド抽象化ライブラリのSC,RCとの 関係をグラフで表示すると、図4.12のようになる。ここで、SCを緑の楕円、RC を赤の楕円で示す。CWEのタイプを、Viewは白色の四角、Categoryをシアン色
の四角、Weaknessをピンク色の四角で示す。枠線の色は、関連するコマンドが
SCの場合は緑、RCの場合は赤、両方の場合は青となる。ノード間の接続線も同 様の配色としている。CAPECについても、Categoryをシアン色の四角、Attack
Patternをピンク色の四角で示す。アクセス制御に関するSCと、クロスサイトス
クリプティングに関係する、SCとRCが多い事がわかる。
比較のため、図4.13にRailsのコマンドと対応できなかったCWE、CAPECも 含めた関係図を示す。関連がなかったCWE,CAPECはグレーで表示する。CWEに は400近いエントリが残っており、その全体からみると、Railsのコード実装と対 応するCWEの数、31は全体の1割弱であった。
表4.15: CWE,CAPECの選択数の推移
Reduction Rails sample_app_3rd_edition Railsgoat Type ALL Web app. Rails CALib SC RC CALib SC RC CALib SC RC
CWE View 32 2 2 2 2 2 2 2 2 2 2 2
Category 244 47 36 15 12 9 13 5 9 17 9 16
Weakness 719 418 342 13 8 10 10 5 0 21 15 10
C. E. 8 7 5 1 1 0 0 0 0 0 0 0
total 1003 474 383 31 23 21 25 12 11 40 26 28
CAPEC View 8 0 0 0 0 0 0 0 0 0 0 0
Category 73 20 16 1 1 0 2 2 0 1 1 0
Attack P. 463 267 191 8 5 5 9 6 3 10 7 3
CWE-809
CWE-810 CWE-811 CWE-812
CWE-813 CWE-814 CWE-817
CWE-928
CWE-929 CWE-930
CWE-931 CWE-932 CWE-935
CWE-936
CWE-19 CWE-20
CWE-21 CWE-22
CWE-442
CWE-79
CWE-352
CWE-78
CWE-89 CWE-287
CWE-285
CWE-77
CWE-74
CAPEC-139
CAPEC-18
CAPEC-66 CAPEC-88 validates
redirect_to load_resource load_and_authorize_resource
skip_authorize_resource authorize!
can cannot
can?
has_role?
CWE-521
CAPEC-114
authenticate_user!
authenticate_scope!
allow_params_authentication!
require_no_authentication
sign_up sign_in sign_out
CAPEC-16 CAPEC-49
CAPEC-55 CAPEC-70
CWE-94 CWE-943
system
Kernel.exec xstring_literal CAPEC-232
escapeHTML h html_escape html_escape_once
json_escape sanitize link_to raw content_tag html_safe
sanitize_sql_for_conditions find where constantize
CWE-915 attr_accessible
CWE-95 CAPEC-35
eval
CAPEC-467 CAPEC-62
protect_from_forgery CAPEC-225
CAPEC-21 CAPEC-122
CAPEC-342 File.umask
図 4.12: Railsに関連するCWEとCAPECのグラフ表現
CWE-809
CWE-810 CWE-811 CWE-812
CWE-813
CWE-814 CWE-815
CWE-816 CWE-817
CWE-818
CWE-819
CWE-928
CWE-929 CWE-930
CWE-931 CWE-932 CWE-933
CWE-934
CWE-935
CWE-936
CWE-937 CWE-938
CWE-133
CWE-251 CWE-134
CWE-135
CWE-597 CAPEC-135
CWE-137 CWE-171
CWE-138
CWE-188
CWE-228 CWE-16
CWE-169 CWE-170
CWE-172
CWE-178
CWE-179 CWE-180
CWE-181 CWE-182
CWE-183 CWE-184
CWE-185
CWE-187 CWE-478
CWE-486
CWE-595 CWE-596 CWE-697
CWE-768
CAPEC-267
CAPEC-3 CAPEC-43 CAPEC-52
CAPEC-53 CAPEC-64
CAPEC-71 CAPEC-72
CAPEC-78 CAPEC-79 CAPEC-80
CWE-189
CWE-128 CWE-190
CWE-198
CWE-682
CWE-839 CWE-19
CWE-199
CWE-461
CWE-116 CWE-118
CWE-20
CWE-471
CAPEC-230 CAPEC-231
CAPEC-484 CAPEC-99
CWE-200
CWE-216 CWE-221
CWE-779 CWE-2
CWE-15 CWE-435
CWE-552
CWE-650
CWE-21 CWE-22
CWE-41 CWE-59
CWE-66 CWE-310
CWE-320 CWE-311
CWE-325
CWE-326 CWE-327
CWE-328 CWE-329
CWE-780
CAPEC-485 CWE-321
CWE-322 CWE-323 CWE-324
CWE-442
CWE-113
CWE-425
CWE-444
CWE-601 CWE-611
CWE-644 CWE-646
CWE-647
CWE-776 CWE-784
CWE-79 CWE-827
CWE-352
CWE-462 CWE-463
CWE-464
CWE-60
CWE-62 CWE-61
CWE-78
CWE-88 CWE-89
CWE-90
CWE-91 CWE-287
CWE-306 CWE-307 CWE-798
CWE-434 CWE-639 CWE-829
CWE-862
CWE-863
CWE-99 CWE-209
CWE-219
CWE-250
CWE-538 CWE-732
CWE-312
CWE-759 CWE-285
CWE-319
CWE-77 CWE-256 CWE-522
CWE-523
CWE-613 CWE-620
CWE-640
CWE-384
CWE-215 CWE-548
CWE-112
CAPEC-31
CAPEC-34 CAPEC-63 CWE-114
CAPEC-108 CWE-115
CWE-117
CWE-838
CAPEC-104
CAPEC-18
CAPEC-73
CAPEC-81
CAPEC-86 CAPEC-106
CAPEC-93
CAPEC-92
CWE-131 CWE-140
CWE-147 CWE-148
CWE-149 CWE-150
CWE-151 CWE-152 CWE-153
CWE-154 CWE-155
CWE-156
CWE-157
CWE-158 CWE-159
CWE-790
CAPEC-15 CWE-141 CWE-142 CWE-143 CWE-144 CWE-145
CWE-146
CAPEC-6
CAPEC-460 CAPEC-468
CAPEC-13 CAPEC-146
CAPEC-76 CAPEC-77 CAPEC-41
CWE-56 CWE-160
CWE-162
CWE-164
CWE-166 CWE-167 CWE-168
CWE-161 CWE-37
CWE-50
CWE-163 CWE-42 CWE-46 CWE-49 CWE-54
CWE-43 CWE-52
CWE-165 CWE-45 CWE-53
CWE-173
CWE-174 CWE-175
CWE-176 CWE-177
CAPEC-4
CWE-942 CAPEC-174 CAPEC-182
CWE-186 CWE-625
CWE-191 CWE-193 CWE-470 CWE-606 CWE-622
CWE-626
CWE-73 CWE-74
CWE-692
CAPEC-101 CAPEC-109 CAPEC-110
CAPEC-136 CAPEC-139
CAPEC-171
CAPEC-199 CAPEC-22
CAPEC-244
CAPEC-250 CAPEC-264 CAPEC-265 CAPEC-28
CAPEC-32 CAPEC-473
CAPEC-66
CAPEC-7
CAPEC-83 CAPEC-88
CAPEC-91 validates
CWE-201
CWE-202 CWE-203
CWE-212 CWE-213 CWE-214 CWE-226
CWE-359 CWE-497 CWE-524
CWE-526 CWE-598 CWE-612
CAPEC-59 CAPEC-60
CAPEC-12
CAPEC-217
CWE-204
CWE-205 CWE-208
CWE-206 CWE-207 CAPEC-224 CAPEC-462 CWE-210
CWE-211 CWE-550
CAPEC-215
CAPEC-463
CAPEC-54 CWE-535 CWE-536
CWE-220 CWE-493
CAPEC-474 CWE-433
CWE-23 CWE-36
CAPEC-213
CAPEC-23 redirect_to
CWE-222
CWE-223 CWE-224 CWE-356 CWE-396 CWE-397 CWE-451
CWE-778 CWE-244 CWE-229
CWE-233 CWE-237
CWE-241 CWE-230 CWE-231 CWE-232
CWE-24 CWE-25 CWE-26 CWE-27 CWE-28 CWE-29 CWE-30 CWE-31 CWE-32 CWE-33 CWE-34 CWE-35
CWE-234 CWE-235
CWE-236 CAPEC-39
CWE-238 CWE-239 CWE-240
CAPEC-48
CAPEC-470 CWE-257
CAPEC-49
CWE-258
CWE-259 CAPEC-188
CAPEC-189 CAPEC-190
CAPEC-191
CAPEC-192
CAPEC-205
CWE-260 CWE-261
CAPEC-55 CWE-262
CAPEC-16 CAPEC-70
CWE-263 CWE-276
CAPEC-1 CAPEC-127
CAPEC-19 CWE-277 CWE-278
CWE-279 CWE-281 CWE-926 CWE-927
CAPEC-17
CAPEC-51
CAPEC-87
load_resource load_and_authorize_resource
skip_authorize_resource authorize!
can cannot
can?
has_role?
CWE-301
CWE-303
CWE-304 CWE-308 CWE-309
CWE-521
CWE-592 CWE-603 CWE-645
CWE-804
CWE-836
CAPEC-114
CAPEC-57
CAPEC-94 authenticate_user!
authenticate_scope!
allow_params_authentication!
require_no_authentication
sign_up sign_in
sign_out
CWE-288
CAPEC-56 CWE-289
CWE-290
CWE-291 CWE-293
CWE-350 CAPEC-21
CAPEC-459 CAPEC-461
CWE-294
CAPEC-102
CAPEC-90
CWE-302
CAPEC-274 CWE-305 CAPEC-225
CAPEC-36
CAPEC-40
CAPEC-62 CWE-614 CAPEC-117
CAPEC-155 CAPEC-157
CAPEC-158 CAPEC-167
CAPEC-204 CAPEC-258
CAPEC-259
CAPEC-260 CAPEC-37
CAPEC-383
CAPEC-384
CAPEC-385 CAPEC-386
CAPEC-387
CAPEC-388 CAPEC-389 CAPEC-477
CAPEC-65 CWE-313
CWE-314
CWE-315 CWE-316 CWE-317
CWE-318
CAPEC-74 CAPEC-68
CAPEC-112 CAPEC-20 CWE-916
CAPEC-97
CAPEC-142
CAPEC-464
CAPEC-467 CWE-38 CWE-39 CWE-40
CWE-369
CWE-372
CWE-44 CWE-47 CWE-48 CWE-51 CWE-55 CWE-57 CWE-58 CWE-424
CAPEC-122
CWE-436
CWE-439 CWE-437
CWE-86 CAPEC-105
CAPEC-273 CAPEC-33
CWE-467 CWE-468 CWE-469
CWE-472
CWE-607
CWE-500 CWE-502
CWE-549 CAPEC-50
CWE-525
CWE-527 CWE-528
CWE-529
CWE-530 CWE-531 CWE-532
CWE-533 CWE-534 CWE-542 CWE-539
CWE-540
CWE-651 CAPEC-95
CWE-541 CWE-615 CWE-551
CWE-553
CWE-564 CWE-566
CAPEC-132 CAPEC-35 CWE-593
CAPEC-115
CAPEC-194
CWE-621
CWE-624
CWE-777 CWE-627 CWE-638
CWE-641
CWE-643
CAPEC-209
CWE-652
CAPEC-124
CAPEC-128 CAPEC-129
CWE-694 CWE-689
CAPEC-232
CAPEC-180
CAPEC-234
CAPEC-61
CWE-75 CWE-93
CWE-94 CWE-943
CAPEC-84 CWE-76
CWE-760
CWE-917 CAPEC-11
CAPEC-75 system Kernel.exec
xstring_literal CWE-80
CWE-81
CWE-83
CWE-84 CWE-85 CWE-87
CAPEC-198
CAPEC-243
CAPEC-245
CAPEC-246 CAPEC-247
escapeHTML h html_escape html_escape_once json_escape
sanitize link_to raw content_tag html_safe
CWE-791 CWE-792 CWE-795
CWE-793 CWE-794
CWE-796 CWE-797 CWE-82 CWE-830 CWE-939
CAPEC-133 sanitize_sql_for_conditions
find where constantize
CWE-914 CWE-915 attr_accessible
CWE-95 CWE-96
eval
CWE-97 CAPEC-111
protect_from_forgery
CAPEC-196
CAPEC-27 CAPEC-26
CAPEC-233
CAPEC-236 CAPEC-30
CAPEC-58
CAPEC-341 CAPEC-342 CAPEC-344
CAPEC-351 CAPEC-357
CAPEC-358 CAPEC-359
CAPEC-360
CAPEC-361 CAPEC-367
CAPEC-370
CAPEC-374 CAPEC-376
CAPEC-378 CAPEC-187
CAPEC-107 CAPEC-237 CAPEC-499
CAPEC-120 CAPEC-221 CAPEC-503
CAPEC-140 CAPEC-143 CAPEC-144
CAPEC-166
CAPEC-178 CAPEC-543
CAPEC-544
CAPEC-226
CAPEC-197
CAPEC-200 CAPEC-201
CAPEC-202 CAPEC-206
CAPEC-207
CAPEC-208 CAPEC-510
CAPEC-219
CAPEC-228 CAPEC-229 CAPEC-491
CAPEC-235
CAPEC-238
CAPEC-239 CAPEC-29
CAPEC-466
CAPEC-475 CAPEC-476
CAPEC-501 File.umask
図4.13: Railsに関連するCWEとCAPECのグラフ表現(SC,RCと関連しな いCWE、CAPECを表示)