ISO/IEC TR 24772-1:2019 プログラミング言語—プログラミング言語の脆弱性を回避するためのガイダンス—パート1:言語に依存しないガイダンス | ページ 7

※一部、英文及び仏文を自動翻訳した日本語訳を使用しています。

索引

エイダ、25, 72, 76, 89

AMV – データの型破壊再解釈、84

API

アプリケーションプログラミングインターフェース、28

APL, 61

アップル

OS X, 144

アプリケーションの脆弱性, 19

最小権限の遵守 [XYN], 152

認証ロジック エラー [XZO], 146

クロックの問題 [CCI], 167

クロスサイトスクリプティング [XYT], 134

矛盾情報流出[XZL], 161

整合性チェックなしのコードのダウンロード [DLB], 130

信頼できないコードの実行またはロード [XYS], 131

ハードコードされた資格情報 [XYP], 149

ハードコードされたパスワード - ハードコードされた資格情報、149 を参照してください。

過剰な認証試行の不適切な制限 [WPL], 148

不適切に検証された署名 [XZR], 155

共有リソースの不十分なセキュア通信 [CGY], 156

信頼されていないコントロール領域からの機能の組み込み [DHU], 132

不正な承認 [BJE], 151

インジェクション[RST], 137

資格情報の保護が不十分 [XYM], 150

メモリロック[XZX], 158

アクセス制御 [XZN] の欠落または不一致、151

必要な暗号化ステップ [XZS] の欠落、154

パストラバーサル [EWR], 141

特権サンドボックスの問題 [XYO], 153

リソース枯渇[XZP], 145

リソース名 [HTS], 144

[XZK] を使用する前に機密情報がクリアされていない、159

消費時間測定[CCM], 160

時間のドリフトとジッター [CDJ], 169

引用符で囲まれていない検索パスまたは要素 [XZQ], 140

無制限のファイル アップロード [CBF], 129

特定されていない機能 [BVQ], 162

信頼されていないサイトへの URL リダイレクト (「オープン リダイレクト」) [PYQ], 136

ソルトなしの一方向ハッシュの使用 [MVX], 156

管理されていない、または汚染されたソースからのチェックされていないデータの使用[EFS], 133

アプリケーションの脆弱性, 14

アリアン5, 34

ビット演算子、60

BJE - 不正な承認、151

BJL—名前空間の問題、56

BKK - 多形変数、96

ブラックリスト、130, 140

BLP – Liskov代替原則または契約モデルの違反、93

BQF - 詳細不明の動作、111

破る, 73

BRS - あいまいな言語機能, 109

バッファ境界違反、36

バッファ オーバーフロー、36, 39

バッファアンダーライト、36

BVQ - 指定されていない機能、162

C, 60, 63, 64, 70, 71, 73, 76

C の例、62

C++、60, 64, 71, 76, 89, 90, 105

コピーで呼び出す, 74

名前で呼ぶ, 74

参照による呼び出し, 74

結果による呼び出し, 74

値による呼び出し, 74

value-result による呼び出し、74

CBF – 無制限のファイル アップロード、129

CCB – 列挙子の問題、31

CCI - クロックの問題、167

CCM - 消費時間測定、160

CDJ - 時間のドリフトとジッター、169

CGA - 並行性 - アクティベーション、117

CGM - ロック プロトコル エラー、124

CGS - 並行性 - 早期終了、122

CGT - コンカレンシー - 指示された終了、119

CGX - 同時データ アクセス、120

CGY - 共有リソースの不十分なセキュア通信、156

CJM—文字列終端、35

CLL—Switch ステートメントと静的分析、67

競争、11

続ける, 73

暗号、155

CSJ - パラメータと戻り値の受け渡し, 74

ダングリングリファレンス、45

データの破損, 42

DCM - スタック フレームへのダングリング リファレンス, 76

無効化されたコード定義、66

デッドコードの定義、66

デッドロック, 125

意味

無効化されたコード、66

デッドコード、66

