Skip to main content

PL/SQLのスキャンルール

 

Contrast Scanでは、PL/SQLに対して以下のルールをサポートしています。

深刻度

Contrastルール

エンジンルールID

説明

重大

Command Injection

OPT.PLSQL.SEC.CommandInjection

CommandInjection:OSコマンドで使用する特殊要素の不適切な無害化(OSコマンドインジェクション)

重大

Cross Site Scripting

OPT.PLSQL.SEC.CrossSiteScripting

CrossSiteScripting:Webページ生成中の入力の不適切な無害化(クロスサイトスクリプティング)

重大

Header Manipulation

OPT.PLSQL.SEC.HeaderManipulation

HeaderManipulation: HTTPレスポンスヘッダやCookie内の未検証データ (HTTPレスポンス分割攻撃)

重大

Persisted Cross Site Scripting

OPT.PLSQL.SEC.PersistedCrossSiteScripting

PersistedCrossSiteScripting:Webページ生成中の入力の不適切な無害化(クロスサイトスクリプティング)

重大

Second Order SQL Injection

OPT.PLSQL.SEC.SecondOrderSqlInjection

SecondOrderSqlInjection:SQLインジェクション(セカンドオーダー)

重大

Server Side Request Forgery

OPT.PLSQL.SEC.ServerSideRequestForgery

ServerSideRequestForgery:サーバサイドリクエストフォージェリ(SSRF)

重大

Sleep Injection

OPT.PLSQL.SEC.SleepInjection

SleepInjection:外部制御されたスリープ時間によるサービス拒否攻撃(DoS攻撃)

重大

SQL Injection

OPT.PLSQL.SEC.SqlInjection

SqlInjection:SQLコマンドで使用する特殊要素の不適切な無害化(SQLインジェクション)

重大

D V D P

OPT.PLSQL.DC_PLSQL.DVDP

DVDP:変数宣言の位置(メインのDECLARセクション以外で変数を宣言しない)

重大

N L S M

OPT.PLSQL.DC_PLSQL.NLSM

NLSM:1000行以上のPLSQLの検索

重大

Pkg Comment

OPT.PLSQL.DOC_PLSQL.PkgComment

PkgComment:コメントのないパッケージ

重大

C N L

OPT.PLSQL.GEN_PLSQL.CNL

CNL:CLOB型の使用(LONG型の使用禁止)

重大

D E W O

OPT.PLSQL.GEN_PLSQL.DEWO

DEWO:「EXCEPTION WHEN OTHERS」後の「RAISE_APPLICATION_ERROR」の使用

重大

D S W

OPT.PLSQL.GEN_PLSQL.DSW

DSW:WHEREを含まないDELETE クエリの検索

重大

E S P R

OPT.PLSQL.GEN_PLSQL.ESPR

ESPR:RAISE文/RAISE_APPLICATION_ERROR後のクエリ禁止

重大

I N C I

OPT.PLSQL.GEN_PLSQL.INCI

INCI:データを挿入する列名における名前の指定

重大

J O I N

OPT.PLSQL.GEN_PLSQL.JOIN

JOIN:JOIN句でのエイリアスの付与

重大

T G

OPT.PLSQL.GEN_PLSQL.TG

TG:トリガーの検出(長期的な保守性の問題を防ぐために、トリガーの存在を特定する)

重大

Transaction

OPT.PLSQL.GEN_PLSQL.Transaction

Transaction:COMMITおよびROLLBACKの呼び出しを伴うINSERT、UPDATE、DELETEの使用

重大

U S W

OPT.PLSQL.GEN_PLSQL.USW

USW:WHEREを含まないUPDATEクエリの検索

重大

V A R2

OPT.PLSQL.GEN_PLSQL.VAR2

VAR2:VARCHAR2型の使用(変数はVARCHAR2として定義し、VARCHARとしては定義しない)

重大

Avoid Goto

