Swiftのスキャンルール
Contrast Scanでは、Swiftに対して以下のルールをサポートしています。
深刻度 | Contrastルール | エンジンルールID | 説明 |
---|---|---|---|
重大 | Code Injection | OPT.SWIFT.SECURITY.CodeInjection | CodeInjection:動的なコード評価における無害化されていないユーザ制御入力の回避 |
重大 | Command Injection | OPT.SWIFT.SECURITY.CommandInjection | CommandInjection:OSコマンドで使用する特殊要素の不適切な無害化(OSコマンドインジェクション) |
重大 | Connection String Parameter Pollution | OPT.SWIFT.SECURITY.ConnectionStringParameterPollution | ConnectionStringParameterPollution::信頼できない入力で汚染された接続文字列 |
重大 | Cross Site Scripting | OPT.SWIFT.SECURITY.CrossSiteScripting | CrossSiteScripting:Webページ生成中の入力の不適切な無害化(クロスサイトスクリプティング) |
重大 | Header Manipulation | OPT.SWIFT.SECURITY.HeaderManipulation | HeaderManipulation:HTTPレスポンスヘッダやCookieにおける未検証データの使用の回避 |
重大 | JSON Injection | OPT.SWIFT.SECURITY.JSONInjection | JSONInjection:JSONエンティティにおける無害化されていないユーザ制御入力の使用の回避(JSONインジェクション) |
重大 | Mail Command Injection | OPT.SWIFT.SECURITY.MailCommandInjection | MailCommandInjection:メールコマンドインジェクション |
重大 | No SQL Injection | OPT.SWIFT.SECURITY.NoSQLInjection | NoSQLInjection:データクエリロジックにおける特殊要素の不適切な無害化(NoSQLインジェクション) |
重大 | Regex Injection | OPT.SWIFT.SECURITY.RegexInjection | RegexInjection:悪意のある正規表現によるDos攻撃の防止(正規表現インジェクション) |
重大 | SQL Injection | OPT.SWIFT.SECURITY.SqlInjection | SqlInjection:無害化されていないユーザ入力によって生成されるSQLコードの回避(SQLインジェクション攻撃に対して脆弱) |
重大 | Xpath Injection | OPT.SWIFT.SECURITY.XpathInjection | XpathInjection:無害化されていないユーザ入力で生成されるXPath式の回避 |
重大 | Missing Password Field Masking | OPT.SWIFT.SECURITY.MissingPasswordFieldMasking | MissingPasswordFieldMasking:マスクされていないパスワード入力フィールド |
重大 | Avoid Dangerous Try | OPT.SWIFT.RELIABILITY.AvoidDangerousTry | AvoidDangerousTry:try演算子と!演算子の併用回避 |
重大 | Path Traversal | OPT.SWIFT.SECURITY.PathTraversal | PathTraversal:リソースへのパス名で構成される、無害化されていないユーザ制御の入力の回避 |
重大 | Weak Cryptographic Hash | OPT.SWIFT.SECURITY.WeakCryptographicHash | WeakCryptographicHash:脆弱な暗号化ハッシュのデータの完全性の欠如 |
重大 | Weak Cryptographic Hash Salt | OPT.SWIFT.SECURITY.WeakCryptographicHashSalt | WeakCryptographicHashSalt:脆弱な暗号化ソルトのデータの完全性の欠如 |
重大 | Weak Cryptographic Key | OPT.SWIFT.SECURITY.WeakCryptographicKey | WeakCryptographicKey:暗号化に使用される脆弱なキー |
重大 | Weak Encryption | OPT.SWIFT.SECURITY.WeakEncryption | WeakEncryption:脆弱な共通鍵暗号アルゴリズム |
重大 | Weak Key Derivation Iteration | OPT.SWIFT.SECURITY.WeakKeyDerivationIteration | WeakKeyDerivationIteration:キー導出の反復回数不足 |
重大 | Weak Key Derivation Password | OPT.SWIFT.SECURITY.WeakKeyDerivationPassword | WeakKeyDerivationPassword:キー導出における空のパスワード/nilのパスワードの使用 |
重大 | Weak Symmetric Encryption Initialization Vector | OPT.SWIFT.SECURITY.WeakSymmetricEncryptionInitializationVector | WeakSymmetricEncryptionInitializationVector:脆弱な暗号初期化ベクトル |
重大 | Weak Symmetric Encryption Mode Of Operation | OPT.SWIFT.SECURITY.WeakSymmetricEncryptionModeOfOperation | WeakSymmetricEncryptionModeOfOperation:共通鍵暗号での脆弱な操作モードの使用禁止 |
高 | Http Parameter Pollution Rule | OPT.SWIFT.SECURITY.HttpParameterPollutionRule | HttpParameterPollutionRule:HTTPパラメータ汚染(HPP) |
高 | Log Forging | OPT.SWIFT.SECURITY.LogForging | LogForging:ログの出力の不適切な無害化 |
高 | Open Redirect | OPT.SWIFT.SECURITY.OpenRedirect | OpenRedirect:未検証の入力によってリダイレクト先のURLを制御することを許可しない |
高 | Resource Injection | OPT.SWIFT.SECURITY.ResourceInjection | ResourceInjection:リソース識別子の不適切な制御 (リリソースインジェクション) |
高 | Unsafe Reflection | OPT.SWIFT.SECURITY.UnsafeReflection | UnsafeReflection:クラスまたはコードを選択するための外部制御入力の使用(安全でないリフレクション) |
高 | URL Scheme Hijacking | OPT.SWIFT.SECURITY.URLSchemeHijacking | URLSchemeHijacking:ユーザ入力によるURLスキームの乗っ取り |
高 | XML Entity Injection | OPT.SWIFT.SECURITY.XMLEntityInjection | XMLEntityInjection:XMLエンティティインジェクション |
高 | XML Injection | OPT.SWIFT.SECURITY.XMLInjection | XMLInjection: XMLインジェクション(別名、ブラインドXPathインジェクション) |
高 | Hardcoded Ip | OPT.SWIFT.SECURITY.HardcodedIp | HardcodedIp:ソースコードにおけるIPアドレスの書き込み禁止 |
高 | Avoid Maximum Location Accuracy When Possible | OPT.SWIFT.EFFICIENCY.AvoidMaximumLocationAccuracyWhenPossible | AvoidMaximumLocationAccuracyWhenPossible:デフォルトでの最適な位置情報精度の使用回避 |
高 | Cache Date Formatters | OPT.SWIFT.EFFICIENCY.CacheDateFormatters | CacheDateFormatters:NSDateFormatterのキャッシュ(NSDateFormatter型のインスタンスを複数作成するのではなく、単一のインスタンスをキャッシュして再利用) |
高 | Do Not Instantiate Temporal Objects Loops | OPT.SWIFT.EFFICIENCY.DoNotInstantiateTemporalObjectsLoops | DoNotInstantiateTemporalObjectsLoops:ループ本体における一時オブジェクトの割り当ての回避 |
高 | Minimize Bluetooth Interaction | OPT.SWIFT.EFFICIENCY.MinimizeBluetoothInteraction | MinimizeBluetoothInteraction:スキャンオプションとしてのCBCentralManagerScanOptionAllowDuplicatesKey定数の使用の回避 |
高 | Class Cyclomatic Complexity | OPT.SWIFT.MAINTAINABILITY.ClassCyclomaticComplexity | ClassCyclomaticComplexity:循環的複雑度の高いクラスの使用の回避 |
高 | Dead Stores | OPT.SWIFT.MAINTAINABILITY.DeadStores | DeadStores:未使用のboundローカル変数 |
高 | Method Cyclomatic Complexity | OPT.SWIFT.MAINTAINABILITY.MethodCyclomaticComplexity | MethodCyclomaticComplexity:循環的複雑度の高いメソッドの使用の回避 |
高 | Unused Local Var | OPT.SWIFT.MAINTAINABILITY.UnusedLocalVar | UnusedLocalVar:未使用のローカル変数 |
高 | Hardcoded Absolute Path | OPT.SWIFT.PORTABILITY.HardcodedAbsolutePath | HardcodedAbsolutePath:絶対パスのハードコード禁止 |
高 | Avoid Empty Catch Blocks | OPT.SWIFT.RELIABILITY.AvoidEmptyCatchBlocks | AvoidEmptyCatchBlocks:空のCATCHブロックの使用の回避 |
高 | User Controlled SQL Primary Key | OPT.SWIFT.SECURITY.UserControlledSQLPrimaryKey | UserControlledSQLPrimaryKey:ユーザ制御の主キーのクエリ使用禁止 |
高 | Insecure Transport | OPT.SWIFT.SECURITY.InsecureTransport | InsecureTransport:安全でない送信 |
低 | Password In Comment Rule | OPT.SWIFT.SECURITY.PasswordInCommentRule | PasswordInCommentRule:システムまたはシステムコード内に平文でのパスワード/パスワードの詳細の保存を検出(システムのセキュリティを脅かす可能性あり) |
低 | Avoid Locks | OPT.SWIFT.EFFICIENCY.AvoidLocks | AvoidLocks:ロックの使用の回避 |
低 | Avoid Commented Out Code | OPT.SWIFT.MAINTAINABILITY.AvoidCommentedOutCode | AvoidCommentedOutCode:コメントアウトされたコードブロックの回避 |
低 | Functions Should Not Return Constants | OPT.SWIFT.MAINTAINABILITY.FunctionsShouldNotReturnConstants | FunctionsShouldNotReturnConstants:関数における同じ定数の戻り値の回避 |
低 | Review Useless Empty Blocks | OPT.SWIFT.MAINTAINABILITY.ReviewUselessEmptyBlocks | ReviewUselessEmptyBlocks:空のブロックでのループや条件文の使用回避 |
低 | Unused Parameter | OPT.SWIFT.MAINTAINABILITY.UnusedParameter | UnusedParameter:未使用の関数パラメータ |
低 | Only One Return | OPT.SWIFT.RELIABILITY.OnlyOneReturn | OnlyOneReturn:関数またはメソッドでのreturn文の多用 |
低 | Unconditional Jump Statements | OPT.SWIFT.RELIABILITY.UnconditionalJumpStatements | UnconditionalJumpStatements:無条件ジャンプ文の誤った使用 |
中 | Plaintext Storage In A Cookie Rule | OPT.SWIFT.SECURITY.PlaintextStorageInACookieRule | PlaintextStorageInACookieRule:Cookieでの機密情報の平文保存 |
中 | Unsafe Cookie | OPT.SWIFT.SECURITY.UnsafeCookie | UnsafeCookie:適切なセキュリティプロパティを持つサーバ側のCookieの生成 |
中 | Serialization Injection | OPT.SWIFT.SECURITY.SerializationInjection | SerializationInjection:信頼できないデータのデシリアライゼーション |
中 | String Format Injection | OPT.SWIFT.SECURITY.StringFormatInjection | StringFormatInjection:無害化されていないユーザ入力をフォーマット文字列から除外 |
中 | Hardcoded Username Password | OPT.SWIFT.SECURITY.HardcodedUsernamePassword | HardcodedUsernamePassword:ハードコードされた資格情報の使用 |
中 | HTTP Response Caching Leak | OPT.SWIFT.SECURITY.HTTPResponseCachingLeak | HTTPResponseCachingLeak:機密性の高いHTTPレスポンスのキャッシュ |
中 | Insecure Temporary File | OPT.SWIFT.SECURITY.InsecureTemporaryFile | InsecureTemporaryFile:安全ではない一時ファイルの作成と使用(アプリケーションとシステムのデータが攻撃に対して脆弱性になる可能性あり) |
中 | Keyboard Caching Leak | OPT.SWIFT.SECURITY.KeyboardCachingLeak | KeyboardCachingLeak:キーボードキャッシュによる機密データの漏洩 |
中 | Password In Configuration File | OPT.SWIFT.SECURITY.PasswordInConfigurationFile | PasswordInConfigurationFile:設定ファイルでの認証情報の使用 |
中 | Pasteboard Caching Leak | OPT.SWIFT.SECURITY.PasteboardCachingLeak | PasteboardCachingLeak:ペーストポードのキャッシュメカニズムによる機密データの漏洩 |
中 | Privacy Violation | OPT.SWIFT.SECURITY.PrivacyViolation | PrivacyViolation:個人情報の漏洩(プライバシー侵害) |
中 | Sensitive Core Data | OPT.SWIFT.SECURITY.SensitiveCoreData | SensitiveCoreData:CoreDataに格納された機密情報(プライバシー侵害) |
中 | Sensitive Data Accessed From Itunes | OPT.SWIFT.SECURITY.SensitiveDataAccessedFromItunes | SensitiveDataAccessedFromItunes:個人情報の漏洩(プライバシー侵害) |
中 | Sensitive SQL | OPT.SWIFT.SECURITY.SensitiveSQL | SensitiveSQL:SQLデータベースに格納された機密データ(プライバシーの侵害) |
中 | Sensitive No SQL | OPT.SWIFT.SECURITY.SensitiveNoSQL | SensitiveNoSQL:NoSQLデータベースに格納された機密データ(プライバシーの侵害) |
中 | Sensitive User Defaults | OPT.SWIFT.SECURITY.SensitiveUserDefaults | SensitiveUserDefaults:UserDefaultsに格納された機密情報(プライバシー侵害) |
中 | Serializable Class Containing Sensitive Data | OPT.SWIFT.SECURITY.SerializableClassContainingSensitiveData | SerializableClassContainingSensitiveData:機密データを含むシリアライズ可能クラスの検出 |
中 | Screen Caching Leak | OPT.SWIFT.SECURITY.ScreenCachingLeak | ScreenCachingLeak:アプリがバックグランドに移動した時の画面キャッシュメカニズムによる機密データの漏洩 |
中 | Third Party Keyboard Allowed | OPT.SWIFT.SECURITY.ThirdPartyKeyboardAllowed | ThirdPartyKeyboardAllowed:サードパーティのキーボードへの機密データ公開の回避 |
中 | Avoid Comparing Count To Zero | OPT.SWIFT.EFFICIENCY.AvoidComparingCountToZero | AvoidComparingCountToZero:isEmptyを使用したコレクションの空チェック |
中 | Stop Scanning On Device Found | OPT.SWIFT.EFFICIENCY.StopScanningOnDeviceFound | StopScanningOnDeviceFound:デバイス検出時のスキャンの停止 |
中 | Vars Should Be Constants | OPT.SWIFT.EFFICIENCY.VarsShouldBeConstants | VarsShouldBeConstants:値が変更されない変数の定数化 |
中 | Avoid Excessive Nested Statements | OPT.SWIFT.MAINTAINABILITY.AvoidExcessiveNestedStatements | AvoidExcessiveNestedStatements:深すぎるネストのステートメントの回避 |
中 | Avoid Same Class Field Names | OPT.SWIFT.MAINTAINABILITY.AvoidSameClassFieldNames | AvoidSameClassFieldNames:クラス名と属性名の一致禁止 |
中 | Avoid Same Method Field Names | OPT.SWIFT.MAINTAINABILITY.AvoidSameMethodFieldNames | AvoidSameMethodFieldNames:メソッドとクラスフィールドを大文字と小文字の違いのみで区別することの禁止 |
中 | Avoid Many Parameters Function | OPT.SWIFT.MAINTAINABILITY.AvoidManyParametersFunction | AvoidManyParametersFunction:関数やメソッドにおける引数の多用 |
中 | Density Of Comments | OPT.SWIFT.MAINTAINABILITY.DensityOfComments | DensityOfComments:ソースコードの適切なコメント化 |
中 | Nested Switch Statement | OPT.SWIFT.MAINTAINABILITY.NestedSwitchStatement | NestedSwitchStatement:switch文のネストの回避 |
中 | One Statement Per Line | OPT.SWIFT.MAINTAINABILITY.OneStatementPerLine | OneStatementPerLine:1行に1つのステートメントのみを使用 |
中 | Unused Private Function | OPT.SWIFT.MAINTAINABILITY.UnusedPrivateFunction | UnusedPrivateFunction:未使用のprivateメソッドとコンストラクタの回避 |
中 | Avoid Forced Type Conversion | OPT.SWIFT.RELIABILITY.AvoidForcedTypeConversion | AvoidForcedTypeConversion:強制的な型変換の回避 |
中 | Buffer Overflow | OPT.SWIFT.RELIABILITY.BufferOverflow | BufferOverflow::メモリ破損の可能性 |
中 | Local Vars With Global Name | OPT.SWIFT.RELIABILITY.LocalVarsWithGlobalName | LocalVarsWithGlobalName:ローカル変数とグローバル変数の名前の重複 |
中 | Potential Encoding Buffer Overflow | OPT.SWIFT.RELIABILITY.PotentialEncodingBufferOverflow | PotentialEncodingBufferOverflow:メモリ破損の可能性 |
中 | Unreachable Code | OPT.SWIFT.RELIABILITY.UnreachableCode | UnreachableCode:到達不可能なコードの回避 |
中 | Use Weak References With Delegate Protocols | OPT.SWIFT.RELIABILITY.UseWeakReferencesWithDelegateProtocols | UseWeakReferencesWithDelegateProtocols:デリゲートプロトコルはクラスのみであることの制限 |
中 | Avoid S M S | OPT.SWIFT.SECURITY.AvoidSMS | AvoidSMS:SMS関連の操作の回避 |
中 | Biometric Without Message | OPT.SWIFT.SECURITY.BiometricWithoutMessage | BiometricWithoutMessage:ユーザ認証を求める理由なしでの、指紋認証の要求 |
中 | Execution After Redirect | OPT.SWIFT.SECURITY.ExecutionAfterRedirect | ExecutionAfterRedirect:リダイレクト処理後のコードの実行(EAR) |
中 | Missing Content Validation | OPT.SWIFT.SECURITY.MissingContentValidation | MissingContentValidation:コンテンツ検証の欠落 |
中 | Potential Infinite Loop | OPT.SWIFT.SECURITY.PotentialInfiniteLoop | PotentialInfiniteLoop:到達不可能な終了条件を持つルール(無限ループ) |
中 | Server Trust Credential Check | OPT.SWIFT.SECURITY.ServerTrustCredentialCheck | ServerTrustCredentialChec:サーバ証明書のトラストチェーンの評価 |
中 | Unchecked Input In Loop Condition | OPT.SWIFT.SECURITY.UncheckedInputInLoopCondition | UncheckedInputInLoopCondition:ループ条件における未チェックの入力 |