DHU - 信頼されていない制御範囲からの機能の組み込み、132

Diffie-Hellman スタイル、147

デジタル署名、103

DJS – 言語間通話、100

DLB – 整合性チェックなしのコードのダウンロード、130

DOS

サービス拒否、145

動的リンク, 102

EFS – 管理されていない、または汚染されたソースからのチェックされていないデータの使用、133

暗号化、154, 155

エンディアン

大、27

少し、27

エンディアン, 26

列挙、31

EOJ—制御フローの境界、69

EWD—非構造化プログラミング、73

EWF - 未定義の動作、112

EEA - パス トラバーサル、141

例外ハンドラ、105

FAB – 実装定義の動作、114

失敗、14

FIF – 算術ラップアラウンド エラー、47

FLC - 変換エラー、33

フォートラン、84

GDL-再帰、80

ジェネリック, 89

gif, 130

後藤 73

ハードコードされたパスワード - ハードコードされた資格情報を参照してください, 149

HCB – バッファー境界違反 (バッファー オーバーフロー)、36

HFC - ポインター型変換、42

HJW – ライブラリ ルーチンからの予期しない例外、104

HTML

ハイパーテキスト マークアップ言語、139

HTS - リソース名、144

HTTP

ハイパーテキスト転送プロトコル、136

べき等、47, 112

IHN – 型システム、23

継承、91

IPアドレス、146

ISO/IEC/IEEE 60559, 28

ジャワ、65, 89

Java の例、62

JavaScript, 134, 135, 136

JCW - 演算子の優先順位と結合規則、60

KOA—間違った表現の可能性が高い、63

言語の脆弱性

ライブラリ関数への引数の受け渡し [TRJ], 99

算術ラップアラウンド エラー [FIF], 47

ビット表現 [STR], 26

バッファ境界違反 (バッファ オーバーフロー) [HCB], 36

明確な名前の選択 [NAI], 50

同時実行アクティベーション[CGA], 117

同時実行による終了 [CGT], 119

並行性 - 早期終了 [CGS], 122

同時データ アクセス [CGX], 120

変換エラー [FLC], 33

ヒープへのダングリング参照 [XYK], 45

スタック フレームへのダングリング参照 [DCM], 76

デッドおよび非アクティブ化されたコード [XYQ], 65

デッドストア [WXQ], 52

深いコピーと浅いコピー [YAN], 86

制御フローの境界 [EOJ], 69

非推奨の言語機能 [MEM], 116

動的にリンクされたコードと自己修正コード [NYY], 102

列挙子の問題[CCB], 31

追加の組み込み関数 [LRM], 97

浮動小数点演算 [PLF], 28

識別子名の再利用 [YOW], 54

無視されたエラー ステータスと未処理の例外 [OYB], 81

実装定義の動作[FAB], 114

継承[RIP], 91

変数の初期化 [LAV], 58

言語間通話 [DJS], 100

ライブラリ署名 [NSQ], 103

間違っている可能性が高い表現 [KOA], 63

ロック プロトコル エラー [CGM], 124

ループ制御変数 [TEX] , 70

メモリ リークとヒープの断片化 [XYL], 87

定数の変更 [UJO], 172

名前空間の問題[BJL], 56

NULL ポインター逆参照 [XYH], 44

あいまいな言語機能 [BRS], 109

オフ バイ ワン エラー [XZH], 71

演算子の優先順位と結合性 [JCW], 60

パラメータと戻り値を渡す[CSJ], 74

ポインター演算 [RVG], 43

ポインタ型変換 [HFC], 42

多相変数 [BKK], 96

プリプロセッサ ディレクティブ [NMP], 105

本質的に危険な操作の提供 [SKL], 108

再帰[GDL], 80

再発送[PPH], 94

外部フォーマット文字列への依存 [SHL], 126

副作用と評価の順序[SAM], 61

文字列終端 [CJM], 35

非構造化プログラミング [EWD], 73

サブプログラム署名の不一致 [OTR], 78

言語定義のランタイム チェックの抑制 [MXB], 107

