What are the key milestones you need to achieve in order to complete your project successfully?
Milestone 1: Release DApp specific penetration testing framework for Cardano smart contracts. This includes open sourcing the existing testing framework for conducting attacks on Cardano smart contracts. This includes a set of predefined general attacks that can be applied to any contract. This milestone is the framework, not the command-line tool. The framework is well documented and designed to be easy to use; however, property-based testing can be quite involved, and it can be tough for developers who are unfamiliar with similar tooling to utilize it in practice.
Milestone Outputs:
- Open-sourced existing testing framework for conducting attacks on Cardano smart contracts.
- Predefined set of general attacks that can be applied to any contract.
- Comprehensive documentation for using the framework.
Acceptance Criteria:
- Approval of the testing framework and predefined attacks by the project lead.
- Approval of documentation by the project lead.
Evidence of Milestone Completion:
- Submission of the testing framework code to GitHub repository.
- Submission of predefined general attacks documentation.
- Submission of comprehensive framework documentation.
Milestone 2: Research on generalization and reducing development effort required to utilize the tool. This will focus on research and specification of the command-line smart contract penetration testing tool. We will provide thorough documentation for the command-line tool as-well-as the framework at-large. This documentation will serve as a step-by-step guide for developers to leverage the power of this tool to run penetration tests on any Cardano smart contract.
Milestone Outputs:
- Research report and specification for the command-line smart contract penetration testing tool.
- Thorough documentation for the command-line tool and the framework at large.
Acceptance Criteria:
- Approval of research report and specifications by the project lead.
- Approval of command-line tool documentation by the project lead.
Evidence of Milestone Completion:
- Submission of research report and specifications.
- Submission of command-line tool documentation to GitHub repository.
Milestone 3: Extend the framework with new general attack types to cover more common smart contract vulnerabilities. This will involve aggregating a list of common vulnerabilities that the tool does not currently account for and then introducing new attack types to the tool to make sure they are covered.
Milestone Outputs:
- Aggregated list of common vulnerabilities not currently covered.
- New attack types added to the tool to cover these vulnerabilities.
Acceptance Criteria:
- Approval of the list of new vulnerabilities and attack types by the project lead.
- Successful integration of new attack types into the framework.
Evidence of Milestone Completion:
- Submission of the list of new vulnerabilities.
- Submission of code and documentation for new attack types to GitHub repository.
Milestone 4: Introduce functionality to the tool to automatically query for a comprehensive set of "happy case" transactions for any given smart contract. The common vulnerabilities are described in the form of attacks in the toolkit. Attacks are mutations that can be applied to transactions to attempt to perform actions that should not be allowed. If a happy-case transaction still succeeds after applying an attack, then the tool flags it as a potential vulnerability and outputs that information to the developer along with information on potential resolutions. In order to effectively conduct this penetration testing on a smart contract protocol a large number of happy-case transactions are needed to cover each possible action that a protocol can support. Currently, transactions are either required to be built within the tool, or serialized transactions are to be loaded into the framework in order to facilitate attack mutations.
By introducing this query functionality, the user simply needs to provide the script hash of the contract(s) they want to test, and the tool will automatically query the given network to find a comprehensive set of happy-case transactions to apply the attacks to. This way it doesn't matter what offchain framework the protocol is built with; the tool will be able to conduct the attacks on any Cardano protocol irrespective of the protocol's tech stack.
Milestone Outputs:
- Functionality to automatically query a comprehensive set of "happy case" transactions for any given smart contract.
- Detailed documentation and user guide for using the new query functionality.
Acceptance Criteria:
- Successful implementation and testing of the query functionality.
- Approval of documentation and user guide by the project lead.
Evidence of Milestone Completion:
- Submission of query functionality code to GitHub repository.
- Submission of detailed documentation and user guide.
Milestone 5: Command-line tool publication
This includes the full release of the command-line tool which can be used to perform automated penetration testing on any Cardano smart contract protocol. The command-line tool will be intuitive and simple, allowing immediate use without any prior training or learning curve.
Milestone Outputs:
- Full release of the command-line tool for automated penetration testing on any Cardano smart contract protocol.
- Comprehensive documentation and user manual for the command-line tool.
Acceptance Criteria:
- Successful deployment and testing of the command-line tool.
- Approval of the command-line tool and documentation by the project lead.
Evidence of Milestone Completion:
- Release of command-line tool code and documentation on GitHub repository.
- Demonstration of the tool performing a live penetration test.
Final Milestone: Project Close-out Report and Video
A report detailing KPIs and how they were addressed along with the future roadmap for the XSY smart contract penetration testing toolkit.
A video that goes over the development process of the tool and demonstrates the tool performing a live penetration test of a smart contract protocol.