add paper template
This commit is contained in:
@@ -1,39 +1,39 @@
|
|||||||
# SWC-124: Write to Arbitrary Storage Location
|
# SWC-124: Write to Arbitrary Storage Location
|
||||||
|
|
||||||
## Introduction
|
## Introduction
|
||||||
|
|
||||||
The aim of this paper is to introduce the SWC-124 smart contract weakness.
|
The aim of this paper is to introduce the SWC-124 smart contract weakness.
|
||||||
In order to do that, the paper will:
|
In order to do that, the paper will:
|
||||||
- describe weakness itself and the consequences if the weakness is exploited;
|
- describe weakness itself and the consequences if the weakness is exploited;
|
||||||
- describe the various forms it may take and construct minimal sample contracts for each variant. It will also describe variants that look similar but are not a weakness, and construct minimal contracts for these non-weaknesses;
|
- describe the various forms it may take and construct minimal sample contracts for each variant. It will also describe variants that look similar but are not a weakness, and construct minimal contracts for these non-weaknesses;
|
||||||
- collect vulnerable contracts used by different papers to motivate/illustrate the weakness;
|
- collect vulnerable contracts used by different papers to motivate/illustrate the weakness;
|
||||||
- summarize the code properties that tools are looking for so that they can detect the weakness;
|
- summarize the code properties that tools are looking for so that they can detect the weakness;
|
||||||
- sketch ways to potentially exploit the different variants of the weakness.
|
- sketch ways to potentially exploit the different variants of the weakness.
|
||||||
|
|
||||||
## Weakness description
|
## Weakness description
|
||||||
|
|
||||||
Smart contracts in Ethereum support persistent storage on the EVM level. It is the contracts responsibility to implement access control to sensitive information
|
Smart contracts in Ethereum support persistent storage on the EVM level. It is the contracts responsibility to implement access control to sensitive information
|
||||||
and doing so incorrectly may allow an attacker:
|
and doing so incorrectly may allow an attacker:
|
||||||
* to read and overwrite sensitive data that should only be accessible to contract owners, maintainers etc.;
|
* to read and overwrite sensitive data that should only be accessible to contract owners, maintainers etc.;
|
||||||
* setting himself as the contract owner and circumventing authorization checks;
|
* setting himself as the contract owner and circumventing authorization checks;
|
||||||
* draining the contract of its funds by, for example, overwriting the address that collects the received tokens;
|
* draining the contract of its funds by, for example, overwriting the address that collects the received tokens;
|
||||||
* TODO: add more
|
* TODO: add more
|
||||||
|
|
||||||
## Various forms
|
## Various forms
|
||||||
|
|
||||||
1. Arrays + integer underflow/overflow
|
1. Arrays + integer underflow/overflow
|
||||||
2. Unchecked assembly calls
|
2. Unchecked assembly calls
|
||||||
3. TODO: add more
|
3. TODO: add more
|
||||||
|
|
||||||
## Samples
|
## Samples
|
||||||
|
|
||||||
TODO
|
TODO
|
||||||
|
|
||||||
## Code properties
|
## Code properties
|
||||||
|
|
||||||
TODO
|
TODO
|
||||||
|
|
||||||
## Potential exploits
|
## Potential exploits
|
||||||
|
|
||||||
TODO
|
TODO
|
||||||
|
|
||||||
|
|||||||
+30
-30
@@ -1,30 +1,30 @@
|
|||||||
# Papers
|
# Papers
|
||||||
## SMARTIAN: Enhancing Smart Contract Fuzzingwith Static and Dynamic Data-Flow Analyses
|
## SMARTIAN: Enhancing Smart Contract Fuzzingwith Static and Dynamic Data-Flow Analyses
|
||||||
|
|
||||||
- listed as: "arbitrary write" (Choi et al., 2021)
|
- listed as: "arbitrary write" (Choi et al., 2021)
|
||||||
- from: [IEEE](https://ieeexplore.ieee.org/document/9678888)
|
- from: [IEEE](https://ieeexplore.ieee.org/document/9678888)
|
||||||
- file: [PDF](choi-ase2021.pdf)
|
- file: [PDF](choi-ase2021.pdf)
|
||||||
|
|
||||||
## SmartFuzzDriverGen: Smart ContractFuzzing Automation for Golang
|
## SmartFuzzDriverGen: Smart ContractFuzzing Automation for Golang
|
||||||
|
|
||||||
- listed as: "buffer-overwrite" (Pani et al., 2023)
|
- listed as: "buffer-overwrite" (Pani et al., 2023)
|
||||||
- from: [ACM](https://dl.acm.org/doi/fullHtml/10.1145/3578527.3578538)
|
- from: [ACM](https://dl.acm.org/doi/fullHtml/10.1145/3578527.3578538)
|
||||||
- file: [PDF](SmartFuzzDriverGen_ Smart Contract Fuzzing Automation for Golang.pdf)
|
- file: [PDF](SmartFuzzDriverGen_ Smart Contract Fuzzing Automation for Golang.pdf)
|
||||||
|
|
||||||
## teEther: Gnawing at Ethereum to Automatically Exploit Smart Contracts
|
## teEther: Gnawing at Ethereum to Automatically Exploit Smart Contracts
|
||||||
|
|
||||||
- listed as: "storage modification" (Krupp and Rossow, 2018)
|
- listed as: "storage modification" (Krupp and Rossow, 2018)
|
||||||
- from: [Usenix](https://www.usenix.org/conference/usenixsecurity18/presentation/krupp)
|
- from: [Usenix](https://www.usenix.org/conference/usenixsecurity18/presentation/krupp)
|
||||||
- talk: [Youtube](https://www.youtube.com/watch?v=mW4jQzPVP_A)
|
- talk: [Youtube](https://www.youtube.com/watch?v=mW4jQzPVP_A)
|
||||||
- file: [PDF](sec18-krupp.pdf)
|
- file: [PDF](sec18-krupp.pdf)
|
||||||
|
|
||||||
## Securify: Practical Security Analysis of Smart Contracts
|
## Securify: Practical Security Analysis of Smart Contracts
|
||||||
|
|
||||||
- listed as: "unrestricted write" (Tsankov et al., 2018)
|
- listed as: "unrestricted write" (Tsankov et al., 2018)
|
||||||
- from: [ACM](https://dl.acm.org/doi/10.1145/3243734.3243780)
|
- from: [ACM](https://dl.acm.org/doi/10.1145/3243734.3243780)
|
||||||
- talk: On ACM page
|
- talk: On ACM page
|
||||||
- file: [PDF](Securify Practical Security Analysis of Smart Contracts.pdf)
|
- file: [PDF](Securify Practical Security Analysis of Smart Contracts.pdf)
|
||||||
|
|
||||||
## "SWC-124: Write to Arbitrary Storage Location" (SmartContractSecurity, 2020)
|
## "SWC-124: Write to Arbitrary Storage Location" (SmartContractSecurity, 2020)
|
||||||
|
|
||||||
- from: [SWCregistry](https://swcregistry.io/docs/SWC-124/)
|
- from: [SWCregistry](https://swcregistry.io/docs/SWC-124/)
|
||||||
|
|||||||
Reference in New Issue
Block a user