Switch ステートメントと静的解析 [CLL], 67

テンプレートとジェネリック [SYM], 89

型システム [IHN], 23

データの型破壊再解釈[AMV], 84

ライブラリ ルーチンからの予期しない例外 [HJW], 104

チェックされていない配列のコピー [XYW], 40

チェックされていない配列のインデックス [XYZ], 38

未定義の動作 [EWF], 112

不明な動作 [BFQ], 111

未使用変数 [YZS], 53

乗算と除算にシフト演算を使用する [PIK], 49

Liskov代替原則または契約モデル[BLP]の違反、93

言語の脆弱性、14

LAV - 変数の初期化、58

リナックス、144

ライブロック、125

ロングジャンプ、73

LRM - 追加の組み込み関数、97

マコフ、146

MEM - 非推奨の言語機能、116

メモリ開示、159

マイクロソフト

Win16, 144

窓、159

Windows XP, 144

MIME

多目的インターネット メール拡張機能、140

ミスラ C, 43

MISRA C++、105

mlock, ()、159

MVX — ソルトなしの一方向ハッシュの使用、156

MXB - 言語定義の実行時チェックの抑制、107

NAI—明確な名前の選択、50

名前の種類の等価性, 24

NMP - プリプロセッサ ディレクティブ、105

NSQ—ライブラリ署名、103

NTFS

新技術ファイルシステム、130

ゼロ、44, 71

NULL ポインタ, 44

ヌルポインタ、44

NYY – 動的にリンクされたコードと自己変更コード、102

OTR - サブプログラム署名の不一致、78

OYB – 無視されたエラー ステータスと未処理の例外、81

パスカル、100

ペソ、139

PIK – 乗算と除算にシフト演算を使用する、49

PLF - 浮動小数点演算、28

POSIX, 118

PPH - 再発送、94

プラグマ、89, 114

予測可能な実行、13, 19

PYQ – 信頼されていないサイトへの URL リダイレクト (「オープン リダイレクト」)、136

実数、28

リアルタイムJava, 124

リソースの枯渇、145

RIP継承、91

RST-インジェクション、137

RVG - ポインター演算、43

安全上の問題、13

安全上重要なソフトウェア、14

SAM - 副作用と評価の順序、61

セキュリティの脆弱性, 14

セットジャンプ、73

SHL – 外部フォーマット文字列への依存、126

SKL – 本質的に危険な操作の提供、108

ソフトウェアの品質, 13

ソフトウェアの脆弱性, 19

SQL

構造化クエリ言語、165

STR - ビット表現、26

strcpy, 36

strncpy, 36

構造型の等価性, 24

スイッチ、67

SYM—テンプレートとジェネリック、89

シンボリックリンク、142

テンプレート、89, 90

TEX - ループ制御変数、70

スレッド 、11

TRJ - ライブラリ関数への引数の受け渡し、99

タイプ強制, 33

タイプセーフ、24

タイプセキュア、24

型システム, 24

UJO—定数の変更、172

UNC

統一命名規則、142

普遍的な命名規則、142

Unchecked_Conversion 、85

UNIX, 102, 142, 144, 152

不明な機能, 162

URI

統一資源識別子、136

URL

ユニフォームリソースロケーター、136

VirtualLock, ()、159

ホワイトリスト、129, 136, 140

窓、118

WPL – 過剰な認証試行の不適切な制限、148

WXQ-デッド ストア、52

XSS

クロスサイトスクリプティング、134

XYH - ゼロ ポインタ参照、44

XYK - ヒープへのダングリング参照、45

XYL - メモリ リークとヒープの断片化、87

XYM - 資格情報の保護が不十分、150

XYN - 最小特権への準拠、152

XYO – 特権サンドボックスの問題、153

XYP - ハードコードされた資格情報、149

XYQ - デッドおよび非アクティブ化されたコード、65

XYS – 信頼できないコードの実行または読み込み、131

XYT - クロスサイト スクリプティング、134

