Octopus is a security analysis framework for WebAssembly module and Blockchain Smart Contract. The purpose of Octopus is to provide an easy way to analyze closed-source WebAssembly module and smart contracts bytecode to understand deeper their internal behaviours.
What is Octopus
Octopus is a security analysis framework for WebAssembly module and Blockchain Smart Contract.Octopus support the following types of programs/smart contracts:
-
WebAssembly module (WASM)
-
Bitcoin script (BTC script)
-
Ethereum smart contracts (EVM bytecode & Ewasm)
-
EOS smart contracts (WASM)
-
NEO smart contracts (AVM bytecode)
Why is Octopus Required
The necessity for Octopus could be related to various factors, such as:
Explorer:
Octopus JSON-RPC client implementation to communicate with blockchain platforms
Disassembler:
Octopus can translate bytecode into assembly representation
Control Flow Analysis:
Octopus can generate a Control Flow Graph (CFG)
Call Flow Analysis:
Octopus can generate a Call Flow Graph (function level)
IR conversion (SSA):
Octopus can simplify assembly into Static Single Assignment (SSA) representation
Symbolic Execution:
Octopus use symbolic execution to find new paths into a program
Automation:
It might automate specific tasks or processes, making them more efficient and less error-prone.
Scalability:
Octopus might be capable of handling tasks at scale, which would be challenging to manage manually.
Security:
It might enhance security by providing tools or features to protect systems or applications.
Simplification:
Octopus could simplify complex tasks, making them accessible to a wider audience.
How to Install Octopus:
-
Install system dependencies
# Install system dependencies
sudo apt-get update && sudo apt-get install python-pip graphviz xdg-utils -y
-
Install Octopus:
# Download Octopus
git clone https://github.com/pventuzelo/octopus
cd octopus
# Install Octopus library/CLI and its dependencies
python3 setup.py install
or
# but prefer the first way to install if possible
pip3 install octopus
-
Run tests
# Run tests for all platforms (disassembly, CFG, ...
./run_tests.s
# Run tests that require internet access (explorer tests
./run_explorer_tests.sh
# {btc, eth, eos, neo, wasm}_run_tests.s
cd octopus/tests
./wasm_run_tests.sh
- Docker container
A docker container providing the toolset is available at docker hub. In a terminal, run the following commands:
docker pull smartbugs/octopus
docker run -it smartbugs/octopus
cd octopus
python3 octopus_eth_evm.py -s -f examples/ETH/evm_bytecode/61EDCDf5bb737ADffE5043706e7C5bb1f1a56eEA.bytecode
Follow this blogs and video for more information about Octopus:
Reversing and Vulnerability research of Ethereum Smart Contracts
Reversing Ethereum Smart Contracts to find out what's behind EVM bytecode
Reversing and Vulnerability research of Ethereum Smart Contracts
Reversing Ethereum Smart Contracts (Introduction)
Dissection of WebAssembly module
Reverse Engineering Of Blockchain Smart Contracts
FAQs about Fuzzing Labs Octopus:
Q1: Is FuzzyingLabs free?
A1: Some resources might be free, but certain courses might have associated fees. Check the course details for pricing information.
Q2: Do I need prior blockchain experience to enroll?
A2: FuzzyingLabs offers courses suitable for various skill levels, including beginners and experienced developers. Prerequisites are typically mentioned in course descriptions.
Q3: Are certificates provided upon course completion?
A3: Many courses offer certificates upon successful completion. Check the specific course details for information on certificates.
Q4: Can I interact with instructors?
A4: Yes, you can interact with instructors and fellow learners through discussion forums and community channels provided.