OPT.PLSQL.MISC_PLSQL.AvoidGoto

AvoidGoto:GOTO文の使用禁止

重大

Dead Goto

OPT.PLSQL.MISC_PLSQL.DeadGoto

DeadGoto:GOTO文の後のデッドコードの検出

重大

Avoid calling LN

OPT.PLSQL.MISC_PLSQL.NLN

NLN:LN関数の呼び出し回避

重大

P C D L

OPT.PLSQL.MISC_PLSQL.PCDL

PCDL:DatabaseLinkでサポートされているリンクパラメータ

重大

P D D

OPT.PLSQL.MISC_PLSQL.PDD

PDD:データアクセスロジック(LD)またはビジネスロジック(LN)においてDDに関連付けられていないパラメータを渡すことは避ける

重大

P E P P

OPT.PLSQL.MISC_PLSQL.PEPP

PEPP:外部パッケージにはパブリックプロシージャを含めることが必要

重大

P P A D

OPT.PLSQL.MISC_PLSQL.PPAD

PPAD:データアクセスロジック(LD)においてDDに関連付けられていないパラメータを渡すことは避ける

重大

Big Size

OPT.PLSQL.OYR_PLSQL.BigSize

BigSize:大きすぎる関数やプロシージャの検出

重大

Check Data

OPT.PLSQL.OYR_PLSQL.CheckData

CheckData:レコード更新前のレコード存在確認の禁止

重大

Dml Returning

OPT.PLSQL.OYR_PLSQL.DmlReturning

DmlReturning:挿入、更新、削除されたレジスタにアクセスしてフィールドを取得しない(操作の前または後)

重大

E A D

OPT.PLSQL.OYR_PLSQL.EAD

EAD:DUALアクセスの開始

重大

Total Group

OPT.PLSQL.OYR_PLSQL.TotalGroup

TotalGroup:集計関数のないSELECT句におけるGROUP BY句の使用禁止

重大

Total Group Agr

OPT.PLSQL.OYR_PLSQL.TotalGroupAgr

TotalGroupAgr:SELECT句に存在しないフィールドをGROUP BY句で使用することの回避

重大

U C R

OPT.PLSQL.OYR_PLSQL.UCR

UCR: 1つのプロセスにおける1つのコミットまたはロールバックの関連付け

重大

Forbidden Call

OPT.PLSQL.SEC.ForbiddenCall

ForbiddenCall:危険なプロシージャ/関数の呼び出しの検出

重大

Path Traversal

OPT.PLSQL.SEC.PathTraversal

PathTraversal:ファイル名またはパスの外部制御

重大

Too Broad Grant

OPT.PLSQL.SEC.TooBroadGrant

TooBroadGrant:広範すぎる権限付与

重大

Weak Cryptographic Hash

OPT.PLSQL.SEC.WeakCryptographicHash

WeakCryptographicHash:脆弱な暗号化ハッシュのデータの完全性の欠如

重大

Weak Symmetric Encryption Algorithm

OPT.PLSQL.SEC.WeakSymmetricEncryptionAlgorithm

WeakSymmetricEncryptionAlgorithm:脆弱な共通鍵暗号アルゴリズム

U V B

OPT.PLSQL.GEN_PLSQL.UVB

UVB:BIND変数の使用

Open Redirect

OPT.PLSQL.SEC.OpenRedirect

OpenRedirect:未検証の入力によってリダイレクト先のURLを制御することを許可しない

E C U

OPT.PLSQL.CNU_PLSQL.ECU

ECU:未使用の定数の回避

E V U

OPT.PLSQL.CNU_PLSQL.EVU

EVU:未使用の変数の回避

Useless Param

OPT.PLSQL.CNU_PLSQL.UselessParam

UselessParam:宣言されているが使用されていないパラメータの検出

N D C F

OPT.PLSQL.DC_PLSQL.NDCF