XYW - チェックされていない配列のコピー、40

XYZ - 未チェックの配列インデックス、38

XZH – オフ バイ ワン エラー、71

XZK – 使用前に消去されない機密情報、159

XZL – 不一致情報漏洩、161

XZN - 欠落または一貫性のないアクセス制御、151

XZO - 認証ロジック エラー、146

XZP - リソースの枯渇、145

XZQ – 引用符で囲まれていない検索パスまたは要素、140

XZR – 不適切に検証された署名、155

XZS – 必要な暗号化ステップの欠落、154

XZX - メモリ ロック、158

YAN - 深いコピーと浅いコピー、86

YOW - 識別子名の再利用、54

YZS - 未使用変数、53

Index

Ada, 25, 72, 76, 89

AMV – Type-breaking reinterpretation of data, 84

API

Application Programming Interface, 28

APL, 61

Apple

OS X, 144

Application vulnerabilities, 19

Adherence to least privilege [XYN], 152

Authentication logic error [XZO], 146

Clock issues [CCI], 167

Cross-site scripting [XYT], 134

Discrepancy information leak [XZL], 161

Download of code without integrity check [DLB], 130

Executing or loading untrusted code [XYS], 131

Hard-coded credential [XYP], 149

Hard-coded password – see Hard-coded credentials, 149

Improper restriction of excessive authentication attempts [WPL], 148

Improperly verified signature [XZR], 155

Inadequately secure communication of shared resources [CGY], 156

Inclusion of functionality from untrusted control sphere [DHU], 132

Incorrect authorization [BJE], 151

Injection [RST], 137

Insufficiently protected credentials [XYM], 150

Memory locking [XZX], 158

Missing or inconsistent access control [XZN], 151

Missing required cryptographic step [XZS], 154

Path traversal [EWR], 141

Privilege sandbox issues [XYO], 153

Resource exhaustion [XZP], 145

Resource names [HTS], 144

Sensitive information not cleared before Use [XZK], 159

Time consumption measurement [CCM], 160

Time drift and jitter [CDJ], 169

Unquoted search path or element [XZQ], 140

Unrestricted file upload [CBF], 129

Unspecified functionality [BVQ], 162

URL redirection to untrusted site ('open redirect') [PYQ], 136

Use of a one-way hash without a salt [MVX], 156

Use of unchecked data from an uncontrolled or tainted source [EFS], 133

application vulnerability, 14

Ariane 5, 34

bitwise operators, 60

BJE – Incorrect authorization, 151

BJL – Namespace issues, 56

BKK – Polymorphic variables, 96

black-list, 130, 140

BLP – Violations of the Liskov substitution principle or contract model, 93

BQF – Unspecified behaviour, 111

break, 73

BRS – Obscure language features, 109

buffer boundary violation, 36

buffer overflow, 36, 39

buffer underwrite, 36

BVQ – Unspecified functionality, 162

C, 60, 63, 64, 70, 71, 73, 76

C example, 62

C++, 60, 64, 71, 76, 89, 90, 105

call by copy, 74

call by name, 74

call by reference, 74

call by result, 74

call by value, 74

call by value-result, 74

CBF – Unrestricted file upload, 129

CCB – Enumerator issues, 31

CCI – Clock issues, 167

CCM - Time consumption measurement, 160

CDJ – Time drift and jitter, 169

CGA – Concurrency – Activation, 117

CGM – Lock protocol errors, 124

CGS – Concurrency – Premature termination, 122

CGT - Concurrency – Directed termination, 119

CGX – Concurrent data access, 120

CGY – Inadequately secure communication of shared resources, 156

CJM – String termination, 35

CLL – Switch statements and static analysis, 67

concurrency, 11

continue, 73

cryptologic, 155

CSJ – Passing parameters and return values, 74

dangling reference, 45

data corruption, 42

DCM – Dangling references to stack frames, 76

Deactivated code definition, 66

Dead code definition, 66

deadlock, 125

Definition

Deactivated code, 66

Dead code, 66

