Our application and database are hosted by Heroku and Amazon Web Services.
!!! warning "Incident Commander Required" As with all major incidents at
ShipmentBot (app.shipmentbot.com), security ones will also involve an
Incident Commander, who will delegate the tasks to relevant resolvers.
Tasks may be performed in parallel as assigned by the IC. Page one at the
earliest possible opportunity !ic page.
!!! question "Not Sure it's a Security Incident?" Trigger the process
anyway. It's better to be safe than sorry. The Incident Commander will make
a determination on if response is needed.
Checklist
Details for each of these items are available in the next section.
- Stop the attack in progress.
- Cut off the attack vector.
- Assemble the response team.
- Isolate affected instances.
- Identify timeline of attack.
- Identify compromised data.
- Assess risk to other systems.
- Assess risk of re-attack.
- Apply additional mitigations, additions to monitoring, etc.
- Forensic analysis of compromised systems.
- Internal communication.
- Involve law enforcement.
-
Reach out to external parties that may have been used as vector for
attack.
- External communication.
Attack Mitigation
Stop the attack as quickly as you can, via any means necessary. Shut down
servers, network isolate them, turn off a data center if you have to. Some
common things to try,
-
Shutdown the instance from the provider console (do not delete or
terminate if you can help it, as we'll need to do forensics).
-
If you happen to be logged into the box you can try to,
- Re-instate our default iptables rules to restrict traffic.
-
kill -9 any active session you think is an attacker.
-
Change root password, and update /etc/shadow to lock out all other
users.
sudo shutdown now
Cut Off Attack Vector
Identify the likely attack vectors and path/fix them so they cannot be
re-exploited immediately after stopping the attack.
-
If you suspect a third-party provider is compromised, delete all accounts
except your own (and those of others who are physically present) and
immediately rotate your password and MFA tokens.
-
If you suspect a service application was an attack vector, disable any
relevant code paths, or shut down the service entirely.
Assemble Response Team
Identify the key responders for the security incident, and keep them all in
the loop. Set up a secure method of communicating all information associated
with the incident. Details on the incident (or even the fact that an
incident has occurred) should be kept private to the responders until you
are confident the attack is not being triggered internally.
-
Page an Incident Commander if not already done so. They will also appoint
the usual incident command roles. The incident command team will be
responsible for keeping documentation of actions taken, and for notifying
internal stakeholders as appropriate.
-
Give the project an innocuous codename that can be used for
chats/documents so if anyone overhears they don't realize it's a security
incident. (e.g. sapphire-unicorn).
- Start the voice call if not already in progress.
- Setup chat room using the codename of the incident.
-
Invite all responders to the voice call and chat room.
- The security team should always be included.
- A representative for any affected services should be included.
-
Executive stakeholders and legal counsel should be invited at earliest
possible opportunity, but prioritize operational responders first.
-
Do not communicate with anyone not on the response team about the incident
until forensics has been performed. The attack could be happening
internally.
- Prefix all emails, and chat topics with "Attorney Work Project".
Isolate Affected Instances
Any instances which were affected by the attack should be immediately
isolated from any other instances. As soon as possible, an image of the
system should be taken and put into a read-only cold storage for later
forensic analysis.
-
Blacklist the IP addresses for any affected instances from all other
hosts.
-
Turn off and shutdown the instances immediately if you didn't do that to
stop the attack.
-
Take a disk image for any disks attached to the instances, and ship them
to an off-site cold storage location. You should make sure these images
are read-only and cannot be tampered with.
Identify Timeline of Attack
Work with all tools at your disposal to identify the timeline of the attack,
along with exactly what the attacker did.
-
Any reconnaissance the attacker performed on the system before the attack
started.
- When the attacker gained access to the system.
- What actions the attacker performed on the system, and when.
-
Identify how long the attacker had access to the system before they were
detected, and before they were kicked out.
- Identify any queries the attacker ran on databases.
-
Try to identify if the attacker still has access to the system via another
back door. Monitor logs for unusual activity, etc.
Compromised Data
Using forensic analysis of log files, time-series graphs, and any other
information/tools at your disposal, attempt to identify what information was
compromised (if any),
-
Identify any data that was compromised during the attack.
- Was any data exfiltrated from a database?
-
What keys were on the system that are now considering compromised?
-
Was the attacker able to identify other components of the system (map
out the network, etc).
- Find exactly what customer data has been compromised, if any.
Assess Risk
Based on the data that was compromised, assess the risk to other systems.
- Does the attacker have enough information to find another way in?
-
Were any passwords or keys stored on the host? If so, they should be
considered compromised, regardless of how they were stored.
-
Any user accounts that were used in the initial attack should rotate all
of their keys and passwords on every other system they have an account.
Apply Additional Mitigations
Start applying mitigations to other parts of your system.
- Rotate any compromised data.
-
Identify any new alerting which is needed to notify of a similar breach.
- Block any IP addresses associated with the attack.
-
Identify any keys/credentials that are compromised and revoke their access
immediately.
Forensic Analysis
Once you are confident the systems are secured, and enough monitoring is in
place to detect another attack, you can move onto the forensic analysis
stage.
-
Take any read-only images you created, any access logs you have, and comb
through them for more information about the attack.
-
Identify exactly what happened, how it happened, and how to prevent it in
future.
- Keep track of all IP addresses involved in the attack.
-
Monitor logs for any attempt to regain access to the system by the
attacker.
Internal Communication
Delegate to: VP or Director of Engineering
Communicate internally only once you are confident (via forensic analysis)
that the attack was not sourced internally.
- Don't go into too much detail.
- Overview the timeline.
- Discuss mitigation steps taken.
- Follow up with more information once it is known.
Liaise With Law Enforcement / External Actors
Delegate to: VP or Director of Engineering
Work with law enforcement to identify the source of the attack, letting any
system owners know that systems under their control may be compromised, etc.
- Contact local law enforcement.
- Contact FBI.
-
Contact operators for any systems used in the attack, their systems may
also have been compromised.
-
Contact security companies to help in assessing risk and any PR next
steps.
- Contact cyber insurance provider.
External Communication
Delegate to: Marketing Team
Once you have validated all of the information you have is accurate, have a
timeline of events, and know exactly what information was compromised, how
it was compromised, and sure that it won't happen again. Only then should
you prepare and release a public statement to customers informing them of
the compromised information and any steps they need to take.
-
Include the date in the title of any announcement, so that it's never
confused for a potential new breach.
-
Don't say "We take security very seriously". It makes everyone cringe when
they read it.
-
Be honest, accept responsibility, and present the facts, along with
exactly how we plan to prevent such things in future.
- Be as detailed as possible with the timeline.
-
Be as detailed as possible in what information was compromised, and how it
affects customers. If we were storing something we shouldn't have been, be
honest about it. It'll come out later and it'll be much worse.
-
Don't name and shame any external parties that might have caused the
compromise. It's bad form. (Unless they've already publicly disclosed, in
which case we can link to their disclosure).
-
Release the external communication as soon as possible, preferably within
a few days of the compromise. The longer we wait, the worse it will be.
-
If possible, get in touch with customers' internal security teams before
the general public notice is sent.
Communicating During an Incident
- Prefer voice call and Slack over any other methods.
-
Avoid email, but if you absolutely need to for some reason,
-
Subject of emails should be "Attorney Work Project" and nothing else.
-
If email chain has ANY contacts
not with the @ShipmentBot (app.shipmentbot.com).com domain,
make sure your emails are encrypted.
-
Do not use SMS to communicate about the incident.
-
The only exception is to tell someone to move to a more secure
channel. e.g. "Please join Slack ASAP".
-
Do not disseminate anything about the incident to those outside the
response team until you have approval to do so.
Additional Reading