Friday, March 20, 2020

Before you ship a "security mitigation" ...

Hey everybody,

During my years doing vulnerability research and my time in Project Zero, I frequently encountered proposals for new security mitigations. Some of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365se were great, some of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365se - were not so great.

The reality is that most mitigations or "hardening" features will impose a tax on someone, somewhere, and quite possibly a heavy one. Many security folks do not have a lot of experience running reliable infrastructure, and some of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir solutions can break things in production in racá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r cumbersome ways.

To make things worse, many mitigations are proposed and implemented with very handwavy and non-scientific justifications - "it makes attacks harder", it "raises cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 bar", etc., making it difficult or impossible for third parties to understand cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 design and trade-offs considered during cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 design.

Over cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 years, I have complained about this repeatedly, not least in this Twitter thread:

https://twitter.com/halvarflake/status/1156815950873804800

This blog post is really just a recapitulation of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Twitter thread:

Below are rules I wrote for a good mitigation a while ago: “Before you ship a mitigation...

  1. Have a design doc for a mitigation with clear claims of what it intends to achieve. This should ideally be something like "make it impossible to achieve reliable exploitation of bugs like CVE1, CVE2, CVE3", or similar; claims like "make it harder" are difficult to quantify. If you can't avoid such statements, quantify cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m: "Make sure that development of an exploit for bugs like CVE4, CVE5 takes more than N months".
  2. Pick a few historical bugs (ideally from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 design doc) and involve someone with solid vuln-dev experience; give him a 4-8 full engineering weeks to try to bypass cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 mitigation when exploiting historical bugs. See if cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 mitigation holds, and to what extent. Most of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 time, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 result will be that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 mitigation did not live up to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 promise. This is good news: You have avoided imposing a tax on everybody (in complexity, usability, performance) that provides no or insufficient benefit.
  3. When writing cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 code for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 mitigation, *especially* when it touches kernel components, have a very stringent code review with review history. The reviewer should question any unwarranted complexity and ask for clarification.
    Follow good coding principles - avoid functions with hidden side effects that are not visible from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 name etc. - cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 stringency of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 code review should at least match cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 stringency of a picky C++ readability reviewer, if not exceed it.”

There are also cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365se three slides to remember:
In short: Make it easy for people to understand cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 design rationale behind cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 mitigation. Make sure this design rationale is both accessible, and easily debated / discussed. Be precise and quantifiable in your claims so that people can challenge cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 mitigation on it's professed merits.