-
Notifications
You must be signed in to change notification settings - Fork 3
/
bugs_ja.htm
7183 lines (5801 loc) · 349 KB
/
bugs_ja.htm
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
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>Bug Patterns - Find Security Bugs</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<link rel="shortcut icon" href="images/favicon.png">
<link href="//fonts.googleapis.com/css?family=Squada+One" rel="stylesheet" type="text/css"/>
<link href="css/bootstrap.css" rel="stylesheet" media="screen">
<link href="css/font-awesome.css" rel="stylesheet" media="screen">
<link href="css/fsb-custom-theme.css" rel="stylesheet" media="screen">
<link href="css/agency.css" rel="stylesheet" media="screen">
<link href="css/prism.css" rel="stylesheet" media="screen">
<!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
<![endif]-->
</head>
<body>
<!--<div class="navbar navbar-default navbar-fixed-top">-->
<div class="navbar navbar-expand-sm fixed-top navbar-dark bg-primary">
<div class="container">
<a class="navbar-brand" href="/">{<i class="fa fa-bug"></i>}<span style="display:none">Find Security Bugs</span></a>
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarResponsive" aria-controls="navbarResponsive" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div id="navbarResponsive" class="navbar-collapse collapse">
<ul class="nav navbar-nav">
<li class=''><a class="nav-link" href="/">Home</a></li>
<li class="dropdown ">
<a href="#" class="nav-link dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">How To <span class="caret"></span></a>
<ul class="dropdown-menu" role="menu">
<li class="dropdown-header">Use the plugin with..</li>
<li><a class="dropdown-item" href="tutorials.htm#Maven">Maven</a></li>
<li><a class="dropdown-item" href="tutorials.htm#Eclipse">Eclipse</a></li>
<li><a class="dropdown-item" href="tutorials.htm#NetBeans">NetBeans</a></li>
<li><a class="dropdown-item" href="tutorials.htm#IntelliJ">IntelliJ</a></li>
<li><a class="dropdown-item" href="tutorials.htm#Jenkins">Jenkins</a></li>
<li><a class="dropdown-item" href="tutorials.htm#Sonar">Sonar</a></li>
<li class="divider"></li>
<li class="dropdown-header">Knowledge base</li>
<li><a class="dropdown-item" href="security.htm">Getting started in security</a></li>
</ul>
</li>
<li class='active'><a class="nav-link" href="bugs.htm">Bug Patterns</a></li>
<li class=''><a class="nav-link" href="download.htm">Download</a></li>
</ul>
<ul class="nav navbar-nav navbar-right ml-auto">
<li class=''><a class="nav-link" href="license.htm">License</a></li>
</ul>
</div><!--/.nav-collapse -->
</div>
</div>
<br/><br/>
<div class="container">
<div class="jumbotron jumbotron-ad hidden-print">
<h1><i class="fa fa-crosshairs"></i> Bugs Patterns</h1>
<p>The complete list of descriptions given when FindBugs identify potential weaknesses.</p>
</div>
</div>
<div class="container">
<div class="row">
<div class="col-md-11" id="mainCol">
<h2>Table of Contents</h2>
<p>
<a class="btn btn-primary" data-toggle="collapse" href="#collapseExample" aria-expanded="false" aria-controls="collapseExample">
Display / Hide
</a>
</p>
<div class="collapse" id="collapseExample">
<div class="card card-block">
<ul>
<li><a href="#PREDICTABLE_RANDOM">
予測可能な擬似乱数生成器 (PREDICTABLE_RANDOM)
</a></li>
<li><a href="#PREDICTABLE_RANDOM_SCALA">
予測可能な擬似乱数生成器 (Scala) (PREDICTABLE_RANDOM_SCALA)
</a></li>
<li><a href="#SERVLET_PARAMETER">
信頼できないサーブレットパラメーター (SERVLET_PARAMETER)
</a></li>
<li><a href="#SERVLET_CONTENT_TYPE">
信頼できない Content-Type ヘッダー (SERVLET_CONTENT_TYPE)
</a></li>
<li><a href="#SERVLET_SERVER_NAME">
信頼できない Host ヘッダー (SERVLET_SERVER_NAME)
</a></li>
<li><a href="#SERVLET_SESSION_ID">
信頼できないセッション Cookie の値 (SERVLET_SESSION_ID)
</a></li>
<li><a href="#SERVLET_QUERY_STRING">
信頼できないクエリー文字列 (SERVLET_QUERY_STRING)
</a></li>
<li><a href="#SERVLET_HEADER">
信頼できない HTTP ヘッダー (SERVLET_HEADER)
</a></li>
<li><a href="#SERVLET_HEADER_REFERER">
信頼できない Referer ヘッダー (SERVLET_HEADER_REFERER)
</a></li>
<li><a href="#SERVLET_HEADER_USER_AGENT">
信頼できない User-Agent ヘッダー (SERVLET_HEADER_USER_AGENT)
</a></li>
<li><a href="#COOKIE_USAGE">
Cookie 内に機密データの可能性 (COOKIE_USAGE)
</a></li>
<li><a href="#PATH_TRAVERSAL_IN">
潜在的なパストラバーサル (ファイル読み出し) (PATH_TRAVERSAL_IN)
</a></li>
<li><a href="#PATH_TRAVERSAL_OUT">
潜在的なパストラバーサル (ファイル書き込み) (PATH_TRAVERSAL_OUT)
</a></li>
<li><a href="#SCALA_PATH_TRAVERSAL_IN">
Scala API を使用した潜在的なパストラバーサル (ファイル読み出し) (SCALA_PATH_TRAVERSAL_IN)
</a></li>
<li><a href="#COMMAND_INJECTION">
潜在的なコマンドインジェクション (COMMAND_INJECTION)
</a></li>
<li><a href="#SCALA_COMMAND_INJECTION">
潜在的なコマンドインジェクション (Scala) (SCALA_COMMAND_INJECTION)
</a></li>
<li><a href="#WEAK_FILENAMEUTILS">
FilenameUtils は NULL バイトをフィルタリングしない (WEAK_FILENAMEUTILS)
</a></li>
<li><a href="#WEAK_TRUST_MANAGER">
任意の証明書を受け入れる TrustManager (WEAK_TRUST_MANAGER)
</a></li>
<li><a href="#WEAK_HOSTNAME_VERIFIER">
任意の署名付き証明書を受け入れる HostnameVerifier (WEAK_HOSTNAME_VERIFIER)
</a></li>
<li><a href="#JAXWS_ENDPOINT">
JAX-WS SOAP エンドポイントを発見 (JAXWS_ENDPOINT)
</a></li>
<li><a href="#JAXRS_ENDPOINT">
JAX-RS REST エンドポイントを発見 (JAXRS_ENDPOINT)
</a></li>
<li><a href="#TAPESTRY_ENDPOINT">
Tapestry ページを発見 (TAPESTRY_ENDPOINT)
</a></li>
<li><a href="#WICKET_ENDPOINT">
Wicket ページを発見 (WICKET_ENDPOINT)
</a></li>
<li><a href="#WEAK_MESSAGE_DIGEST_MD5">
MD2,MD4,MD5 は弱いハッシュ関数 (WEAK_MESSAGE_DIGEST_MD5)
</a></li>
<li><a href="#WEAK_MESSAGE_DIGEST_SHA1">
SHA-1 は弱いハッシュ関数 (WEAK_MESSAGE_DIGEST_SHA1)
</a></li>
<li><a href="#DEFAULT_HTTP_CLIENT">
デフォルトのコンストラクターを持つ DefaultHttpClient は TLS 1.2 と互換性がない (DEFAULT_HTTP_CLIENT)
</a></li>
<li><a href="#SSL_CONTEXT">
弱い SSLContext (SSL_CONTEXT)
</a></li>
<li><a href="#CUSTOM_MESSAGE_DIGEST">
独自メッセージダイジェスト (CUSTOM_MESSAGE_DIGEST)
</a></li>
<li><a href="#FILE_UPLOAD_FILENAME">
汚染されたファイル名の読み取り (FILE_UPLOAD_FILENAME)
</a></li>
<li><a href="#REDOS">
正規表現による DoS (ReDoS) (REDOS)
</a></li>
<li><a href="#XXE_XMLSTREAMREADER">
XXE に脆弱な XML 解析 (XMLStreamReader) (XXE_XMLSTREAMREADER)
</a></li>
<li><a href="#XXE_XPATH">
XXE に脆弱な XML 解析 (XPathExpression) (XXE_XPATH)
</a></li>
<li><a href="#XXE_SAXPARSER">
XXE に脆弱な XML 解析 (SAXParser) (XXE_SAXPARSER)
</a></li>
<li><a href="#XXE_XMLREADER">
XXE に脆弱な XML 解析 (XMLReader) (XXE_XMLREADER)
</a></li>
<li><a href="#XXE_DOCUMENT">
XXE に脆弱な XML 解析 (DocumentBuilder) (XXE_DOCUMENT)
</a></li>
<li><a href="#XXE_DTD_TRANSFORM_FACTORY">
XXE に脆弱な XML 解析 (TransformerFactory) (XXE_DTD_TRANSFORM_FACTORY)
</a></li>
<li><a href="#XXE_XSLT_TRANSFORM_FACTORY">
XXE に脆弱な XSLT 解析 (TransformerFactory) (XXE_XSLT_TRANSFORM_FACTORY)
</a></li>
<li><a href="#XPATH_INJECTION">
潜在的な XPath インジェクション (XPATH_INJECTION)
</a></li>
<li><a href="#STRUTS1_ENDPOINT">
Struts 1 アクション を発見 (STRUTS1_ENDPOINT)
</a></li>
<li><a href="#STRUTS2_ENDPOINT">
Struts 2 のエンドポイントを発見 (STRUTS2_ENDPOINT)
</a></li>
<li><a href="#SPRING_ENDPOINT">
Spring のエンドポイントを発見 (SPRING_ENDPOINT)
</a></li>
<li><a href="#SPRING_CSRF_PROTECTION_DISABLED">
Spring CSRF 保護の無効化 (SPRING_CSRF_PROTECTION_DISABLED)
</a></li>
<li><a href="#SPRING_CSRF_UNRESTRICTED_REQUEST_MAPPING">
Spring の制限のない RequestMapping による CSRF (SPRING_CSRF_UNRESTRICTED_REQUEST_MAPPING)
</a></li>
<li><a href="#CUSTOM_INJECTION">
潜在的インジェクション (独自) (CUSTOM_INJECTION)
</a></li>
<li><a href="#SQL_INJECTION">
潜在的な SQL インジェクション (SQL_INJECTION)
</a></li>
<li><a href="#SQL_INJECTION_TURBINE">
Turbine による潜在的な SQL インジェクション (SQL_INJECTION_TURBINE)
</a></li>
<li><a href="#SQL_INJECTION_HIBERNATE">
潜在的な SQL/HQL インジェクション (Hibernate) (SQL_INJECTION_HIBERNATE)
</a></li>
<li><a href="#SQL_INJECTION_JDO">
潜在的な SQL/JDOQL インジェクション (JDO) (SQL_INJECTION_JDO)
</a></li>
<li><a href="#SQL_INJECTION_JPA">
潜在的な SQL/JPQL インジェクション (JPA) (SQL_INJECTION_JPA)
</a></li>
<li><a href="#SQL_INJECTION_SPRING_JDBC">
潜在的な JDBC インジェクション (Spring JDBC) (SQL_INJECTION_SPRING_JDBC)
</a></li>
<li><a href="#SQL_INJECTION_JDBC">
潜在的な JDBC インジェクション (SQL_INJECTION_JDBC)
</a></li>
<li><a href="#SCALA_SQL_INJECTION_SLICK">
潜在的な Scala Slick インジェクション (SCALA_SQL_INJECTION_SLICK)
</a></li>
<li><a href="#SCALA_SQL_INJECTION_ANORM">
潜在的な Scala Anorm インジェクション (SCALA_SQL_INJECTION_ANORM)
</a></li>
<li><a href="#SQL_INJECTION_ANDROID">
潜在的な Android SQL インジェクション (SQL_INJECTION_ANDROID)
</a></li>
<li><a href="#LDAP_INJECTION">
潜在的な LDAP インジェクション (LDAP_INJECTION)
</a></li>
<li><a href="#SCRIPT_ENGINE_INJECTION">
スクリプトエンジン使用時の潜在的なコードインジェクション (SCRIPT_ENGINE_INJECTION)
</a></li>
<li><a href="#SPEL_INJECTION">
Spring 式使用時の潜在的なコードインジェクション (SPEL_INJECTION)
</a></li>
<li><a href="#EL_INJECTION">
式言語 (EL) 使用時の潜在的なコードインジェクション (EL_INJECTION)
</a></li>
<li><a href="#SEAM_LOG_INJECTION">
Seam ロギング呼び出しでの潜在的なコードインジェクション (SEAM_LOG_INJECTION)
</a></li>
<li><a href="#OGNL_INJECTION">
OGNL 式使用時の潜在的なコードインジェクション (OGNL_INJECTION)
</a></li>
<li><a href="#HTTP_RESPONSE_SPLITTING">
潜在的な HTTP レスポンス分割 (HTTP_RESPONSE_SPLITTING)
</a></li>
<li><a href="#CRLF_INJECTION_LOGS">
ログの潜在的な CRLF インジェクション (CRLF_INJECTION_LOGS)
</a></li>
<li><a href="#EXTERNAL_CONFIG_CONTROL">
潜在的な構成の外部制御 (EXTERNAL_CONFIG_CONTROL)
</a></li>
<li><a href="#BAD_HEXA_CONVERSION">
不正な16進数の連結 (BAD_HEXA_CONVERSION)
</a></li>
<li><a href="#HAZELCAST_SYMMETRIC_ENCRYPTION">
Hazelcast 対称暗号 (HAZELCAST_SYMMETRIC_ENCRYPTION)
</a></li>
<li><a href="#NULL_CIPHER">
NullCipher は安全でない (NULL_CIPHER)
</a></li>
<li><a href="#UNENCRYPTED_SOCKET">
暗号化されていないソケット (UNENCRYPTED_SOCKET)
</a></li>
<li><a href="#UNENCRYPTED_SERVER_SOCKET">
暗号化されていないサーバーソケット (UNENCRYPTED_SERVER_SOCKET)
</a></li>
<li><a href="#DES_USAGE">
DES は安全でない (DES_USAGE)
</a></li>
<li><a href="#TDES_USAGE">
DESede は安全でない (TDES_USAGE)
</a></li>
<li><a href="#RSA_NO_PADDING">
パディングなしの RSA 暗号は安全でない (RSA_NO_PADDING)
</a></li>
<li><a href="#HARD_CODE_PASSWORD">
ハードコードされたパスワード (HARD_CODE_PASSWORD)
</a></li>
<li><a href="#HARD_CODE_KEY">
ハードコードされた鍵 (HARD_CODE_KEY)
</a></li>
<li><a href="#UNSAFE_HASH_EQUALS">
安全でないハッシュの比較 (UNSAFE_HASH_EQUALS)
</a></li>
<li><a href="#STRUTS_FORM_VALIDATION">
入力検証がない Struts フォーム (STRUTS_FORM_VALIDATION)
</a></li>
<li><a href="#XSS_REQUEST_WRAPPER">
XSSRequestWrapper は弱い XSS 保護 (XSS_REQUEST_WRAPPER)
</a></li>
<li><a href="#BLOWFISH_KEY_SIZE">
短い鍵での Blowfish の使用 (BLOWFISH_KEY_SIZE)
</a></li>
<li><a href="#RSA_KEY_SIZE">
短い鍵長での RSA の使用 (RSA_KEY_SIZE)
</a></li>
<li><a href="#UNVALIDATED_REDIRECT">
未検証のリダイレクト (UNVALIDATED_REDIRECT)
</a></li>
<li><a href="#PLAY_UNVALIDATED_REDIRECT">
未検証のリダイレクト (Play Framework) (PLAY_UNVALIDATED_REDIRECT)
</a></li>
<li><a href="#SPRING_UNVALIDATED_REDIRECT">
未検証のリダイレクト (Spring アプリケーション) (SPRING_UNVALIDATED_REDIRECT)
</a></li>
<li><a href="#ENTITY_LEAK">
予期しないプロパティ漏洩 (ENTITY_LEAK)
</a></li>
<li><a href="#ENTITY_MASS_ASSIGNMENT">
一括割り当て (ENTITY_MASS_ASSIGNMENT)
</a></li>
<li><a href="#JSP_INCLUDE">
動的 JSP インクルード (JSP_INCLUDE)
</a></li>
<li><a href="#JSP_SPRING_EVAL">
Spring 式の動的変数 (JSP_SPRING_EVAL)
</a></li>
<li><a href="#JSP_JSTL_OUT">
特別な XML 文字のエスケープが無効 (JSP_JSTL_OUT)
</a></li>
<li><a href="#XSS_JSP_PRINT">
JSP 内の潜在的な XSS (XSS_JSP_PRINT)
</a></li>
<li><a href="#XSS_SERVLET">
サーブレット内の潜在的な XSS (XSS_SERVLET)
</a></li>
<li><a href="#XML_DECODER">
XMLDecoder の使用 (XML_DECODER)
</a></li>
<li><a href="#STATIC_IV">
静的な初期化ベクトル (Static IV) (STATIC_IV)
</a></li>
<li><a href="#ECB_MODE">
ECB モードは安全でない (ECB_MODE)
</a></li>
<li><a href="#PADDING_ORACLE">
パディングオラクル攻撃の影響を受けやすい暗号 (PADDING_ORACLE)
</a></li>
<li><a href="#CIPHER_INTEGRITY">
整合性のない暗号 (CIPHER_INTEGRITY)
</a></li>
<li><a href="#ESAPI_ENCRYPTOR">
ESAPI Encryptor の使用 (ESAPI_ENCRYPTOR)
</a></li>
<li><a href="#ANDROID_EXTERNAL_FILE_ACCESS">
外部ファイルアクセス (Android) (ANDROID_EXTERNAL_FILE_ACCESS)
</a></li>
<li><a href="#ANDROID_BROADCAST">
ブロードキャスト (Android) (ANDROID_BROADCAST)
</a></li>
<li><a href="#ANDROID_WORLD_WRITABLE">
ワールドライタブルファイル (Android) (ANDROID_WORLD_WRITABLE)
</a></li>
<li><a href="#ANDROID_GEOLOCATION">
ジオロケーションがアクティブ化された WebView (Android) (ANDROID_GEOLOCATION)
</a></li>
<li><a href="#ANDROID_WEB_VIEW_JAVASCRIPT">
JavaScript を有効にした WebView (Android) (ANDROID_WEB_VIEW_JAVASCRIPT)
</a></li>
<li><a href="#ANDROID_WEB_VIEW_JAVASCRIPT_INTERFACE">
JavaScript インタフェースがある WebView (Android) (ANDROID_WEB_VIEW_JAVASCRIPT_INTERFACE)
</a></li>
<li><a href="#INSECURE_COOKIE">
Secure フラグがない Cookie (INSECURE_COOKIE)
</a></li>
<li><a href="#HTTPONLY_COOKIE">
HttpOnly フラグがない Cookie (HTTPONLY_COOKIE)
</a></li>
<li><a href="#OBJECT_DESERIALIZATION">
オブジェクトデシリアライズの使用 (OBJECT_DESERIALIZATION)
</a></li>
<li><a href="#JACKSON_UNSAFE_DESERIALIZATION">
安全でない Jackson のデシリアライズ設定 (JACKSON_UNSAFE_DESERIALIZATION)
</a></li>
<li><a href="#DESERIALIZATION_GADGET">
デシリアライゼーションガジェットとして使用できるクラス (DESERIALIZATION_GADGET)
</a></li>
<li><a href="#TRUST_BOUNDARY_VIOLATION">
Trust Boundary Violation (TRUST_BOUNDARY_VIOLATION)
</a></li>
<li><a href="#JSP_XSLT">
悪意のある XSLT が JSP タグに提供される可能性 (JSP_XSLT)
</a></li>
<li><a href="#MALICIOUS_XSLT">
悪意のある XSLT が提供される可能性 (MALICIOUS_XSLT)
</a></li>
<li><a href="#SCALA_SENSITIVE_DATA_EXPOSURE">
Scala Play における潜在的な情報漏洩 (SCALA_SENSITIVE_DATA_EXPOSURE)
</a></li>
<li><a href="#SCALA_PLAY_SSRF">
Scala Play Server-Side Request Forgery (SSRF) (SCALA_PLAY_SSRF)
</a></li>
<li><a href="#URLCONNECTION_SSRF_FD">
URLConnection Server-Side Request Forgery (SSRF) と File Disclosure (URLCONNECTION_SSRF_FD)
</a></li>
<li><a href="#SCALA_XSS_TWIRL">
Scala Twirl テンプレートエンジンの潜在的な XSS (SCALA_XSS_TWIRL)
</a></li>
<li><a href="#SCALA_XSS_MVC_API">
Scala MVC API エンジンの潜在的な XSS (SCALA_XSS_MVC_API)
</a></li>
<li><a href="#TEMPLATE_INJECTION_VELOCITY">
Velocity の潜在的なテンプレートインジェクション (TEMPLATE_INJECTION_VELOCITY)
</a></li>
<li><a href="#TEMPLATE_INJECTION_FREEMARKER">
Freemarker の潜在的なテンプレートインジェクション (TEMPLATE_INJECTION_FREEMARKER)
</a></li>
<li><a href="#TEMPLATE_INJECTION_PEBBLE">
Pebble の潜在的なテンプレートインジェクション (TEMPLATE_INJECTION_PEBBLE)
</a></li>
<li><a href="#PERMISSIVE_CORS">
過剰に許可された CORS ポリシー (PERMISSIVE_CORS)
</a></li>
<li><a href="#LDAP_ANONYMOUS">
匿名 LDAP バインド (LDAP_ANONYMOUS)
</a></li>
<li><a href="#LDAP_ENTRY_POISONING">
LDAP Entry Poisoning (LDAP_ENTRY_POISONING)
</a></li>
<li><a href="#COOKIE_PERSISTENT">
永続的 Cookie の使用 (COOKIE_PERSISTENT)
</a></li>
<li><a href="#URL_REWRITING">
URL を書き換えるメソッド (URL_REWRITING)
</a></li>
<li><a href="#INSECURE_SMTP_SSL">
安全でない SMTP SSL 接続 (INSECURE_SMTP_SSL)
</a></li>
<li><a href="#AWS_QUERY_INJECTION">
AWS Query インジェクション (AWS_QUERY_INJECTION)
</a></li>
<li><a href="#BEAN_PROPERTY_INJECTION">
JavaBeans プロパティインジェクション (BEAN_PROPERTY_INJECTION)
</a></li>
<li><a href="#STRUTS_FILE_DISCLOSURE">
Struts File Disclosure (STRUTS_FILE_DISCLOSURE)
</a></li>
<li><a href="#SPRING_FILE_DISCLOSURE">
Spring File Disclosure (SPRING_FILE_DISCLOSURE)
</a></li>
<li><a href="#REQUESTDISPATCHER_FILE_DISCLOSURE">
RequestDispatcher File Disclosure (REQUESTDISPATCHER_FILE_DISCLOSURE)
</a></li>
<li><a href="#FORMAT_STRING_MANIPULATION">
書式文字列操作 (FORMAT_STRING_MANIPULATION)
</a></li>
<li><a href="#HTTP_PARAMETER_POLLUTION">
HTTP Parameter Pollution (HTTP_PARAMETER_POLLUTION)
</a></li>
<li><a href="#INFORMATION_EXPOSURE_THROUGH_AN_ERROR_MESSAGE">
エラーメッセージによる情報漏洩 (INFORMATION_EXPOSURE_THROUGH_AN_ERROR_MESSAGE)
</a></li>
<li><a href="#SMTP_HEADER_INJECTION">
SMTP ヘッダーインジェクション (SMTP_HEADER_INJECTION)
</a></li>
<li><a href="#RPC_ENABLED_EXTENSIONS">
有効なApache XML RPC サーバーまたはクライアントの拡張機能 (RPC_ENABLED_EXTENSIONS)
</a></li>
<li><a href="#WICKET_XSS1">
HTMLエスケープを無効にすると,アプリケーションが XSS の危険にさらされる (WICKET_XSS1)
</a></li>
<li><a href="#SAML_IGNORE_COMMENTS">
SAML で XML コメントを無視すると,認証バイパスが発生する可能性がある (SAML_IGNORE_COMMENTS)
</a></li>
<li><a href="#OVERLY_PERMISSIVE_FILE_PERMISSION">
過剰に許可されたファイルパーミッション (OVERLY_PERMISSIVE_FILE_PERMISSION)
</a></li>
</ul>
</div>
</div>
<section>
<a class="anchor" name="PREDICTABLE_RANDOM"></a>
<h2 class="page-header">
予測可能な擬似乱数生成器
<a href="#PREDICTABLE_RANDOM" title="Permanent link"><small><i class="fa fa-link"></i></small></a>
</h2>
<p class="text-muted"><em><small>Bug Pattern: <tt>PREDICTABLE_RANDOM</tt></small></em></p>
<p>セキュリティ上重要なコンテキストで,予測可能な乱数が使用されると脆弱性につながることがあります。たとえば,その乱数が次のように使用されたときです。</p>
<ul>
<li>CSRF トークン:予測可能なトークンは,攻撃者がトークンの価値を知ることになるので,CSRF 攻撃につながる可能性がある</li>
<li>パスワードリセットトークン(電子メールで送信):予測可能なパスワードトークンは,攻撃者が「パスワード変更」フォームのURLを推測するため,アカウントの乗っ取りにつながる可能性がある</li>
<li>その他の秘密の値</li>
</ul>
<p>
手っ取り早い解決策は <code>java.util.Random</code> の使用を <code>java.security.SecureRandom</code> などのより強固なものに置き換えることです。
</p>
<p>
<b>脆弱なコード:</b><br/>
<pre class='keep-initial-line-feed'><code class='code.language-java keep-initial-line-feed'>String generateSecretToken() {
Random r = new Random();
return Long.toHexString(r.nextLong());
}</code></pre>
</p>
<p>
<b>解決策:</b>
<pre class='keep-initial-line-feed'><code class='code.language-java keep-initial-line-feed'>import org.apache.commons.codec.binary.Hex;
String generateSecretToken() {
SecureRandom secRandom = new SecureRandom();
byte[] result = new byte[32];
secRandom.nextBytes(result);
return Hex.encodeHexString(result);
}</code></pre>
</p>
<br/>
<p>
<b>参考文献</b><br/>
<a target="_blank" href="https://jazzy.id.au/2010/09/20/cracking_random_number_generators_part_1.html">Cracking Random Number Generators - Part 1 (https://jazzy.id.au)</a><br/>
<a target="_blank" href="https://www.securecoding.cert.org/confluence/display/java/MSC02-J.+Generate+strong+random+numbers">CERT: MSC02-J. Generate strong random numbers</a><br/>
<a target="_blank" href="https://cwe.mitre.org/data/definitions/330.html">CWE-330: Use of Insufficiently Random Values</a><br/>
<a target="_blank" href="https://blog.h3xstream.com/2014/12/predicting-struts-csrf-token-cve-2014.html">Predicting Struts CSRF Token (Example of real-life vulnerability and exploitation)</a>
</p>
<hr/>
<br/>
</section>
<section>
<a class="anchor" name="PREDICTABLE_RANDOM_SCALA"></a>
<h2 class="page-header">
予測可能な擬似乱数生成器 (Scala)
<a href="#PREDICTABLE_RANDOM_SCALA" title="Permanent link"><small><i class="fa fa-link"></i></small></a>
</h2>
<p class="text-muted"><em><small>Bug Pattern: <tt>PREDICTABLE_RANDOM_SCALA</tt></small></em></p>
<p>セキュリティ上重要なコンテキストで,予測可能な乱数が使用されると脆弱性につながることがあります。たとえば,その乱数が次のように使用されたときです。</p>
<ul>
<li>CSRF トークン:予測可能なトークンは,攻撃者がトークンの価値を知ることになるので,CSRF 攻撃につながる可能性がある</li>
<li>パスワードリセットトークン(電子メールで送信):予測可能なパスワードトークンは,攻撃者が「パスワード変更」フォームのURLを推測するため,アカウントの乗っ取りにつながる可能性がある</li>
<li>その他の秘密の値</li>
</ul>
<p>
手っ取り早い解決策は <code>java.util.Random</code> の使用を <b>java.security.SecureRandom</b> などのより強固なものに置き換えることです。
</p>
<p>
<b>脆弱なコード:</b><br/>
<pre class='keep-initial-line-feed'><code class='code.language-java keep-initial-line-feed'>import scala.util.Random
def generateSecretToken() {
val result = Seq.fill(16)(Random.nextInt)
return result.map("%02x" format _).mkString
}</code></pre>
</p>
<p>
<b>解決策:</b>
<pre class='keep-initial-line-feed'><code class='code.language-java keep-initial-line-feed'>import java.security.SecureRandom
def generateSecretToken() {
val rand = new SecureRandom()
val value = Array.ofDim[Byte](16)
rand.nextBytes(value)
return value.map("%02x" format _).mkString
}</code></pre>
</p>
<!--<p>
<b>解決策:</b>
<pre class='keep-initial-line-feed'><code class='code.language-java keep-initial-line-feed'>import java.security.SecureRandom
import scala.util.Random._
def generateSecretToken() {
val secRandom = javaRandomToRandom(new SecureRandom())
val result = Seq.fill(16)(secRandom.nextInt)
return result.map("%02x" format _).mkString
}</code></pre>
</p>-->
<br/>
<p>
<b>参考文献</b><br/>
<a target="_blank" href="https://jazzy.id.au/2010/09/20/cracking_random_number_generators_part_1.html">Cracking Random Number Generators - Part 1 (http://jazzy.id.au)</a><br/>
<a target="_blank" href="https://www.securecoding.cert.org/confluence/display/java/MSC02-J.+Generate+strong+random+numbers">CERT: MSC02-J. Generate strong random numbers</a><br/>
<a target="_blank" href="https://cwe.mitre.org/data/definitions/330.html">CWE-330: Use of Insufficiently Random Values</a><br/>
<a target="_blank" href="https://blog.h3xstream.com/2014/12/predicting-struts-csrf-token-cve-2014.html">Predicting Struts CSRF Token (Example of real-life vulnerability and exploitation)</a>
</p>
<hr/>
<br/>
</section>
<section>
<a class="anchor" name="SERVLET_PARAMETER"></a>
<h2 class="page-header">
信頼できないサーブレットパラメーター
<a href="#SERVLET_PARAMETER" title="Permanent link"><small><i class="fa fa-link"></i></small></a>
</h2>
<p class="text-muted"><em><small>Bug Pattern: <tt>SERVLET_PARAMETER</tt></small></em></p>
<p>サーブレットは,さまざまなメソッドから GET と POST のパラメーターを読むことができます。取得した値は安全でないと考えるべきです。
次のような気密性の高い API に値を渡す前に,値を検証またはエスケープする必要があるかもしれません。</p>
<ul>
<li>SQL クエリー (SQL インジェクションにつながる可能性)</li>
<li>ファイルオープン (パストラバーサルにつながる可能性)</li>
<li>コマンド実行 (潜在的なコマンドインジェクション)</li>
<li>HTMLの組み立て (潜在的な XSS)</li>
<li>など...</li>
</ul>
<br/>
<p>
<b>参考文献</b><br/>
<a target="_blank" href="https://cwe.mitre.org/data/definitions/20.html">CWE-20: Improper Input Validation</a>
</p>
<hr/>
<br/>
</section>
<section>
<a class="anchor" name="SERVLET_CONTENT_TYPE"></a>
<h2 class="page-header">
信頼できない Content-Type ヘッダー
<a href="#SERVLET_CONTENT_TYPE" title="Permanent link"><small><i class="fa fa-link"></i></small></a>
</h2>
<p class="text-muted"><em><small>Bug Pattern: <tt>SERVLET_CONTENT_TYPE</tt></small></em></p>
<p>
HTTP ヘッダー Content-Type は,クライアントによって操作可能です。したがって,その値をセキュリティ上重要な決定では使用しないでください。
</p>
<br/>
<p>
<b>参考文献</b><br/>
<a target="_blank" href="https://cwe.mitre.org/data/definitions/807.html">CWE-807: Untrusted Inputs in a Security Decision</a>
</p>
<hr/>
<br/>
</section>
<section>
<a class="anchor" name="SERVLET_SERVER_NAME"></a>
<h2 class="page-header">
信頼できない Host ヘッダー
<a href="#SERVLET_SERVER_NAME" title="Permanent link"><small><i class="fa fa-link"></i></small></a>
</h2>
<p class="text-muted"><em><small>Bug Pattern: <tt>SERVLET_SERVER_NAME</tt></small></em></p>
<p>Hostname ヘッダーは,クライアントによって操作可能です。したがって,その値をセキュリティ上重要な決定では使用しないでください。
<code>ServletRequest.getServerName()</code> と <code>HttpServletRequest.getHeader("Host")</code> は,どちらも <code>Host</code> ヘッダーを抽出するという同じ動作をします。</p>
<pre class='keep-initial-line-feed'><code class='code.language-java keep-initial-line-feed'>GET /testpage HTTP/1.1
Host: www.example.com
[...]</code></pre>
<p>
アプリケーションにサービスを提供するウェブコンテナは,デフォルトでは,アプリケーションにリクエストをリダイレクトすることがあります。
これにより,悪意のあるユーザーが Host ヘッダーで任意の値を配置できるようになります。
リクエストに関して行うセキュリティ上の決定において,この値を信頼しないことをお勧めします。
</p>
<br/>
<p>
<b>参考文献</b><br/>
<a target="_blank" href="https://cwe.mitre.org/data/definitions/807.html">CWE-807: Untrusted Inputs in a Security Decision</a>
</p>
<hr/>
<br/>
</section>
<section>
<a class="anchor" name="SERVLET_SESSION_ID"></a>
<h2 class="page-header">
信頼できないセッション Cookie の値
<a href="#SERVLET_SESSION_ID" title="Permanent link"><small><i class="fa fa-link"></i></small></a>
</h2>
<p class="text-muted"><em><small>Bug Pattern: <tt>SERVLET_SESSION_ID</tt></small></em></p>
<p>
メソッド <a target="_blank" href="https://docs.oracle.com/javaee/6/api/javax/servlet/http/HttpServletRequest.html#getRequestedSessionId()"><code>HttpServletRequest.getRequestedSessionId()</code></a> は,
通常,Cookie <code>JSESSIONID</code> の値を返します。この値は通常,セッション管理ロジックと正常でない開発者コードだけがアクセスします。
</p>
<p>
クライアントに渡される値は一般的に英数字の値です (たとえば <code>JSESSIONID=jp6q31lq2myn</code>)。しかし,この値はクライアントによって改ざんできます。
次の HTTP リクエストは変更の可能性を示しています。
<pre class='keep-initial-line-feed'><code class='code.language-java keep-initial-line-feed'>GET /somePage HTTP/1.1
Host: yourwebsite.com
User-Agent: Mozilla/5.0
Cookie: JSESSIONID=Any value of the user's choice!!??'''">
</code></pre>
</p>
<p>そのため,JSESSIONID は,その値が既存のセッション ID と一致するかどうかを確認するためだけに使用されるべきです。
そうでない場合,そのユーザーは認証されていないユーザーであると考えるべきです。加えて,セッション ID の値をログに記録してはいけません。
その場合,ログファイルに有効なアクティブセッション ID が含まれている可能性があり,インサイダーは ID がログに記録されていてアクティブな状態のセッションをハイジャックできます。
</p>
<br/>
<p>
<b>参考文献</b><br/>
<a target="_blank" href="https://www.owasp.org/index.php/Session_Management_Cheat_Sheet">OWASP: Session Management Cheat Sheet</a><br/>
<a target="_blank" href="https://cwe.mitre.org/data/definitions/20.html">CWE-20: Improper Input Validation</a>
</p>
<hr/>
<br/>
</section>
<section>
<a class="anchor" name="SERVLET_QUERY_STRING"></a>
<h2 class="page-header">
信頼できないクエリー文字列
<a href="#SERVLET_QUERY_STRING" title="Permanent link"><small><i class="fa fa-link"></i></small></a>
</h2>
<p class="text-muted"><em><small>Bug Pattern: <tt>SERVLET_QUERY_STRING</tt></small></em></p>
<p>クエリー文字列は,GET パラメーターの名前と値を連結したものです。意図したパラメーター以外を渡すことができます。</p>
<p>URL リクエストが <code>/app/servlet.htm?a=1&b=2</code> のときは,クエリー文字列を抜き出すと <code>a=1&b=2</code> になります。</p>
<p><code>HttpServletRequest.getParameter()</code> のようなメソッドで取得した個々のパラメーター値と同じように,<code>HttpServletRequest.getQueryString()</code> から取得した値は安全でないと見なすべきです。
気密性の高い API に渡す前に,クエリー文字列から取得したものを検証またはエスケープする必要があります。
</p>
<br/>
<p>
<b>参考文献</b><br/>
<a target="_blank" href="https://cwe.mitre.org/data/definitions/20.html">CWE-20: Improper Input Validation</a>
</p>
<hr/>
<br/>
</section>
<section>
<a class="anchor" name="SERVLET_HEADER"></a>
<h2 class="page-header">
信頼できない HTTP ヘッダー
<a href="#SERVLET_HEADER" title="Permanent link"><small><i class="fa fa-link"></i></small></a>
</h2>
<p class="text-muted"><em><small>Bug Pattern: <tt>SERVLET_HEADER</tt></small></em></p>
<p>リクエストヘッダーはリクエストしているユーザーによって容易に改ざんできます。
一般的には,ブラウザーからリクエストが攻撃者によって変更されることなく来ることを仮定すべきではありません。
このように,リクエストに関して行うあらゆるセキュリティ上の決定において,その値を信頼しないことをお勧めします。</p>
<br/>
<p>
<b>参考文献</b><br/>
<a target="_blank" href="https://cwe.mitre.org/data/definitions/807.html">CWE-807: Untrusted Inputs in a Security Decision</a>
</p>
<hr/>
<br/>
</section>
<section>
<a class="anchor" name="SERVLET_HEADER_REFERER"></a>
<h2 class="page-header">
信頼できない Referer ヘッダー
<a href="#SERVLET_HEADER_REFERER" title="Permanent link"><small><i class="fa fa-link"></i></small></a>
</h2>
<p class="text-muted"><em><small>Bug Pattern: <tt>SERVLET_HEADER_REFERER</tt></small></em></p>
<p>
動作:
<ul>
<li>リクエストが悪意のあるユーザーから来ているなら,任意の値をこのヘッダーに割り当てられる</li>
<li>リクエストが安全 (HTTPS) である別のオリジンから開始されたときは,"Referer" は存在しない</li>
</ul>
</p>
<p>
推奨:
<ul>
<li>このヘッダーの値に基づいてアクセス制御を行うべきではない</li>
<li>CSRF 保護は,この値にだけ基づいて行われるべきではない (<a target="_blank" href="https://www.w3.org/Protocols/HTTP/HTRQ_Headers.html#z14">オプションなので</a>)</li>
</ul>
</p>
<br/>
<p>
<b>参考文献</b><br/>
<a target="_blank" href="https://cwe.mitre.org/data/definitions/807.html">CWE-807: Untrusted Inputs in a Security Decision</a>
</p>
<hr/>
<br/>
</section>
<section>
<a class="anchor" name="SERVLET_HEADER_USER_AGENT"></a>
<h2 class="page-header">
信頼できない User-Agent ヘッダー
<a href="#SERVLET_HEADER_USER_AGENT" title="Permanent link"><small><i class="fa fa-link"></i></small></a>
</h2>
<p class="text-muted"><em><small>Bug Pattern: <tt>SERVLET_HEADER_USER_AGENT</tt></small></em></p>
<p>ヘッダー "User-Agent" は,クライアントによって容易に偽装できます。User-Agent に基づいて (クローラー UA に対して) 異なった動作をすることは推奨できません。</p>
<br/>
<p>
<b>参考文献</b><br/>
<a target="_blank" href="https://cwe.mitre.org/data/definitions/807.html">CWE-807: Untrusted Inputs in a Security Decision</a>
</p>
<hr/>
<br/>