diff --git a/core/includes/common.inc b/core/includes/common.inc
index c513411..7b40e65 100644
--- a/core/includes/common.inc
+++ b/core/includes/common.inc
@@ -3169,7 +3169,7 @@ function drupal_page_set_cache(Response $response, Request $request) {
     $cache = (object) array(
       'cid' => $base_root . $request->getRequestUri(),
       'data' => array(
-        'path' => $request->attributes->get('system_path'),
+        'path' => $request->attributes->get('_system_path'),
         'body' => $response->getContent(),
         'title' => drupal_get_title(),
         'headers' => array(),
diff --git a/core/includes/form.inc b/core/includes/form.inc
index 5abf669..a9b83ae 100644
--- a/core/includes/form.inc
+++ b/core/includes/form.inc
@@ -1344,7 +1344,7 @@ function drupal_redirect_form($form_state) {
         }
       }
     }
-    $url = url(Drupal::request()->attributes->get('system_path'), array(
+    $url = url(Drupal::request()->attributes->get('_system_path'), array(
       'query' => Drupal::request()->query->all(),
       'absolute' => TRUE,
     ));
diff --git a/core/includes/menu.inc b/core/includes/menu.inc
index c64e58e..31309f6 100644
--- a/core/includes/menu.inc
+++ b/core/includes/menu.inc
@@ -966,7 +966,7 @@ function _menu_link_translate(&$item, $translate = FALSE) {
  */
 function menu_item_route_access(Route $route, $href, &$map) {
   $request = Request::create('/' . $href);
-  $request->attributes->set('system_path', $href);
+  $request->attributes->set('_system_path', $href);
   // Attempt to match this path to provide a fully built request to the
   // access checker.
   try {
@@ -2629,7 +2629,7 @@ function menu_get_active_breadcrumb() {
 
     // Don't show a link to the current page in the breadcrumb trail.
     $end = end($active_trail);
-    if (Drupal::request()->attributes->get('system_path') == $end['href']) {
+    if (Drupal::request()->attributes->get('_system_path') == $end['href']) {
       array_pop($active_trail);
     }
 
diff --git a/core/includes/path.inc b/core/includes/path.inc
index d17f58f..b55c503 100644
--- a/core/includes/path.inc
+++ b/core/includes/path.inc
@@ -83,7 +83,7 @@ function current_path() {
   // fallback code below, once the path alias logic has been figured out in
   // http://drupal.org/node/1269742.
   if (drupal_container()->isScopeActive('request')) {
-    $path = drupal_container()->get('request')->attributes->get('system_path');
+    $path = drupal_container()->get('request')->attributes->get('_system_path');
     if ($path !== NULL) {
       return $path;
     }
diff --git a/core/lib/Drupal/Core/Controller/AjaxController.php b/core/lib/Drupal/Core/Controller/AjaxController.php
index b4dc5a1..7b2cece 100644
--- a/core/lib/Drupal/Core/Controller/AjaxController.php
+++ b/core/lib/Drupal/Core/Controller/AjaxController.php
@@ -41,7 +41,7 @@ public function content(Request $request, $_content) {
 
     // We need to clean up the derived information and such so that the
     // subrequest can be processed properly without leaking data through.
-    $attributes->remove('system_path');
+    $attributes->remove('_system_path');
     $attributes->remove('_content');
     $attributes->remove('_legacy');
 
diff --git a/core/lib/Drupal/Core/Controller/DialogController.php b/core/lib/Drupal/Core/Controller/DialogController.php
index 365c196..cde2876 100644
--- a/core/lib/Drupal/Core/Controller/DialogController.php
+++ b/core/lib/Drupal/Core/Controller/DialogController.php
@@ -53,7 +53,7 @@ protected function forward(Request $request) {
     $attributes = clone $request->attributes;
     // We need to clean up the derived information and such so that the
     // subrequest can be processed properly without leaking data through.
-    $attributes->remove('system_path');
+    $attributes->remove('_system_path');
     $attributes->set('dialog', TRUE);
 
     // Remove the accept header so the subrequest does not end up back in this
diff --git a/core/lib/Drupal/Core/Controller/ExceptionController.php b/core/lib/Drupal/Core/Controller/ExceptionController.php
index 9e7d77e..fee1294 100644
--- a/core/lib/Drupal/Core/Controller/ExceptionController.php
+++ b/core/lib/Drupal/Core/Controller/ExceptionController.php
@@ -81,7 +81,7 @@ public function on405Html(FlattenException $exception, Request $request) {
    *   The request object that triggered this exception.
    */
   public function on403Html(FlattenException $exception, Request $request) {
-    $system_path = $request->attributes->get('system_path');
+    $system_path = $request->attributes->get('_system_path');
     watchdog('access denied', $system_path, NULL, WATCHDOG_WARNING);
 
     $path = $this->container->get('path.alias_manager')->getSystemPath(config('system.site')->get('page.403'));
@@ -136,7 +136,7 @@ public function on403Html(FlattenException $exception, Request $request) {
    *   The request object that triggered this exception.
    */
   public function on404Html(FlattenException $exception, Request $request) {
-    watchdog('page not found', check_plain($request->attributes->get('system_path')), NULL, WATCHDOG_WARNING);
+    watchdog('page not found', check_plain($request->attributes->get('_system_path')), NULL, WATCHDOG_WARNING);
 
     // Check for and return a fast 404 page if configured.
     $config = config('system.performance');
@@ -151,7 +151,7 @@ public function on404Html(FlattenException $exception, Request $request) {
       }
     }
 
-    $system_path = $request->attributes->get('system_path');
+    $system_path = $request->attributes->get('_system_path');
 
     // Keep old path for reference, and to allow forms to redirect to it.
     if (!isset($_GET['destination'])) {
diff --git a/core/lib/Drupal/Core/Controller/HtmlPageController.php b/core/lib/Drupal/Core/Controller/HtmlPageController.php
index fd89081..e3b1023 100644
--- a/core/lib/Drupal/Core/Controller/HtmlPageController.php
+++ b/core/lib/Drupal/Core/Controller/HtmlPageController.php
@@ -55,7 +55,7 @@ public function content(Request $request, $_content) {
 
     // We need to clean off the derived information and such so that the
     // subrequest can be processed properly without leaking data through.
-    $attributes->remove('system_path');
+    $attributes->remove('_system_path');
     $attributes->remove('_content');
 
     $response = $this->httpKernel->forward($controller, $attributes->all(), $request->query->all());
diff --git a/core/lib/Drupal/Core/EventSubscriber/PathListenerBase.php b/core/lib/Drupal/Core/EventSubscriber/PathListenerBase.php
index 385798c..39cc101 100644
--- a/core/lib/Drupal/Core/EventSubscriber/PathListenerBase.php
+++ b/core/lib/Drupal/Core/EventSubscriber/PathListenerBase.php
@@ -15,11 +15,11 @@
 abstract class PathListenerBase {
 
   public function extractPath(Request $request) {
-    $path = $request->attributes->get('system_path');
+    $path = $request->attributes->get('_system_path');
     return isset($path) ? $path : trim($request->getPathInfo(), '/');
   }
 
   public function setPath(Request $request, $path) {
-    $request->attributes->set('system_path', $path);
+    $request->attributes->set('_system_path', $path);
   }
 }
diff --git a/core/lib/Drupal/Core/EventSubscriber/PathSubscriber.php b/core/lib/Drupal/Core/EventSubscriber/PathSubscriber.php
index a5dc955..fb60160 100644
--- a/core/lib/Drupal/Core/EventSubscriber/PathSubscriber.php
+++ b/core/lib/Drupal/Core/EventSubscriber/PathSubscriber.php
@@ -50,7 +50,7 @@ public function onKernelRequestConvertPath(GetResponseEvent $event) {
     $request = $event->getRequest();
     $path = trim($request->getPathInfo(), '/');
     $path = $this->pathProcessor->processInbound($path, $request);
-    $request->attributes->set('system_path', $path);
+    $request->attributes->set('_system_path', $path);
     // Also set an attribute that indicates whether we are using clean URLs.
     $clean_urls = TRUE;
     $base_url = $request->getBaseUrl();
diff --git a/core/lib/Drupal/Core/LegacyUrlMatcher.php b/core/lib/Drupal/Core/LegacyUrlMatcher.php
index 80d6ae8..db6e898 100644
--- a/core/lib/Drupal/Core/LegacyUrlMatcher.php
+++ b/core/lib/Drupal/Core/LegacyUrlMatcher.php
@@ -100,7 +100,7 @@ public function getRequest() {
    * @api
    */
   public function matchRequest(Request $request) {
-    if ($router_item = $this->matchDrupalItem($request->attributes->get('system_path'))) {
+    if ($router_item = $this->matchDrupalItem($request->attributes->get('_system_path'))) {
       $ret = $this->convertDrupalItem($router_item);
       // Stash the router item in the attributes while we're transitioning.
       $ret['drupal_menu_item'] = $router_item;
diff --git a/core/lib/Drupal/Core/Routing/RouteProvider.php b/core/lib/Drupal/Core/Routing/RouteProvider.php
index 752cf56..6a2027e 100644
--- a/core/lib/Drupal/Core/Routing/RouteProvider.php
+++ b/core/lib/Drupal/Core/Routing/RouteProvider.php
@@ -80,15 +80,15 @@ public function __construct(Connection $connection, $table = 'router') {
    */
   public function getRouteCollectionForRequest(Request $request) {
 
-    // The 'system_path' has language prefix stripped and path alias resolved,
+    // The '_system_path' has language prefix stripped and path alias resolved,
     // whereas getPathInfo() returns the requested path. In Drupal, the request
     // always contains a system_path attribute, but this component may get
     // adopted by non-Drupal projects. Some unit tests also skip initializing
-    // 'system_path'.
+    // '_system_path'.
     // @todo Consider abstracting this to a separate object.
-    if ($request->attributes->has('system_path')) {
-      // system_path never has leading or trailing slashes.
-      $path = '/' . $request->attributes->get('system_path');
+    if ($request->attributes->has('_system_path')) {
+      // _system_path never has leading or trailing slashes.
+      $path = '/' . $request->attributes->get('_system_path');
     }
     else {
       // getPathInfo() always has leading slash, and might or might not have a
diff --git a/core/lib/Drupal/Core/Routing/UrlMatcher.php b/core/lib/Drupal/Core/Routing/UrlMatcher.php
index ae5fc7d..61aef98 100644
--- a/core/lib/Drupal/Core/Routing/UrlMatcher.php
+++ b/core/lib/Drupal/Core/Routing/UrlMatcher.php
@@ -30,7 +30,7 @@ public function finalMatch(RouteCollection $collection, Request $request) {
     $context = new RequestContext();
     $context->fromRequest($request);
     $this->setContext($context);
-    return $this->match('/' . $request->attributes->get('system_path'));
+    return $this->match('/' . $request->attributes->get('_system_path'));
   }
 
 }
diff --git a/core/modules/menu_link/lib/Drupal/menu_link/Plugin/Core/Entity/MenuLink.php b/core/modules/menu_link/lib/Drupal/menu_link/Plugin/Core/Entity/MenuLink.php
index 7f227f8..2adf1b7 100644
--- a/core/modules/menu_link/lib/Drupal/menu_link/Plugin/Core/Entity/MenuLink.php
+++ b/core/modules/menu_link/lib/Drupal/menu_link/Plugin/Core/Entity/MenuLink.php
@@ -510,7 +510,7 @@ public function postSave(EntityStorageControllerInterface $storage_controller, $
   public static function findRouteName($link_path) {
     // Look up the route_name used for the given path.
     $request = Request::create('/' . $link_path);
-    $request->attributes->set('system_path', $link_path);
+    $request->attributes->set('_system_path', $link_path);
     try {
       // Use router.dynamic instead of router, because router will call the
       // legacy router which will call hook_menu() and you will get back to
diff --git a/core/modules/overlay/lib/Drupal/overlay/EventSubscriber/OverlaySubscriber.php b/core/modules/overlay/lib/Drupal/overlay/EventSubscriber/OverlaySubscriber.php
index 86ed1d0..8b8e49d 100644
--- a/core/modules/overlay/lib/Drupal/overlay/EventSubscriber/OverlaySubscriber.php
+++ b/core/modules/overlay/lib/Drupal/overlay/EventSubscriber/OverlaySubscriber.php
@@ -81,7 +81,7 @@ public function onRequest(GetResponseEvent $event) {
     $user_data = $this->userData->get('overlay', $user->id(), 'enabled');
     $use_overlay = !isset($user_data) || $user_data;
     if (empty($mode) && user_access('access overlay') && $use_overlay) {
-      $current_path = $request->attributes->get('system_path');
+      $current_path = $request->attributes->get('_system_path');
       // After overlay is enabled on the modules page, redirect to
       // <front>#overlay=admin/modules to actually enable the overlay.
       if (isset($_SESSION['overlay_enable_redirect']) && $_SESSION['overlay_enable_redirect']) {
diff --git a/core/modules/system/lib/Drupal/system/Tests/Routing/RouteProviderTest.php b/core/modules/system/lib/Drupal/system/Tests/Routing/RouteProviderTest.php
index eee9abf..01f651e 100644
--- a/core/modules/system/lib/Drupal/system/Tests/Routing/RouteProviderTest.php
+++ b/core/modules/system/lib/Drupal/system/Tests/Routing/RouteProviderTest.php
@@ -338,7 +338,7 @@ function testOutlinePathNoMatch() {
   }
 
   /**
-   * Confirms that system_path attribute overrides request path.
+   * Confirms that _system_path attribute overrides request path.
    */
   function testSystemPathMatch() {
     $connection = Database::getConnection();
@@ -351,7 +351,7 @@ function testSystemPathMatch() {
     $dumper->dump();
 
     $request = Request::create('/path/one', 'GET');
-    $request->attributes->set('system_path', 'path/two');
+    $request->attributes->set('_system_path', 'path/two');
 
     $routes_by_pattern = $provider->getRoutesByPattern('/path/two');
     $routes = $provider->getRouteCollectionForRequest($request);
diff --git a/core/modules/system/system.module b/core/modules/system/system.module
index 4a7cdf4..5b48ef2 100644
--- a/core/modules/system/system.module
+++ b/core/modules/system/system.module
@@ -2334,7 +2334,7 @@ function system_page_build(&$page) {
 function system_custom_theme() {
   if (drupal_container()->isScopeActive('request')) {
     $request = drupal_container()->get('request');
-    $path = $request->attributes->get('system_path');
+    $path = $request->attributes->get('_system_path');
     if (user_access('view the administration theme') && path_is_admin($path)) {
       return config('system.theme')->get('admin');
     }
diff --git a/core/modules/system/tests/modules/menu_test/lib/Drupal/menu_test/EventSubscriber/MaintenanceModeSubscriber.php b/core/modules/system/tests/modules/menu_test/lib/Drupal/menu_test/EventSubscriber/MaintenanceModeSubscriber.php
index ae5f4df..2071a37 100644
--- a/core/modules/system/tests/modules/menu_test/lib/Drupal/menu_test/EventSubscriber/MaintenanceModeSubscriber.php
+++ b/core/modules/system/tests/modules/menu_test/lib/Drupal/menu_test/EventSubscriber/MaintenanceModeSubscriber.php
@@ -25,7 +25,7 @@ class MaintenanceModeSubscriber implements EventSubscriberInterface {
   public function onKernelRequestMaintenance(GetResponseEvent $event) {
     $request = $event->getRequest();
     // Allow access to menu_login_callback even if in maintenance mode.
-    if ($request->attributes->get('_maintenance') == MENU_SITE_OFFLINE && $request->attributes->get('system_path') == 'menu_login_callback') {
+    if ($request->attributes->get('_maintenance') == MENU_SITE_OFFLINE && $request->attributes->get('_system_path') == 'menu_login_callback') {
       $request->attributes->set('_maintenance', MENU_SITE_ONLINE);
     }
   }
diff --git a/core/modules/system/tests/modules/theme_test/lib/Drupal/theme_test/EventSubscriber/ThemeTestSubscriber.php b/core/modules/system/tests/modules/theme_test/lib/Drupal/theme_test/EventSubscriber/ThemeTestSubscriber.php
index bea8b13..56cbdaf 100644
--- a/core/modules/system/tests/modules/theme_test/lib/Drupal/theme_test/EventSubscriber/ThemeTestSubscriber.php
+++ b/core/modules/system/tests/modules/theme_test/lib/Drupal/theme_test/EventSubscriber/ThemeTestSubscriber.php
@@ -23,7 +23,7 @@ class ThemeTestSubscriber implements EventSubscriberInterface {
    */
   public function onRequest(GetResponseEvent $event) {
     $request = $event->getRequest();
-    $current_path = $request->attributes->get('system_path');
+    $current_path = $request->attributes->get('_system_path');
     if ($current_path == 'theme-test/request-listener') {
       // First, force the theme registry to be rebuilt on this page request.
       // This allows us to test a full initialization of the theme system in
diff --git a/core/modules/user/lib/Drupal/user/EventSubscriber/MaintenanceModeSubscriber.php b/core/modules/user/lib/Drupal/user/EventSubscriber/MaintenanceModeSubscriber.php
index 2c47414..3c23086 100644
--- a/core/modules/user/lib/Drupal/user/EventSubscriber/MaintenanceModeSubscriber.php
+++ b/core/modules/user/lib/Drupal/user/EventSubscriber/MaintenanceModeSubscriber.php
@@ -26,7 +26,7 @@ class MaintenanceModeSubscriber implements EventSubscriberInterface {
   public function onKernelRequestMaintenance(GetResponseEvent $event) {
     $request = $event->getRequest();
     $site_status = $request->attributes->get('_maintenance');
-    $path = $request->attributes->get('system_path');
+    $path = $request->attributes->get('_system_path');
     if ($site_status == MENU_SITE_OFFLINE) {
       // If the site is offline, log out unprivileged users.
       if ($GLOBALS['user']->isAuthenticated() && !user_access('access site in maintenance mode')) {
diff --git a/core/modules/views/lib/Drupal/views/Controller/ViewAjaxController.php b/core/modules/views/lib/Drupal/views/Controller/ViewAjaxController.php
index b83ac77..b0eea3c 100644
--- a/core/modules/views/lib/Drupal/views/Controller/ViewAjaxController.php
+++ b/core/modules/views/lib/Drupal/views/Controller/ViewAjaxController.php
@@ -102,7 +102,7 @@ public function ajaxView(Request $request) {
       if ($view && $view->access($display_id)) {
         // Fix the current path for paging.
         if (!empty($path)) {
-          $request->attributes->set('system_path', $path);
+          $request->attributes->set('_system_path', $path);
         }
 
         // Add all $_POST data, because AJAX is always a post and many things,
diff --git a/core/modules/views/lib/Drupal/views/Plugin/views/argument_default/Raw.php b/core/modules/views/lib/Drupal/views/Plugin/views/argument_default/Raw.php
index 004cedf..a3d6650 100644
--- a/core/modules/views/lib/Drupal/views/Plugin/views/argument_default/Raw.php
+++ b/core/modules/views/lib/Drupal/views/Plugin/views/argument_default/Raw.php
@@ -101,7 +101,7 @@ public function buildOptionsForm(&$form, &$form_state) {
   }
 
   public function getArgument() {
-    $path = $this->request->attributes->get('system_path');
+    $path = $this->request->attributes->get('_system_path');
     if ($this->options['use_alias']) {
       $path = $this->aliasManager->getPathAlias($path);
     }
diff --git a/core/modules/views/tests/Drupal/views/Tests/Plugin/argument_default/RawTest.php b/core/modules/views/tests/Drupal/views/Tests/Plugin/argument_default/RawTest.php
index f866575..af285f9 100644
--- a/core/modules/views/tests/Drupal/views/Tests/Plugin/argument_default/RawTest.php
+++ b/core/modules/views/tests/Drupal/views/Tests/Plugin/argument_default/RawTest.php
@@ -39,7 +39,7 @@ public function testGetArgument() {
       ->disableOriginalConstructor()
       ->getMock();
 
-    $request = new Request(array(), array(), array('system_path' => 'test/example'));
+    $request = new Request(array(), array(), array('_system_path' => 'test/example'));
     $alias_manager = $this->getMock('Drupal\Core\Path\AliasManagerInterface');
     $alias_manager->expects($this->never())
       ->method('getPathAlias');