DHU – Inclusion of functionality from untrusted control sphere, 132

Diffie-Hellman-style, 147

digital signature, 103

DJS – Inter-language calling, 100

DLB – Download of code without integrity check, 130

DoS

Denial of Service, 145

dynamically linked, 102

EFS – Use of unchecked data from an uncontrolled or tainted source, 133

encryption, 154, 155

endian

big, 27

little, 27

endianness, 26

Enumerations, 31

EOJ – Demarcation of control flow, 69

EWD – Unstructured programming, 73

EWF – Undefined behaviour, 112

EWR – Path traversal, 141

exception handler, 105

FAB – Implementation-defined behaviour, 114

failure, 14

FIF – Arithmetic wrap-around error, 47

FLC – Conversion errors, 33

Fortran, 84

GDL – Recursion, 80

generics, 89

GIF, 130

goto, 73

Hard-coded password – see hard coded credentials, 149

HCB – Buffer boundary violation (buffer overflow), 36

HFC – Pointer type conversions, 42

HJW – unanticipated exceptions from library routines, 104

HTML

Hyper Text Markup Language, 139

HTS – Resource names, 144

HTTP

Hypertext Transfer Protocol, 136

idempotent, 47, 112

IHN –Type system, 23

inheritance, 91

IP address, 146

ISO/IEC/IEEE 60559, 28

Java, 65, 89

Java example, 62

JavaScript, 134, 135, 136

JCW – Operator precedence and associativity, 60

KOA – Likely incorrect expression, 63

Language vulnerabilities

Argument passing to library functions [TRJ], 99

Arithmetic wrap-around error [FIF], 47

Bit representations [STR], 26

Buffer boundary violation (buffer overflow) [HCB], 36

Choice of clear names [NAI], 50

Concurrency – Activation [CGA], 117

Concurrency – Directed termination [CGT], 119

Concurrency – Premature termination [CGS], 122

Concurrent data access [CGX], 120

Conversion errors [FLC], 33

Dangling reference to heap [XYK], 45

Dangling references to stack frames [DCM], 76

Dead and deactivated code [XYQ], 65

Dead store [WXQ], 52

Deep vs shallow copying [YAN], 86

Demarcation of control flow [EOJ], 69

Deprecated language features [MEM], 116

Dynamically-linked code and self-modifying code [NYY], 102

Enumerator issues [CCB], 31

Extra intrinsics [LRM], 97

Floating-point arithmetic [PLF], 28

Identifier name reuse [YOW], 54

Ignored error status and unhandled exceptions [OYB], 81

Implementation-defined behaviour [FAB], 114

Inheritance [RIP], 91

Initialization of variables [LAV], 58

Inter-language calling [DJS], 100

Library signature [NSQ], 103

Likely incorrect expression [KOA], 63

Lock protocol errors [CGM], 124

Loop control variables [TEX] , 70

Memory leaks and heap fragmentation [XYL], 87

Modifying Constants [UJO], 172

Namespace issues [BJL], 56

Null pointer dereference [XYH], 44

Obscure language features [BRS], 109

Off-by-one error [XZH], 71

Operator precedence and associativity [JCW], 60

Passing parameters and return values [CSJ], 74

Pointer arithmetic [RVG], 43

Pointer type conversions [HFC], 42

Polymorphic variables [BKK], 96

Pre-processor directives [NMP], 105

Provision of inherently unsafe operations [SKL], 108

Recursion [GDL], 80

Redispatching [PPH], 94

Reliance on external format strings[SHL], 126

Side-effects and order of evaluation [SAM], 61

String termination [CJM], 35

Unstructured programming [EWD], 73

Subprogram signature mismatch [OTR], 78

Suppression of language-defined run-time checking [MXB], 107

Switch statements and static analysis [CLL], 67

Templates and generics [SYM], 89

Type system [IHN], 23

Type-breaking reinterpretation of data [AMV], 84

Unanticipated exceptions from library routines [HJW], 104

Unchecked array copying [XYW], 40

