BF Cipher (CPH) Bugs Class

Definition

Cipher (CPH) class – Sensitive data are improperly encrypted or ciphertext is improperly decrypted.

Taxonomy

OperationsDefinition
EncryptEncrypt operation – Transform (encipher) intelligible data (plaintext) into unintelligible form (ciphertext) using a cryptographic algorithm and key(s). The goal is to ensure confidentiality.
DecryptDecrypt operation – Transform (decipher) encripted data (ciphertext) into intelligible data (plaintext) using a cryptographic algorithm and key(s).
OperandsDefinition
DataData operand – The data value of an object – stored in object's memory.
CausesDefinition
Code BugCode Bug type – Defect in the implementation of the operation – proper operands over an improper operation. A first cause for the chain of weaknesses underlying a software security vulnerability. Must be fixed to resolve the vulnerability.
   Missing CodeMissing Code bug - The operation is entirely absent.
   Added CodeAdded Code bug - An inappropriate code is added to the implementation of an algorithm.
   Erroneous CodeErroneous Code bug - There is a coding error in the implementation of the operation.
Specification BugSpecification Bug type – Defect in the design of the operation – proper operands over an improper operation. A first cause for the chain of weaknesses underlying a software security vulnerability. Must be fixed to resolve the vulnerability.
   Hardcoded Key
   Wrong Algorithm
   Weak Protocol
Data FaultData Fault/Error type – The object data has harmed semantics or inconsistent or wrong value.
   Weak CiphertextWeak Ciphertext fault/error – yyyddd.
   Unverified DataUnverified Data fault/error – yyyddd.
   Weak KeyWeak Key fault/error – The key is of an insufficiant length.
   Weak Random BitsWeak Random Bits fault/error – yyyddd.
   Repeated IVRepeated IV fault/error – The initialization vector (IV) – the starting nonce of an encryption cryptographic algorithm – is not unique.
   Weak Shared SecretsWeak Shared Secrets fault/error – yyyddd.
   Revealed KeyRevealed Key fault/error – xxx.
ConsequencesDefinition
Data ErrorData Fault/Error type – The object data has harmed semantics or inconsistent or wrong value.
   Corrupted DataCorrupted Data fault/error – The data is modified unintentionally due to a previous weakness (e.g., with a decompress or a decrypt operation); would lead to invalid data for next weakness.
   Meaningless DataMeaningless Data fault/error – yyyddd.
   Weak CiphertextWeak Ciphertext fault/error – yyyddd.
   Revealed KeyRevealed Key fault/error – xxx.
Data Security Final ErrorData Security exploitable error type – xxx
   Revealed PlaintextRevealed Plaintext exploitable error – Intelligible data that has meaning and can be understood without the application of decryption is exposed.
Operations AttributesDefinition
MechanismMechanism operation attribute type – Shows how the operation code is performed.
   Symmetric AlgorithmSymmetric Algorithm operation attribute – The operation is via a key encryption scheme that uses one shared key. Known also as 'secret key algorithm' (e.g., Serpent, Blowfish).
   Asymmetric AlgorithmAsymmetric Algorithm operation attribute – The operation is via a key encryption scheme with two keys: public and private. Known also as 'public key algorithm' (e.g., Diffie-Hellman, RSA).
Source CodeSource Code operation attribute type – Shows where the operation code is in software or firmware.
   CodebaseCodebase operation attribute – The operation is in the programmer's code - in the application itself.
   Third-PartyThird-Party operation attribute – The operation code is in a third-party software.
   Standard LibraryStandard Library operation attribute – The operation code is in the standard library for a particular programming language.
   Compiler/InterpreterCompiler/Interpreter operation attribute – The operation code is in the language processor that allows execution or creates executables (interpreter, compiler, assembler).
Execution SpaceExecution Space operation attribute type – Shows where the operation code is running or with what privilege level.
   UserlandUserland operation attribute – The bugged code runs in an environment with privilege levels, but in unprivileged mode (e.g., ring 3 in x86 architecture).
   KernelKernel operation attribute – The bugged code runs in an environment with privilege levels with access privileged instructions (e.g., ring 0 in x86 architecture).
   Bare-MetalBare-Metal operation attribute – The bugged code runs in an environment without privilege control. Usually, the program is the only software running and has total access to the hardware.
Operands AttributesDefinition
         Data KindData Kind operand attribute type – Shows the category or type of data.
            CredentialsCredentials operand attribute – Passwords, tokens, smart cards, digital certificates, biometrics (fingerprint, hand configuration, retina, iris, voice.) They are sensitive data.
            System DataSystem Data operand attribute – OS's configurations, logs, Web usage. They are sensitive data.
            State DataState Data operand attribute – A snapshot of software behavior. They are sensitive data.
            CryptographicCryptographic operand attribute – Hashes, keys (secret, public, private) and other crypto algorithm parameters (initialization vectors (IVs), shared secrets (e.g., pre-master secrets), domain parameters, and random bits (eandom number - RBG seeds, salt, nonce). They are sensitive data.
            Digital DocumentDigital Document operand attribute – yyyddd They are sensitive data.
         Data StateData State operand attribute type operand attribute – Shows where the data come from.
            StoredStored operand attribute – Data are from a permanent storage (e.g., file, database on a storage device); they are at rest.
            TransferredTransferred operand attribute – Data are from another device via a network (e.g., connecting analog device or another computer).
            In UseIn Use operand attribute – Data are from a volatile storage (e.g., RAM, cache memory).