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:ハードコードされた資格情報の使用 |