NDCF:「オンザフライ」でのカーソル宣言の回避

Proc Comment

OPT.PLSQL.DOC_PLSQL.ProcComment

ProcComment:コメントなしの関数とプロシージャ

A M

OPT.PLSQL.GEN_PLSQL.AM

AM:TO_DATE関数とTO_CHAR関数における日付マスクの指定

Avoid Dual

OPT.PLSQL.GEN_PLSQL.AvoidDual

AvoidDual:DUALテーブルに対するSELECTの使用禁止

Avoid Inner

OPT.PLSQL.GEN_PLSQL.AvoidInner

AvoidInner:INNER JOIN使用の検出

C O F

OPT.PLSQL.GEN_PLSQL.COF

COF:条件演算子およびフィルタ演算子の使用禁止

D H

OPT.PLSQL.GEN_PLSQL.DH

DH:ヒントの回避

G E R2

OPT.PLSQL.GEN_PLSQL.GER2

GER2:例外処理におけるWHEN OTHERS句の必須化

G E R3

OPT.PLSQL.GEN_PLSQL.GER3

GER3:例外処理におけるWHEN OTHERS THEN NULLの禁止

N D F Exception

OPT.PLSQL.GEN_PLSQL.NDFException

NDFException:SELECT INTO文使用時におけるNO_DATA_FOUND例外処理のチェック

W L

OPT.PLSQL.GEN_PLSQL.WL

WL:EXIT WHENの代わりのWHILEの使用

E P P C

OPT.PLSQL.MISC_PLSQL.EPPC

EPPC:複雑なパラメータの受け渡しの回避

L E P

OPT.PLSQL.MISC_PLSQL.LEP

LEP:外部ロジックにおけるパラメータの欠如

Repeated Code

OPT.PLSQL.MISC_PLSQL.RepeatedCode

RepeatedCode:同じクエリコードの繰り返しの回避

Avoid Func

OPT.PLSQL.OYR_PLSQL.AvoidFunc

AvoidFunc:WHERE句においてテーブルのフィールドに関数を適用したクエリがないことをチェック

Count Asterisk

OPT.PLSQL.OYR_PLSQL.CountAsterisk

CountAsterisk:COUNT(*)関数の使用禁止

Double Select

OPT.PLSQL.OYR_PLSQL.DoubleSelect

DoubleSelect:2つの連続したクエリにおける同じWHERE句使用の回避

Cursor Snarfing

OPT.PLSQL.SEC.CursorSnarfing

CursorSnarfing:カーソルスナーフィングの防止

Insecure Randomness

OPT.PLSQL.SEC.InsecureRandomness

InsecureRandomness:安全でない標準的な擬似乱数生成器

情報

Useless Query

OPT.PLSQL.CNU_PLSQL.UselessQuery

UselessQuery:WHERE句でフィルタとして使用されるフィールドを取得するクエリについての警告

情報

C A B

OPT.PLSQL.DOC_PLSQL.CAB

CAB:ヘッダーでのコメントの記述

情報

E N E C

OPT.PLSQL.FM_PLSQL.ENEC

ENEC:名前での逆引用符の使用禁止

情報

L B

OPT.PLSQL.FM_PLSQL.LB

LB:文中の適切な空白行

情報

M E I

OPT.PLSQL.FM_PLSQL.MEI

MEI:コード行のインデント

情報

Nomenclator

OPT.PLSQL.FM_PLSQL.Nomenclator

Nomenclator:変数名、パラメータ名、例外名、カーソル名における接頭辞の使用

情報

DB L

OPT.PLSQL.GEN_PLSQL.DBL

DBL:@dblinkの検索

情報

Avoid independent procedures called from system logic

OPT.PLSQL.MISC_PLSQL.EPILS

EPILS:システムロジックから呼び出される独立したプロシージャ使用の回避

情報

Avoid using procedures/functions from DD

OPT.PLSQL.MISC_PLSQL.NPFD

