the human component in automated bug finding
play

The Human Component in Automated Bug Finding Christian Holler - PowerPoint PPT Presentation

The Human Component in Automated Bug Finding Christian Holler (:decoder) Staff Security Engineer ~ 16M lines source code ~ 16M lines source code Last month: 340 authors with 2,475 commits Interfaces Media Formats Markup Fonts Languages


  1. The Human Component in Automated Bug Finding Christian Holler (:decoder) Staff Security Engineer

  2. ~ 16M lines source code

  3. ~ 16M lines source code Last month: 340 authors with 2,475 commits

  4. Interfaces Media Formats Markup Fonts Languages JavaScript Networking

  5. Developers know... Domain Knowledge

  6. Developers know... … code architecture/contracts Domain Knowledge

  7. Developers know... … code architecture/contracts … expected behavior Domain Knowledge

  8. Developers know... … code architecture/contracts … expected behavior Domain … weaknesses Knowledge

  9. Developers know... … code architecture/contracts … expected behavior Domain … weaknesses Knowledge “Lone warrior” approach not sustainable

  10. Mutual Trust Relationship

  11. The Do’s and Don’ts

  12. Ninja Style

  13. Ninja Style Build fuzzer alone and in secret

  14. Ninja Style Build fuzzer alone and in secret Rapid fire bugs at developers

  15. Ninja Style Build fuzzer alone and in secret Rapid fire bugs at developers “ They’ll never know what hit them. Tehehe!!11oneeleven ”

  16. Defensive Behavior

  17. Defensive Behavior Overwhelmed

  18. Defensive Behavior Overwhelmed Lack of Resources

  19. Defensive Behavior Overwhelmed Lack of Resources Code Ownership Bias

  20. 21

  21. “please stop filing fuzz bugs for the next few weeks until they can be addressed.” 22

  22. Surprise your developers DON’T

  23. Surprise your developers Act superior or DON’T adversarial

  24. Surprise your developers Act superior or DON’T adversarial Assume equal priorities

  25. DO: Kickoff Meeting

  26. Developers, Fuzzing and Management DO: Kickoff Meeting

  27. Developers, Fuzzing and Management Show previous success stories DO: Kickoff Meeting

  28. Developers, Fuzzing and Management Show previous success stories DO: Offer your help, Kickoff Meeting ask about problems

  29. Developers, Fuzzing and Management Show previous success stories DO: Offer your help, Kickoff Meeting ask about problems Define Goals - Allocate Resources

  30. Developers, Fuzzing and Management Show previous success stories DO: Offer your help, Kickoff Meeting ask about problems Define Goals - Allocate Resources Educate on Requirements

  31. Developers, Fuzzing and Management Show previous success stories DO: Offer your help, Kickoff Meeting ask about problems Define Goals - Allocate Resources Educate on Requirements

  32. Developers, Fuzzing and Management Show previous success stories DO: Offer your help, Kickoff Meeting ask about problems Define Goals - Allocate Resources Educate on Requirements

  33. Requirements and Goals Fuzzing Developer

  34. Requirements and Goals Fuzzing Developer

  35. Requirements and Goals Fuzzing Developer

  36. Requirements and Goals Fuzzing Developer

  37. Example Requirement Bugs must be fixed

  38. Example Requirement Bugs must be fixed “ That bug isn’t interesting, please ignore it. ”

  39. Example Requirement Bugs must be fixed “ ... but that’s not a bug. ”

  40. Example Requirement Bugs must be fixed “ ... but that’s not a bug. ” “Contract” about what constitutes a bug

  41. $ js js>

  42. $ js js> print("Hello watman") Hello watman js>

  43. $ js js> print("Hello watman") Hello watman js> crash(); Hit MOZ_CRASH(forced crash) at shell/js.cpp:3700 Segmentation fault

  44. $ js --fuzzing-safe js>

  45. $ js --fuzzing-safe js> crash(); typein:1:1 ReferenceError: crash is not defined

  46. Requirements vs. Goals Fuzzing Developer

  47. Fuzzblockers

  48. Disruptive effect on fuzzing operations Fuzzblockers

  49. Disruptive effect on fuzzing operations (e.g. highly frequent, resource intensive) Fuzzblockers + Hard to avoid

  50. Disruptive effect on fuzzing operations (e.g. highly frequent, resource intensive) Fuzzblockers + Hard to avoid Highest Priority for Fuzzing (Usually) low priority for developers

  51. Disruptive effect on fuzzing operations (e.g. highly frequent, resource intensive) Fuzzblockers + Hard to avoid Highest Priority for Fuzzing (Usually) low priority for developers Try writing a fix yourself !

  52. I want you to fix a bug

  53. I want you to fix a bug You learn something about the code

  54. I want you to fix a bug You learn something about the code You learn something about development

  55. I want you to fix a bug You learn something about the code You learn something about development You can progress faster

  56. I want you to fix a bug You learn something about the code You learn something about development You can progress faster Developers will be happy

  57. When?

  58. When to Fuzz?

  59. When to Fuzz?

  60. When to Fuzz?

  61. When to Fuzz?

  62. When to Fuzz? Earliest version with well-defined behavior

  63. When to Fuzz? Could help Earliest version with developers well-defined behavior

  64. When to Fuzz? Could help Earliest version with developers well-defined behavior As early as possible (*)

  65. DO: Simple Steps to reproduce

  66. DO: Simple Steps to reproduce

  67. DO: Measure Code Coverage

  68. SHARE! DO: Measure Code Coverage

  69. DO: Educate

  70. Fuzzing is Teamwork

  71. Thank You

Recommend


More recommend