This vulnerability occurs when a software component exposes an API or interface containing a high-risk function that lacks proper access controls, allowing unauthorized actors to trigger it.
Exposing an unsafe function through a public interface creates a flexible attack surface. The danger stems not from the function itself, but from who can access it. Attackers can exploit this to trigger unintended behaviors—like file deletion, system commands, or data corruption—depending on what the exposed method does. This pattern applies broadly across technologies, including ActiveX controls, Java methods, IOCTLs, and REST API endpoints. The exposure typically happens in two scenarios: either the function was never meant to be publicly accessible during design, or it was intended only for a specific, trusted client (like a single website) but was improperly scoped. In both cases, the core failure is missing or inadequate authorization checks that should restrict access to privileged or internal operations.
Impact: Gain Privileges or Assume IdentityRead Application DataModify Application DataExecute Unauthorized Code or CommandsOther
Exposing critical functionality essentially provides an attacker with the privilege level of the exposed functionality. This could result in the modification or exposure of sensitive data or possibly even execution of arbitrary code.
Strategy: Attack Surface Reduction
javajava// Android* @Override public boolean shouldOverrideUrlLoading(WebView view, String url){ ``` if (url.substring(0,14).equalsIgnoreCase("examplescheme:")){ if(url.substring(14,25).equalsIgnoreCase("getUserInfo")){ writeDataToView(view, UserData); return false; } else{ return true; } } }
// iOS* -(BOOL) webView:(UIWebView *)exWebView shouldStartLoadWithRequest:(NSURLRequest *)exRequest navigationType:(UIWebViewNavigationType)exNavigationType { ``` NSURL *URL = [exRequest URL]; if ([[URL scheme] isEqualToString:@"exampleScheme"]) { NSString *functionString = [URL resourceSpecifier]; if ([functionString hasPrefix:@"specialFunction"]) {
objective-cjavascriptjavajavascriptjavajavascriptLow