NPFD:DDのプロシージャ/関数の使用回避

情報

N E D V

OPT.PLSQL.NOM_PLSQL.NEDV

NEDV:変数の特定の命名規則

情報

P A Q2

OPT.PLSQL.NOM_PLSQL.PAQ2

PAQ2:パッケージの特定の命名規則

情報

P R M A

OPT.PLSQL.NOM_PLSQL.PRMA

PRMA:予約語の大文字での記述

情報

Condition Order

OPT.PLSQL.OYR_PLSQL.ConditionOrder

ConditionOrder:複数の条件が使用されている制御構造の検索

情報

Default Authid

OPT.PLSQL.SEC.DefaultAuthid

DefaultAuthid:明示的な AUTHID 節はない。

Useless Var

OPT.PLSQL.CNU_PLSQL.UselessVar

UselessVar:宣言されているが使用されていないローカル変数の検出

Func Not Null

OPT.PLSQL.DC_PLSQL.FuncNotNull

FuncNotNull:関数およびプロシージャでパラメータをNOT NULLとして定義しないこと

L C N I

OPT.PLSQL.DC_PLSQL.LCNI

LCNI:不正確なリテラル定数と数値定数

Cap Word

OPT.PLSQL.FM_PLSQL.CapWord

CapWord:PLSQLキーワードの大文字での記述

C C

OPT.PLSQL.GEN_PLSQL.CC

CC:オープンした全てのカーソルのクローズ

C R C

OPT.PLSQL.GEN_PLSQL.CRC

CRC:オープンした全てのREF CURSORのクローズ

Do not qualify related tables

OPT.PLSQL.GEN_PLSQL.CTI

CTI:関連するテーブル参照時におけるテーブル名の修飾の回避

G E R0

OPT.PLSQL.GEN_PLSQL.GER0

GER0: 適切なエラー処理の実行

G E R1

OPT.PLSQL.GEN_PLSQL.GER1

GER1:例外処理のブロックの必要性(ルーチンごとに少なくとも1つの例外処理が必要)

J O I N2

OPT.PLSQL.GEN_PLSQL.JOIN2

JOIN2:JOIN句における固有のエイリアスの使用

N U L L

OPT.PLSQL.GEN_PLSQL.NULL

NULL:NULL値の適切な扱い

Oracle Tables

OPT.PLSQL.GEN_PLSQL.OracleTables

OracleTables:Oracleデータディクショナリのテーブルおよびビューの使用回避

U I L O

OPT.PLSQL.GEN_PLSQL.UILO

UILO:OR演算子の代わりのIN句の使用

Use Constants

OPT.PLSQL.GEN_PLSQL.UseConstants

UseConstant:WHERE句でのリテラルの回避

Var Loop

OPT.PLSQL.GEN_PLSQL.VarLoop

VarLoop:ループ内での変数の初期化の回避

C T E

OPT.PLSQL.NOM_PLSQL.CTE

CTE:定数名の大文字での記述

Avoid Neg

OPT.PLSQL.OYR_PLSQL.AvoidNeg

AvoidNeg:WHERE句での否定形の回避

In Selects

OPT.PLSQL.OYR_PLSQL.InSelects

InSelects:FROM句やWHERE句でのサブクエリを含むSELECT文の回避

N V L

OPT.PLSQL.OYR_PLSQL.NVL

NVL:NVL関数使用の回避

Use Between

OPT.PLSQL.OYR_PLSQL.UseBetween

UseBetween:< [] {}の使用禁止

C I F A

OPT.PLSQL.GEN_PLSQL.CIFA

CIFA:CASE文の使用(ネストしたelseif文の代わりにCASE文を使用すべき)

Def Sintax

OPT.PLSQL.GEN_PLSQL.DefSintax

DefSintax:SELECT文の適切な構文定義

E F C W

OPT.PLSQL.GEN_PLSQL.EFCW

