icon
Cyber Secure
Services
icon
Cyber Secure
Services
icon
Network Security
Solutions

Smart Contract Auditing

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut elit tellus, luctus nec ullamcorper mattis, pulvinar dapibus leo.

Bitcoins and Ethereum fundamentally uses Blockchain as the underlying technology.

              

Although security controls within Blockchain is inherited – the attack surface on the Bitcoin, Ethereum crypto-currency network has expanded significantly targeting the blockchain security architecture.

Cyber Security for Blockchain Technology
Blockchain Technology is set to revolutionize the way we conduct e-commerce and transactions
The technology itself is based on core principles of security
Blockchain is based on a decentralized ledger system that promotes cyber security through;
Blockchain as a technology strategy that has an infinite set of use cases and usage models.

Cyber Security for Blockchain Technology

Blockchain Technology is set to revolutionize the way we conduct e-commerce and transactions
The technology itself is based on core principles of security
Blockchain is based on a decentralized ledger system that promotes cyber security through;
Blockchain as a technology strategy that has an infinite set of use cases and usage models.
Blockchain Technology is set to revolutionize the way we conduct e-commerce and transactions
Blockchain Technology is set to revolutionize the way we conduct e-commerce and transactions
Our Approach
AT DTS we have developed our own methodology on delivering secure-by-design blockchain technology architecture based on a multi-layer security approach as follows which involves various cyber security consulting services in their respective domains;
Blockchain Cyber Security – Defence-in-Depth

Our Approach

AT DTS we have developed our own methodology on delivering secure-by-design blockchain technology architecture based on a multi-layer security approach as follows which involves various cyber security consulting services in their respective domains;
Blockchain Cyber Security – Defence-in-Depth
transaction level
TRANSACTIONAL LEVEL

Transaction Validation
Transaction Signing
Transaction Auditing
Transaction Logging
Consensus Life-cycle
Consensus Algorithm
Consensus Code Development
Source Code Review
Auto-Update Life-cycle
Non-Repudiation
Keyless Security Infrastructure (KSI)
Application Security
Key Management
Immutability Protection
Data Integrity
Finality Protection
Multi-Signature Co-Signing
Policy and Security
Approval and Workflows
Permissioned and Permission-less
Hardware (HSM) Crypto

account level
ACCOUNT LEVEL

User Account Management
User Account Security
Authentication Profiles
Two-Factor Authentication
Self-Managed Wallet Security
Exchange Hosted Account Security
Denial of Services (DoS)
Phishing Prevention and Security
Hosted Exchanges
Wallet Provider Security Controls
My Wallet Security Controls
Logging and Auditing
Application Security
Sessions and Cookie Management
Local Storage Security
Personal and Privacy Information
Policy and Security
Role Based Access Control
Multi-Tenancy
Privacy and Identity Management
Account Verification Process

contract level
CONTRACT LEVEL

Script Source Code Review
Contract Code Audit
Programming Security
Secure Development Life-cycle
Contract Threat Correlation
Threat Simulation Smart Rules
Contract Verification Workflow
Fallback function security
Bug Identification
Variable Limiting
Program function validation
Call stack limit vulnerability
Contract Data Classification
Proof of Work
Smart Contract Cryptography
Re-entrancy Protection
Contract Vulnerability Assessment
Check Effect Interaction Pattern
Function Wrapping
Compiler Bugs
Unbound Loops

distributed organization level
DISTRIBUTED ORGANIZATION LEVEL

Organization Level Security and Conformity Requirements
Technical Security Requirements
Token Assignment
Token Authorization
Validators Security Control
Censorship Policy
Blockchain contract approval workflow
Entity Level Security Validation
Security Readiness Verification
HSM Crypto
Key Management
Application Security
Multi-Signature Co-Signing
Distributed Authorization Process

networking level
NETWORK AND APPLICATION LEVEL

Permissioned Network
Open or Hybrid Architecture
P2P Network Security Architecture
VPN and secure communication
Next Generation Firewalls
Security Zoning
Network Segmentation
Intrusion Prevention System
Web Application Security Controls
API Security Gateway
PKI Security Infrastructure
Virtual Machine Infrastructure
Data Center Switching
Data Center Routing
Protocol Security
In-band and Out of band Management
Threat intelligence
Phishing Security
Threat Hunting

governance level
GOVERNANCE LEVEL

Security Operations
Logging and Monitoring
Governance and Compliance
Risk Management
Data Security
Data Classification
Data Labelling
Transactional Records
Smart Contract Tagging
Security Approval Workflows
Information Security Policies
Security Processes and Procedures
Asset Management
Disaster Recovery
Backup and Restoration
Security Awareness and Training

What is a Smart Contract?
Why audit a smart contract?
Attacks on a smart contract

What is a Smart Contract?

Blockchain Technology is set to revolutionize the way we conduct e-commerce and transactions

Why audit a smart contract?

Attacks on a smart contract

private key
Private key theft
51% attacks
51% attack
logical flaws
Logic flaws in the contract code
re-entrancy
Re-entrancy attacks
call to the unknown
Call to the unknown
store secret data
Declaring a private function to store secret data
Practical examples of flaws in SMART CONTRACTS
Example of a vulnerable withdraw balance solidity code (1)

This function gets the user’s balance and sets it to the “amountToWithdraw” variable. Then, the function sends the user the amount set in the “amountToWithdraw” variable. If the transaction is successful the “userBalances” is set to 0 because all the funds deposited in the balance are sent to the user

function withdrawBalance() {
uint amountToWithdraw = userBalances[msg.sender];
if (msg.sender.call.value(amountToWithdraw)() == false) {
throw;
}
userBalances[msg.sender] = 0;
}

Example of a vulnerable withdraw balance solidity code (2)
The below smart contract checks if the balance of the sender is greater than the amount the sender is requesting to send (well and good).

function forwardFunds(address receiver, uint amount) public {
require(balances[msg.sender] >= amount);
receiver.transfer(amount);
balances[receiver] -= amount;
LogFundsForwarded(msg.sender, receiver, amount);
}

Practical examples of flaws in SMART CONTRACTS

Example of a vulnerable withdraw balance solidity code (1)

This function gets the user’s balance and sets it to the “amountToWithdraw” variable. Then, the function sends the user the amount set in the “amountToWithdraw” variable. If the transaction is successful the “userBalances” is set to 0 because all the funds deposited in the balance are sent to the user

function withdrawBalance() {
uint amountToWithdraw = userBalances[msg.sender];
if (msg.sender.call.value(amountToWithdraw)() == false) {
throw;
}
userBalances[msg.sender] = 0;
}

function forwardFunds(address receiver, uint amount) public {
require(balances[msg.sender] >= amount);
receiver.transfer(amount);
balances[receiver] -= amount;
LogFundsForwarded(msg.sender, receiver, amount);
}

Example of a vulnerable withdraw balance solidity code (2)  
The below smart contract checks if the balance of the sender is greater than the amount the sender is requesting to send (well and good).