Unchecked array indexing [XYZ], 38

Undefined behaviour [EWF], 112

Unspecified behaviour [BFQ], 111

Unused variable [YZS], 53

Using shift operations for multiplication and division [PIK], 49

Violations of the Liskov substitution principle or contract model [BLP], 93

language vulnerability, 14

LAV – Initialization of variables, 58

Linux, 144

livelock, 125

longjmp, 73

LRM – Extra intrinsics, 97

macof, 146

MEM – Deprecated language features, 116

memory disclosure, 159

Microsoft

Win16, 144

Windows, 159

Windows XP, 144

MIME

Multipurpose Internet Mail Extensions, 140

MISRA C, 43

MISRA C++, 105

mlock(), 159

MVX – use of a one-way hash without a salt, 156

MXB – Suppression of language-defined run-time checking, 107

NAI – Choice of clear names, 50

name type equivalence, 24

NMP – Pre-processor Directives, 105

NSQ – Library signature, 103

NTFS

New Technology File System, 130

NULL, 44, 71

NULL pointer, 44

null-pointer, 44

NYY – Dynamically-linked code and self-modifying code, 102

OTR – Subprogram signature mismatch, 78

OYB – Ignored error status and unhandled exceptions, 81

Pascal, 100

PHP, 139

PIK – Using shift operations for multiplication and division, 49

PLF – Floating-point arithmetic, 28

POSIX, 118

PPH – Redispatching, 94

pragmas, 89, 114

predictable execution, 13, 19

PYQ – URL redirection to untrusted site ('open redirect'), 136

real numbers, 28

Real-Time Java, 124

resource exhaustion, 145

RIP – Inheritance, 91

RST – Injection, 137

RVG – Pointer arithmetic, 43

safety hazard, 13

safety-critical software, 14

SAM – Side-effects and order of evaluation, 61

security vulnerability, 14

setjmp, 73

SHL – Reliance on external format strings, 126

SKL – Provision of inherently unsafe operations, 108

software quality, 13

software vulnerabilities, 19

SQL

Structured query language, 165

STR – Bit representations, 26

strcpy, 36

strncpy, 36

structure type equivalence, 24

switch, 67

SYM – Templates and Generics, 89

symlink, 142

templates, 89, 90

TEX – Loop control variables, 70

thread , 11

TRJ – Argument passing to library functions, 99

type coercion, 33

type safe, 24

type secure, 24

type system, 24

UJO – Modifying Constants, 172

UNC

Uniform Naming Convention, 142

Universal Naming Convention, 142

Unchecked_Conversion, 85

UNIX, 102, 142, 144, 152

Unspecified functionality, 162

URI

Uniform Resource Identifier, 136

URL

Uniform Resource Locator, 136

VirtualLock(), 159

white-list, 129, 136, 140

Windows, 118

WPL – Improper restriction of excessive authentication attempts, 148

WXQ – Dead store, 52

XSS

Cross-site scripting, 134

XYH – Null pointer deference, 44

XYK – Dangling reference to heap, 45

XYL – Memory leaks and heap fragmentation, 87

XYM – Insufficiently protected credentials, 150

XYN – Adherence to least privilege, 152

XYO – Privilege sandbox issues, 153

XYP - Hard-coded credentials, 149

XYQ – Dead and deactivated code, 65

XYS – Executing or loading untrusted code, 131

XYT – Cross-site scripting, 134

XYW – Unchecked array copying, 40

XYZ – Unchecked array indexing, 38

XZH – Off-by-one error, 71

XZK – Sensitive information not cleared before use, 159

XZL – Discrepancy information leak, 161

XZN – Missing or inconsistent access control, 151

XZO – Authentication logic error, 146

XZP – Resource exhaustion, 145

XZQ – Unquoted search path or element, 140

XZR – Improperly verified signature, 155

XZS – Missing required cryptographic step, 154

XZX – Memory locking, 158

YAN – Deep vs shallow copying, 86

YOW – Identifier name reuse, 54

YZS – Unused variable, 53