EFCW:WHERE句における関数の使用の回避

N A P E

OPT.PLSQL.GEN_PLSQL.NAPE

NAPE:エラースタックへのアクセス禁止

N F S0

OPT.PLSQL.GEN_PLSQL.NFS0

NFS0:出力フォーマットの禁止

N F S1

OPT.PLSQL.GEN_PLSQL.NFS1

NFS1:RPAD関数での出力フォーマットの禁止

N F S2

OPT.PLSQL.GEN_PLSQL.NFS2

NFS2:LPAD関数での出力フォーマットの禁止

N F S3

OPT.PLSQL.GEN_PLSQL.NFS3

NFS3:RTRIM関数での出力フォーマットの禁止

N F S4

OPT.PLSQL.GEN_PLSQL.NFS4

NFS4:LTRIM関数での出力フォーマットの禁止

Oracle Var

OPT.PLSQL.GEN_PLSQL.OracleVar

OracleVar:EXCEPTIONブロック外での制御変数の使用禁止

P P R

OPT.PLSQL.GEN_PLSQL.PPR

PPR:参照パラメータの使用

U H N

OPT.PLSQL.GEN_PLSQL.UHN

UHN:NOCOPYの使用

Undef Case

OPT.PLSQL.GEN_PLSQL.UndefCase

UndefCase:WHEN句で同じ制御変数が使用されているかのチェック

Table Alias

OPT.PLSQL.MISC_PLSQL.TableAlias

TableAlias:各テーブルのエイリアスの定義

E X C

OPT.PLSQL.NOM_PLSQL.EXC

EXC:例外処理の命名規則

E X C G

OPT.PLSQL.NOM_PLSQL.EXCG

EXCG:パッケージにおけるグローバル宣言の例外処理の命名規則

F U N C

OPT.PLSQL.NOM_PLSQL.FUNC

FUNC:関数の適切なフォーマット

F U N C2

OPT.PLSQL.NOM_PLSQL.FUNC2

FUNC2:関数の命名規則

F V C

OPT.PLSQL.NOM_PLSQL.FVC

FVC:変数の適切なフォーマット

I D T

OPT.PLSQL.NOM_PLSQL.IDT

IDT:変数名のプレフィックス(接頭辞)

P A Q

OPT.PLSQL.NOM_PLSQL.PAQ

PAQ:パッケージの適切なフォーマット

P R M

OPT.PLSQL.NOM_PLSQL.PRM

PRM:パラメータの特定の命名規則

P R O C

OPT.PLSQL.NOM_PLSQL.PROC

PROC:プロシージャの適切なフォーマット

Avoid Percent

OPT.PLSQL.OYR_PLSQL.AvoidPercent

AvoidPercent:LIKEフィルタと「%」パターンを使用するクエリについての警告

I C T

OPT.PLSQL.OYR_PLSQL.ICT

ICT:クエリを実行するテーブルの列の配置

Too Much Or

OPT.PLSQL.OYR_PLSQL.TooMuchOr

TooMuchOr:ORの多用(同じフィールドに対して複数のORチェックを行わないこと)

Suspicious Code

OPT.PLSQL.SEC.SuspiciousCode

SuspiciousCode:悪意のある可能性があるコード

Unqualified Item At Invoker Rights Routine

OPT.PLSQL.SEC.UnqualifiedItemAtInvokerRightsRoutine

UnqualifiedItemAtInvokerRightsRoutine:AUTHID CURRENT_USERルーチンにおいて修飾されていないデータベース項目

User Controlled SQL Primary Key

OPT.PLSQL.SEC.UserControlledSQLPrimaryKey

UserControlledSQLPrimaryKey:ユーザ制御の主キーのクエリ使用禁止

Hardcoded Credential

OPT.PLSQL.SEC.HardcodedCredential

HardcodedCredential:ハードコードされた資格情報の使用