Process Owner: Jason Smythe
Cyberattacks are increasingly becoming more prevalent, and so it is imperative to view cybersecurity holistically, from the point of view of response and recovery in addition to prevention.
Although measures / mitigations can be put in place to drastically reduce the risk from materialising (e.g. front-running protection mechanism to prevent price manipulation, multi-signature wallets to custody investment capital, smart contract audits, web application security scans, etc.), Float should still be prepared for a “worst-case” scenario or unprecedented crisis event.
This Cybersecurity Incident Response Plan (CSIRT) is a procedural document that gives key stakeholders instructions on how to respond to a serious security incident. The response plan outlines predetermined set of instructions or procedures to detect, respond, and limit consequences of a malicious cyber attacks against Float’s information systems.
These procedures are designed to enable security personnel to identify, mitigate, and recover from malicious incidents, such as unauthorised access to a system or data, denial of service, or changes / usage of the system affecting its integrity or expected behaviour.
- Preparation
- Key stakeholders
- Incident scenarios
- Documenting an incident
- Detection and analysis – click here if you’ve identified a potential incident
- Signs of an incident
- Assessing the impact
- Gathering evidence
- Immediate response actions – click here if you have just confirmed there is an active cyber security incident
- Who to tell
- How to reach them
- Keep the incident confidential
- Containment, Eradication & Recovery – click here if you’re working to contain an active incident
- Identifying the vulnerability
- Containing the incident
- Communicating with stakeholders
- Post-Incident Activity
- Drafting an incident report
- Incident runbooks
- Prepare the team / organization for an incident
- Identify & define response team - key stakeholders / persons that need to be involved and/or informed
- Identify top applicable scenarios & create runbooks
- Train stakeholders in response runbooks
- How to invoke the response team
- Ensure all the right documentation is recorded
- Jason Smythe - Founder
- Telegram: @Cooolkid
- Whatsapp:
- Discord: Jason | float & wildcards#9999
- Jonathan Clark - Founder
- Telegram: @jonjonclark
- Whatsapp:
- Discord: jonjon | float#2270
- Denham Preen - Founder:
- Telegram: @denhampreen
- Whatsapp:
- Discord: ! Denham | float.capital#5167
These are potential scenarios, but Float may in the future be subject to other attack vectors
- Smart contract exploit due to logic bugs, lack of parameters or precondition controls, front-running, arithmetic error, etc. that leads to extraction or loss of user funds
- Market manipulation that renders the markets unusable for other traders (but is using the system by design)
- Git Hub compromise, such as hard-coded sensitive data (passwords, tokens, and authentication keys), badly configured access permissions, compromised CI/CD pipeline, etc, that results in access to private repositories
- Integration partners downtime, such as a supply-chain attack, that renders the Float App unavailable (e.g closure / freezing of a market due to not receiving any Price Feeds updates from an Oracle) . Unavailability of the Float App can cause a loss in trust / decrease in reputation / loss in users
It is important to maintain incident documentation to ensure a systematic record for efficient review of the incident, reporting of the incident and lessons learned.
Immediately open an incident ticket on internal notion under Policies & Procedures. Include the following:
- Status of the incident
- Summary of the incident
- Indicators of compromise related to the incident
- Actions taken to resolve the incident
- Impact assessment of the incident
- Lessons learned
- Evidence gathered
- ensure timely detection of an incident and identify the scope of an incident
- identify the immediate actions to take following identification of an incident
- identify the reporting and communication guidelines to follow
Scenario | Indicators |
---|---|
Smart Contract Exploit | Exfiltration of funds, unexpected behaviour, unusual movements of funds |
Market Manipulation | Whale trader (relative to liquidity in the given market) where there is noticeable period of fluctuation in exposure |
GitHub compromise | Malicious PRs, dangerous / vulnerable packages |
Supply chain / integration partners down-time | Unexpected behaviour, no ChainLink oracle update for longer than expected SLA, Gelato Keeper downtime |
The common sources of precursors and indicators include:
- Alerts (e.g. monitoring tools)
- Logs (e.g. system logs)
- Indicators of compromise (IoC)
- Industry events
- Market analysis reports
- Publicly available information
- Users
After identifying the an incident, the impact of the incident needs to be determined. Important question to consider when determining the impact of the incident
- Are the systems or services currently affected critical?
- Are there any workarounds or mitigating actions that can be deployed?
- How many users are affected?
- Can this incident be contained effectively?
- Is this incident spreading slowly or quickly—and affecting other users or systems?
- Are there potential legal or regulatory ramifications?
Classifications: Critical, High, Medium, Low
Any collected evidence should utilize a hash activity / integrity checks to ensure the integrity of the collected data. This process can be used to verify that evidence has not been altered from its original source, and helps ensure admissibility for potential legal proceedings.
This section contains the immediate steps to follow once an incident has been identified.
-
Immediately notify the pod heads
- Create a Telegram Group with
- Campbell – @CampbellFloat
- Denham – @denhampreen
- Jason – @Cooolkid
- Jonathan – @jonjonclark
- In this group, share all evidence gathered around the incident.
- Make sure to communicate the severity of the incident, and the level of urgency required
- Send a second line of communication via WhatsApp to:
- Denham –
- Jason –
- Jonathan –
- Open an incident ticket on Notion under Policies & Procedures
- Continue to monitor the situation and share updates with the team
- Keep all information about the incident confidential – do not share with anyone outside of the Pod Heads team until it is agreed upon
Follow predefined Runbooks depending on nature of the incident.
- Create a Telegram Group with
- contain the incident to prevent further attacker activity, widespread damage
- ensure good decision-making
- define a communications plan
An essential part of containment is decision-making (e.g. shut down a system, pause a market, disconnect a device from a network, delete API keys, disable username, etc.). Such decisions are much easier to make with predetermined strategies and procedures for incident containment. To define and document the strategies and procedures, utilize playbooks and runbooks to simplify tasks.
See Runbooks
All communications around an incident must be carefully managed to mitigate fallout and negative outcomes for all stakeholders affected, internal and external. Follow the steps below before sharing any information:
- A broad range of stakeholders can be affected, from users, to investors, to team members.
- Different methods of communication must be employed for different stakeholders.
- Communications to stakeholders must be sent by the responsible individuals or teams.
- Do not communicate with any stakeholders without approval from the pod heads team.
- A non-inclusive list can be found below:
Stakeholder group | Communications medium | Responsible |
---|---|---|
Team members | Discord, team syncs | Pod heads |
Investors | Email, Telegram | Denham, Jason, Jonathan |
Regulators | Formal reports | Legal counsel |
Advisors | Discord, email | Denham, Jason, Jonathan |
Float users | Discord, Twitter | Campbell |
Technical partners | Telegram, email | Sven |
Once stakeholders have been identified, a communications plan must be drafted. This will include:
- Who will be notified
- How they will be notified
- Who will notify them
- When they will be informed
- What information will be shared with them
Each stakeholder should receive very precise information. Each message should contain the following:
- An overview of the incident
- How the incident affects them and how severely
- What other stakeholders have been affected
- The nature of the incident and how it occurred
- How the Float team responded and is continuing to respond
- Next steps for addressing the incident
- A disclaimer about the risks inherent to DeFi / the Float app
For each message, pay very careful attention to the following:
- Remember that everything you say could have legal and or reputational ramifications. Do not worry about being nice.
- Do not promise / offer / or imply compensation. If Float is to compensate a stakeholder, they will be informed only after funds have been allocated for this purpose.
- Use very specific language. Do not talk about exploits, vulnerabilities or hacks unless the investigations have confirmed precisely what ocurred.
- Do not take responsibility on behalf of yourself, or Float.
- Give no more information than is needed.
Don’t send any information to anyone without express approval from the pod heads.
Keep all messaging with affected stakeholders in public places. Whether email, Discord, Telegram, or whatever – do not send any comms that are not visible to all pod heads.
- emphasis on lessons learned with key stakeholders
- reports highlighting gaps and improvements
An incident reports should contain the following information:
- Date and time of the incident
- Date and time of incident closure
- Scope of the incident
- Name of the person who reported the incident
- Organization and business unit of the affected person
- Incident description
- Affected systems and/or providers and respective SLAs
- Incident classification (severity classification)
- Company/customer impact analysis
- Resolution
- A “lessons learned” section to determine successes and needed improvements to develop an enhanced response to prevent future incidents
Unless stated otherwise, incident reports, and all other information related to identified or potential cyber security incidents are considered confidential information that should not be shared with anyone.
Smart Contract Exploit due to logic bugs, lack of parameters or precondition controls, front-running, arithmetic error of integers, etc. that leads to exfiltration of funds.
Exfiltration of funds - Identified via unexpected behaviour, unusual movements of funds, user complaint.
- Review exploit transactions to identify vulnerability - Jason Smythe
- Pause contracts (if possible) or take other defensive action, consider offensive action (i.e. white hat rescues)
- Execute defensive action scripts → You do NOT want to be scrambling to figure out who can sign to take defensive actions - Jason Smythe
- Review Transaction(s) - Jonathan Clark
- Review all contracts to identify knock-on vulnerabilities. Pause those as necessary
- Update UI to reflect current status - Denham Preen
- Contact security partners - Jonathan Clark
- ByteRocket
- Code4Arena
- Sherlock
- Consult with advisors - Jonathan Clark
- Communicate to affected users via Discord and/or Twitter - Campbell Easton
- Follow Incident communications - Update regularly (every 4 to 12 hours) as meaningful new information or developments are available - help reassure your community that you are working to address the situation
- Run all messages by the pod heads to ensure no information is shared that inadvertently puts security at risk or commits to specific remediation before all facts are known
- Prepare patch for contracts, ideally following development process guidelines - Jason Smythe
- Have patch reviewed and signed off on by past auditors
- Have patch reviewed by as many trusted members of the team and community as possible
- If the patch or potential interactions are complex enough to warrant it, strongly consider a short Code4rena contest (can be started within 48 hours)
- Deploy patch
- Draft and post Incident Report - Jonathan Clark
- Keep evidence secure
Market Manipulation (e.g. whale trader) that renders the markets unusable for other traders (but is using the system by design)
Whale trader (relative to liquidity in the given market) where there is noticeable period of fluctuation in exposure.
- Review exploit transactions to identify vulnerability - Jason Smythe
- Tools Used:
- Tenderly Debugger
- Foundry Transaction Replay Trace/Debugger
- ethtx.info
- Internal Data Modelling - Woo Sung Dong
- Tools Used:
- Consult with advisors - Jonathan Clark
- Update UI to reflect any changes - Denham Preen
- Communicate to affected users via Discord and/or Twitter - Campbell Easton
- Follow Incident communications - Update regularly (every 4 to 12 hours) as meaningful new information or developments are available - help reassure your community that you are working to address the situation
- Run all messages by the pod heads to ensure no information is shared that inadvertently puts security at risk or commits to specific remediation before all facts are known
- Prepare patch for contracts, ideally following development process guidelines - Jason Smythe
- Have patch reviewed and signed off on by past auditors
- Have patch reviewed by as many trusted members of the team and community as possible
- If the patch or potential interactions are complex enough to warrant it, strongly consider a short Code4rena contest (can be started within 48 hours
- Deploy patch - You do NOT want to be scrambling to figure out who can sign to take defensive actions
- Draft and post Incident Report - Jonathan Clark
- Keep evidence secure
Git Hub compromise, such as hard-coded sensitive data (passwords, tokens, and authentication keys), badly configured access permissions, compromised CI/CD pipeline, etc, that results in access to private repositories
- Review logs (IP address, User actions, etc.) - [Response team]
- Sign into GitHub as Admin, remove user from Float Organization - Jason Smythe
- Change Password and Do not share password with anyone
- Log out / expire all sessions on all devices to log malicious actor out of account
- Determine impact - [Response Team]
- Restore from backup (if applicable)
Integration partners downtime, such as a supply-chain attack, that renders the Float App unavailable (e.g closure / freezing of a market due to not receiving any Price Feeds updates from an Oracle) . Unavailability of the Float App can cause a loss in trust / decrease in reputation / loss in users
- Review downtime errors to identify cause - Jason Smythe
- Tools Used:
- Consult with advisors - JonJon Clark
- Update UI to reflect any changes - Denham Preen
- Communicate to affected users via Discord and/or Twitter - Campbell Easton
- Follow Incident communications - Update regularly (every 4 to 12 hours) as meaningful new information or developments are available - help reassure your community that you are working to address the situation
- Run all messages by the pod heads to ensure no information is shared that inadvertently puts security at risk or commits to specific remediation before all facts are known
- Manage SLA with Third Party / Integration Partner - Jason Smythe
- Get continuous updates
- Breach of conduct / SLA
- Restore Operations - Jason Smythe
- Draft and post Incident Report - Jonathan Clark
- Keep evidence secure