Skip to content

Latest commit

 

History

History
149 lines (114 loc) · 7.83 KB

Bug-Bar.md

File metadata and controls

149 lines (114 loc) · 7.83 KB

Unity Security Bug Bar

Michael De Libero & Carlo Valentin - Nov 2018

Overview

This outlines a standard rating scale for software security issues both internally and externally found. The goal for this is to set a remediation timeline expectation and to give insight into how we rate issues. The bars specified are the minimum bars, meaning some issues depending on the circumstances could be rated higher.

The Bug Bar

Severity Example Bugs Reasoning
Critical - Internet accessible RCE
  • Internet accessible SQL injection

  • Stealing customer’s code from our web services (collaborate, etc..)

  • RCE in the Unity Editor with no user interaction

XSS in an Asset Store page

Exploit in a service with an open port, such as Collab or Connect

Issues of this severity have either been found to be actively exploited or publicly found. This severity should be used sparingly and for issues that need people to drop everything and fix right now.
High - Persistent & Reflected XSS
  • Leaked secrets or credentials

  • Code execution with little user interaction

Clicking a link in a browser opens Unity Editor and runs a script

  • Remote DoS (Persistent)

  • Single payload DoS

These security issues can cause a big impact on our customers and/or our business. The bug should have limited mitigating security controls and should have an exploit that can be demonstrated.

References:

Medium - Server-Side Request Forgery
  • Server-Side Request Forgery (SSRF) that allows information disclosure and discovery of our internal network.

  • Any other low impact CSRF (POST-based that changes user’s “About Me” section, etc.)

  • Stealing customer IP from their computer’s through our software

These issues could have a large impact to our customers and/or business. However, they often require some level of user-interaction and/or are difficult to exploit. At some level, there should be some mitigating security controls for these types of issues. While they should get fixed it should be part of an application team’s normal release cycle.
Low - Non-exploitable memory corruption
  • Multi-payload DoS

  • Leaked HTTP headers

  • Error pages leaking file system information

  • Missing security headers

  • “Copy-paste” attacks

  • Clickjacking

  • Open redirect that doesn’t expose any sensitive information

These issues are usually defense-in-depth issues. They don’t lead to actively exploited bugs but yield information or other footholds to attackers. These lowest risk issues could be used collectively to cause large problems. However, these issues should be added to the ice-box or long-term bug debt the development team has. Then when the development team has the time or is working in a similar area they should fix these issues.

FAQ:

Why have a bar?

The bar allows us to triage security bugs to ensure those that are most severe will get fixed before those that are less severe. This translates directly into customer protection - if we spend all our time focusing on fixing a local DoS (effectively a reliability bug), we won’t be able to address a publicly reported RCE. This, of course, doesn’t mean we never fix the local DoS, but during an incident, we need to focus resources appropriately.

How does the bar direct patching and releasing security updates for the Editor?

High and above will require a patch gets created and released for our customers. If at all possible we should work on getting these fixes in with patches that are already going out. Lows will be filed and the team owning the feature can address it as a normal bug.

What are some examples of the table above applied to actual attack types?
SeverityFindingCategoryFinding ImpactFinding Likelihood
CriticalInternet Accessible Remote Code ExecutionRemote Code Execution (RCE)HighHigh
Stored Cross Site Scripting on unity.comCross-Site Scripting (XSS)HighHigh
Administrative Privilege EscalationBroken Access Control/Authorization (BAC)HighHigh
Authentication Bypass w/ Access to User DataBroken Authentication and Session ManagementHighHigh
HighRemote Code Execution on an isolated instanceRemote Code Execution (RCE)MediumHigh
Partial Privilege EscalationBroken Access Control/Authorization (BAC)MediumHigh
Production Secrets in Code RepositorySensitive Data ExposureHighMedium
Server-side Request Forgery w/ accessible internal servicesServer-Side InjectionHighMedium
Cross site request forgery for sensitive dataCross-Site Request Forgery (CSRF)MediumHigh
Access Token Leak resulting in full account compromiseSensitive Data ExposureHighMedium
Reflected Cross-Site ScriptingCross-Site Scripting (XSS)MediumHigh
Persistent remote denial of serviceDenial-of-Service (DoS)HighMedium
No TLS/HTTPS/Transport Encryption on sensitive serviceInsecure Data TransportHighMedium
MediumCross site request forgery for non-sensitive dataCross-Site Request Forgery (CSRF)MediumMedium
Server-side Request Forgery (Info Disclosure)Server-Side InjectionMediumMedium
Session FixationBroken Authentication and Session ManagementMediumMedium
Access Token Leak w/ Limited ScopeSensitive Data ExposureLowHigh
Multi-factor authentication bypassBroken Authentication and Session ManagementHighLow
Multi-packet Denial of ServiceDenial-of-Service (DoS)MediumMedium
No TLS/HTTPS/Transport Encryption on non-sensitive serviceInsecure Data TransportMediumMedium
Insecure Cryptographic OptionsBroken CryptographyHighLow
Publicly Accessible Google GroupsInsufficient Security ConfigurabilityMediumMedium
Cookie FlagsServer Security MisconfigurationLowHigh
LowClickjackingServer Security MisconfigurationLowMedium
Open RedirectUnvalidated Redirects and ForwardsLowMedium
Multi-packet DoSDenial-of-Service (DoS)LowMedium
Leaked HTTP HeadersServer Security MisconfigurationLowMedium
Information DisclosureSensitive Data ExposureLowMedium
Open CORS PolicyServer Security MisconfigurationLowMedium
TabnabbingUnvalidated Redirects and ForwardsLowLow