Spearbook
This document is meant to serve as a guide for auditors engaging in Spearbit audits. Note that client and project team will be used interchangeably.
High level breakdown of the process:
Note:
- Information about promotions can be found here: https://github.com/spearbit/proposals/discussions/3
Junior personnel with less than one year of web3 security experience and IT background. Must be guided by SR's and LSR's.
Soft Skills |
---|
Can communicate his/her point clearly, both written and verbally. |
Can communicate professionally with the client. |
Can take initiative and be proactive. |
Can work in a team, assist SR's and LSR's during an engagement. |
Familiar with Blockchain history and culture. (e.g., BTC & ETH whitepapers, hacks, twitter marketing ops, psyops, celebrities and rugpulls…) |
Responsibilities |
---|
Going through issues when presenting to the client. |
Identifying issues during the engagement. |
Verifying issues are properly formatted according to the standard. |
Generating reports. |
Writing about the protocol's architecture. |
Making questions and learning. |
Junior to mid tier personnel with more experience than a regular Junior Security Researcher.
Builds on top of the Junior Security Researcher's mentioned above with deeper knowledge of each topic.
Soft Skills |
---|
Can communicate his/her point clearly, both written and verbally. |
Can communicate professionally with the client. |
Can take initiative and be proactive. |
Can work in a team, assist SR's and LSR's during an engagement. |
Familiar with Blockchain history and culture. (e.g., BTC & ETH whitepapers, hacks, twitter marketing ops, psyops, celebrities and rugpulls…) |
Responsibilities |
---|
Going through issues when presenting to the client. |
Identifying issues during the engagement. |
Verifying issues are properly formatted according to the standard. |
Writing about the protocol's architecture. |
Asking questions and learning. |
Reviewing client fixes. |
Professional personnel with more than one year of experience in web3 security and InfoSec or Software Engineering background. Must not be guided.
assembly{}
blocks.Soft Skills |
---|
Can communicate his/her point clearly, both written and verbally. |
Can communicate professionally with the client. |
Can take initiative and be proactive. |
Can work in a team, guide Junior Security Researchers and follow LSR's lead during an engagement. |
Can conduct research, gather information and present conclusions. |
Familiar with Blockchain history and culture. (e.g., BTC & ETH whitepapers, hacks, twitter marketing ops, psyops, celebrities and rugpulls…) |
Confident with offensive and defensive security methodologies. |
Responsibilities |
---|
Guiding and following LSR's lead. |
Going through issues when presenting to the client. |
Identifying issues during the engagement. |
Ensuring issues are properly formatted according to the standard. |
Reviewing client fixes. |
Senior personnel with more than four years of experience in web3 security, InfoSec, IT and / or solid web3 background. Guides others.
assembly{}
blocks without major misses.Soft Skills |
---|
Can communicate in english at business proficiency level. |
Can communicate his/her point clearly, both written and verbally. |
Can communicate professionally with the client. |
Can communicate complex issues in a simple way. |
Can take initiative and be proactive. |
Can perform managerial tasks, coach Junior Security Researchers and SR during an engagement. |
Can conduct research, gather information and present conclusions. |
Confident with Blockchain history and culture. (e.g., BTC & ETH whitepapers, hacks, twitter marketing ops, psyops, celebrities and rugpulls…) |
Confident with offensive and defensive security methodologies. |
Can answer team and client questions. |
Can identify threat vectors and weak spots. |
Up to date with industry news and developments. |
Up to date with new exploits and vulnerabilities. |
Time management and making sure the engagement progresses according to the timeline. |
Does not take anything for granted. |
Responsibilities |
---|
Guiding Junior Security Researchers and SR's. |
Going through issues when presenting to the client. |
Identifying issues during the engagement. |
Reviewing client fixes. |
Assuring audit quality. |
Assessing major risks and recommending solutions. |
Assessing engagements costs, effort, scope, depth and time. |
Making sure issues are written in time. |
1st weekday of month and 15th of month sent to the ethereum address you provided to the core team.
Payments will be processed for every auditor that has completed an audit since then.
request-for-auditors
.Auditors usually react with "
Requests follow a standard format and are designed to provide enough information about an offer:
- Name: Name of the client (project).
- Description: Small and concise description about the project.
- Timeline: When will the engagement be conducted.
- Staff wanted: Number of auditors needed for the engagement.
- More Info: Extra relevant information pertaining the offer and client.
FAQ: Is it possible to clearly define and / or describe:
1. When will the audit start exactly?
A: Not always. Many times starting dates depend on auditor availablity; It is not possible to define a start date before a team has been assembled.
2. The deadline for which every auditor will know if he has been selected or not?
A: Same week the offer has been posted.
When a request has been crossed i.e: crossed, you can assume the offer has been fullfilled and a team assembled.
Note: In this context the core team will only reach out to you if selected.
Selections are based on:
We try to assemble the best team for a job and include those who have spent more time waiting to get on an audit. If you have any particular field of interest feel free to reach out and let us know because it is an influencing factor.
e.g: If someone has a particular interest (and / or expertise) and wants to learn assembly, EVM or bridges, it will be more likely to be selected for such hypothetical audit than someone who is only interested on auditing NFT projects or heavy math protocols.
Q: What if i dont have any particular interest?
A: You may be eligible either ways based on expertise, waiting times and community contributions.
As soon as the SOW (Statement Of Work) has been signed by the client you will be added to 2 channels before the audit starts:
C:\AUDITORS\AUDITS
category.
C:\AUDITORS\SHARED
category.
Although optional, many auditors like to prepare in advance for the kick off call by looking at relevant documentation and source code (if applicable; Sometimes private audits dont release source code until start day or documentation remains incomplete).
During the call you are encouraged to ask any question you may have to the project team. Some of the points discussed during these meetings may include:
README.md
Project team members will be invited as well, therefore it is important to maintain a professional attitude and chose words wisely.
Let's assume for the sake of the following example that the client has requested an audit on 2 extremely important implementations: MyBank.sol
and Vault.sol
Inside spearbit-audits, a repository with the name of the client / project name will be created. In this repository you will find different branches often times proportional to the amount of files in scope. If a file has more than 500 lines of code we may split it to minimize latency in Github API requests when pulling issues for copywriting.
If applicable, README.md
will also contain extra documentation about the project being audited.
See and read through the audit template here.
In the Pull Requests section you can see the 2 files in scope and number of comments per file.
As soon as you find a potential issue or have a question about some part of the code you’re encouraged to leave a single comment (not a PR review) on the affected LOC of the PR. These comments should be short and to the point - they do not need to have the structure of a formal report issue yet. If the question is to the project or a specific person, feel free to @-tag them or ping them in Discord about it with the comment link.
❔ This incremental audit approach of commenting on the code as soon as a discovery is made helps the project team address and clarify issues earlier in the audit process. For them, it’s less overwhelming than receiving all issues at the end, and it helps reduce the waiting time for the fixes as they can start working on them sooner. For us, we have a common place right next to the code to discuss issues.
🔍 You don’t have to review the code on the PR itself. You can of course review it in an IDE with extensions. Some auditors also prefer to initially not look at issues others have found to be less biased. But we ask you to upstream your issues from time to time for the mentioned benefits.
Once everyone has done their review and left comments on the PRs, comments are turned into issues. When the GitHub issue is created, reply to the PR comment with the issue link and resolve the comment.
The repo is already set up with the correct template and must follow the standard format:
Context:
Link to the affected LOC. It should be a GitHub permalink of the audit commit. In the repo of the client (not on the spearbit repo we are doing the PR on), make sure to browse the files of the audit commit, then click on the three dots and choose “Copy permalink”:
Description:
Clear and concise description of the issue and Proof Of Concept if applies.
Recommendation:
If there is a specific code recommendation, use syntax highlighting either by using solidity
or diff
code blocks. Please dedent the code so it starts to the left.
Project-Name:
Section used to record the project answer pertaining the issue, and / or any other relevant communications, usually after fixes.
Spearbit:
Spearbits final answer regarding the issue. Has it been fixed, ignored, recommendation followed…?
Mark the issue with the correct label based on severity. Issues will be reviewed and labeled as Fixed (if the project has fixed the issue) or Acknowledged (if the project has Acknowledged the issue but not taken any further action).
Mark the issue with ReadyForReport to confirm the issue is ready for the client report.
Close up calls can last ~1 hour and are scheduled in order to allow the project team ask the auditor team questions about findings and remediations.
Note: During these calls the auditor team screenshares and walks through issues while answering any questions posed by the project team.
Additionally, if the project team requires it, a draft report can be generated for their internal purposes.
After the close up call, if the client agrees to conduct a fix review, the security researchers will estimate the amount of work it will take to review the fixes. An SOW will be sent to the client for this.
Note: This phase should not take much effort nor a lot of time have to be spent on it.
Ask the project team to create one PR per issue to make reviewing the fixes easier.
After the fixing period, a final report will be generated by Junior Security Researchers and copywrited by a core team member before final delivery.
The end… or is it? Ready for your next audit?