Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(170)

Unified Diff: sandbox/win/tests/validation_tests/suite.cc

Issue 1851213002: Remove sandbox on Windows. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fix nacl compile issues Created 4 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: sandbox/win/tests/validation_tests/suite.cc
diff --git a/sandbox/win/tests/validation_tests/suite.cc b/sandbox/win/tests/validation_tests/suite.cc
deleted file mode 100644
index 14fba74cd17feb6277712287c416fa4f22319bef..0000000000000000000000000000000000000000
--- a/sandbox/win/tests/validation_tests/suite.cc
+++ /dev/null
@@ -1,233 +0,0 @@
-// Copyright (c) 2012 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// This file contains the validation tests for the sandbox.
-// It includes the tests that need to be performed inside the
-// sandbox.
-
-#include <shlwapi.h>
-#include <stddef.h>
-
-#include "base/win/windows_version.h"
-#include "sandbox/win/tests/common/controller.h"
-#include "testing/gtest/include/gtest/gtest.h"
-
-#pragma comment(lib, "shlwapi.lib")
-
-namespace {
-
-void TestProcessAccess(sandbox::TestRunner* runner, DWORD target) {
- const wchar_t *kCommandTemplate = L"OpenProcessCmd %d %d";
- wchar_t command[1024] = {0};
-
- // Test all the scary process permissions.
- wsprintf(command, kCommandTemplate, target, PROCESS_CREATE_THREAD);
- EXPECT_EQ(sandbox::SBOX_TEST_DENIED, runner->RunTest(command));
- wsprintf(command, kCommandTemplate, target, PROCESS_DUP_HANDLE);
- EXPECT_EQ(sandbox::SBOX_TEST_DENIED, runner->RunTest(command));
- wsprintf(command, kCommandTemplate, target, PROCESS_SET_INFORMATION);
- EXPECT_EQ(sandbox::SBOX_TEST_DENIED, runner->RunTest(command));
- wsprintf(command, kCommandTemplate, target, PROCESS_VM_OPERATION);
- EXPECT_EQ(sandbox::SBOX_TEST_DENIED, runner->RunTest(command));
- wsprintf(command, kCommandTemplate, target, PROCESS_VM_READ);
- EXPECT_EQ(sandbox::SBOX_TEST_DENIED, runner->RunTest(command));
- wsprintf(command, kCommandTemplate, target, PROCESS_VM_WRITE);
- EXPECT_EQ(sandbox::SBOX_TEST_DENIED, runner->RunTest(command));
- wsprintf(command, kCommandTemplate, target, PROCESS_QUERY_INFORMATION);
- EXPECT_EQ(sandbox::SBOX_TEST_DENIED, runner->RunTest(command));
- wsprintf(command, kCommandTemplate, target, WRITE_DAC);
- EXPECT_EQ(sandbox::SBOX_TEST_DENIED, runner->RunTest(command));
- wsprintf(command, kCommandTemplate, target, WRITE_OWNER);
- EXPECT_EQ(sandbox::SBOX_TEST_DENIED, runner->RunTest(command));
- wsprintf(command, kCommandTemplate, target, READ_CONTROL);
- EXPECT_EQ(sandbox::SBOX_TEST_DENIED, runner->RunTest(command));
-}
-
-} // namespace
-
-namespace sandbox {
-
-// Returns true if the volume that contains any_path supports ACL security. The
-// input path can contain unexpanded environment strings. Returns false on any
-// failure or if the file system does not support file security (such as FAT).
-bool VolumeSupportsACLs(const wchar_t* any_path) {
- wchar_t expand[MAX_PATH +1];
- DWORD len =::ExpandEnvironmentStringsW(any_path, expand, _countof(expand));
- if (0 == len) return false;
- if (len > _countof(expand)) return false;
- if (!::PathStripToRootW(expand)) return false;
- DWORD fs_flags = 0;
- if (!::GetVolumeInformationW(expand, NULL, 0, 0, NULL, &fs_flags, NULL, 0))
- return false;
- if (fs_flags & FILE_PERSISTENT_ACLS) return true;
- return false;
-}
-
-// Tests if the suite is working properly.
-TEST(ValidationSuite, TestSuite) {
- TestRunner runner;
- ASSERT_EQ(SBOX_TEST_PING_OK, runner.RunTest(L"ping"));
-}
-
-// Tests if the file system is correctly protected by the sandbox.
-TEST(ValidationSuite, TestFileSystem) {
- // Do not perform the test if the system is using FAT or any other
- // file system that does not have file security.
- ASSERT_TRUE(VolumeSupportsACLs(L"%SystemDrive%\\"));
- ASSERT_TRUE(VolumeSupportsACLs(L"%SystemRoot%\\"));
- ASSERT_TRUE(VolumeSupportsACLs(L"%ProgramFiles%\\"));
- ASSERT_TRUE(VolumeSupportsACLs(L"%Temp%\\"));
- ASSERT_TRUE(VolumeSupportsACLs(L"%AppData%\\"));
-
- TestRunner runner;
- EXPECT_EQ(SBOX_TEST_DENIED, runner.RunTest(L"OpenFileCmd %SystemDrive%"));
- EXPECT_EQ(SBOX_TEST_DENIED, runner.RunTest(L"OpenFileCmd %SystemRoot%"));
- EXPECT_EQ(SBOX_TEST_DENIED, runner.RunTest(L"OpenFileCmd %ProgramFiles%"));
- EXPECT_EQ(SBOX_TEST_DENIED,
- runner.RunTest(L"OpenFileCmd %SystemRoot%\\System32"));
- EXPECT_EQ(SBOX_TEST_DENIED,
- runner.RunTest(L"OpenFileCmd %SystemRoot%\\explorer.exe"));
- EXPECT_EQ(SBOX_TEST_DENIED,
- runner.RunTest(L"OpenFileCmd %SystemRoot%\\Cursors\\arrow_i.cur"));
- EXPECT_EQ(SBOX_TEST_DENIED,
- runner.RunTest(L"OpenFileCmd %AllUsersProfile%"));
- EXPECT_EQ(SBOX_TEST_DENIED, runner.RunTest(L"OpenFileCmd %Temp%"));
- EXPECT_EQ(SBOX_TEST_DENIED, runner.RunTest(L"OpenFileCmd %AppData%"));
-}
-
-// Tests if the registry is correctly protected by the sandbox.
-TEST(ValidationSuite, TestRegistry) {
- TestRunner runner;
- EXPECT_EQ(SBOX_TEST_DENIED, runner.RunTest(L"OpenKey HKLM"));
- EXPECT_EQ(SBOX_TEST_DENIED, runner.RunTest(L"OpenKey HKCU"));
- EXPECT_EQ(SBOX_TEST_DENIED, runner.RunTest(L"OpenKey HKU"));
- EXPECT_EQ(SBOX_TEST_DENIED,
- runner.RunTest(
- L"OpenKey HKLM "
- L"\"Software\\Microsoft\\Windows NT\\CurrentVersion\\WinLogon\""));
-}
-
-// Tests that the permissions on the Windowstation does not allow the sandbox
-// to get to the interactive desktop or to make the sbox desktop interactive.
-TEST(ValidationSuite, TestDesktop) {
- TestRunner runner;
- runner.GetPolicy()->SetAlternateDesktop(true);
- runner.GetPolicy()->SetIntegrityLevel(INTEGRITY_LEVEL_LOW);
- EXPECT_EQ(SBOX_TEST_DENIED, runner.RunTest(L"OpenInteractiveDesktop NULL"));
- EXPECT_EQ(SBOX_TEST_DENIED, runner.RunTest(L"SwitchToSboxDesktop NULL"));
-}
-
-// Tests that the permissions on the Windowstation does not allow the sandbox
-// to get to the interactive desktop or to make the sbox desktop interactive.
-TEST(ValidationSuite, TestAlternateDesktop) {
-
- TestRunner runner;
- EXPECT_EQ(SBOX_TEST_DENIED, runner.RunTest(L"EnumAlternateWinsta NULL"));
-
- wchar_t command[1024] = {0};
- runner.SetTimeout(3600000);
- runner.GetPolicy()->SetAlternateDesktop(true);
- runner.GetPolicy()->SetIntegrityLevel(INTEGRITY_LEVEL_LOW);
- base::string16 desktop_name = runner.GetPolicy()->GetAlternateDesktop();
- desktop_name = desktop_name.substr(desktop_name.find('\\') + 1);
- wsprintf(command, L"OpenAlternateDesktop %lS", desktop_name.c_str());
- EXPECT_EQ(SBOX_TEST_DENIED, runner.RunTest(command));
-}
-
-// Tests if the windows are correctly protected by the sandbox.
-TEST(ValidationSuite, TestWindows) {
- TestRunner runner;
- wchar_t command[1024] = {0};
-
- wsprintf(command, L"ValidWindow %Id",
- reinterpret_cast<size_t>(::GetDesktopWindow()));
- EXPECT_EQ(SBOX_TEST_DENIED, runner.RunTest(command));
-
- wsprintf(command, L"ValidWindow %Id",
- reinterpret_cast<size_t>(::FindWindow(NULL, NULL)));
- EXPECT_EQ(SBOX_TEST_DENIED, runner.RunTest(command));
-}
-
-// Tests that a locked-down process cannot open another locked-down process.
-TEST(ValidationSuite, TestProcessDenyLockdown) {
- TestRunner runner;
- TestRunner target;
-
- target.SetAsynchronous(true);
-
- EXPECT_EQ(SBOX_TEST_SUCCEEDED, target.RunTest(L"SleepCmd 30000"));
-
- TestProcessAccess(&runner, target.process_id());
-}
-
-// Tests that a low-integrity process cannot open a locked-down process (due
-// to the integrity label changing after startup via SetDelayedIntegrityLevel).
-TEST(ValidationSuite, TestProcessDenyLowIntegrity) {
-
- TestRunner runner;
- TestRunner target;
-
- target.SetAsynchronous(true);
- target.GetPolicy()->SetDelayedIntegrityLevel(INTEGRITY_LEVEL_LOW);
-
- runner.GetPolicy()->SetIntegrityLevel(INTEGRITY_LEVEL_LOW);
- runner.GetPolicy()->SetTokenLevel(USER_RESTRICTED_SAME_ACCESS,
- USER_INTERACTIVE);
-
- EXPECT_EQ(SBOX_TEST_SUCCEEDED, target.RunTest(L"SleepCmd 30000"));
-
- TestProcessAccess(&runner, target.process_id());
-}
-
-// Tests that a locked-down process cannot open a low-integrity process.
-TEST(ValidationSuite, TestProcessDenyBelowLowIntegrity) {
-
- TestRunner runner;
- TestRunner target;
-
- target.SetAsynchronous(true);
- target.GetPolicy()->SetIntegrityLevel(INTEGRITY_LEVEL_LOW);
- target.GetPolicy()->SetTokenLevel(USER_RESTRICTED_SAME_ACCESS,
- USER_INTERACTIVE);
-
- runner.GetPolicy()->SetDelayedIntegrityLevel(INTEGRITY_LEVEL_UNTRUSTED);
- runner.GetPolicy()->SetTokenLevel(USER_RESTRICTED_SAME_ACCESS,
- USER_INTERACTIVE);
-
- EXPECT_EQ(SBOX_TEST_SUCCEEDED, target.RunTest(L"SleepCmd 30000"));
-
- TestProcessAccess(&runner, target.process_id());
-}
-
-// Tests if the threads are correctly protected by the sandbox.
-TEST(ValidationSuite, TestThread) {
- TestRunner runner;
- wchar_t command[1024] = {0};
-
- wsprintf(command, L"OpenThreadCmd %d", ::GetCurrentThreadId());
- EXPECT_EQ(SBOX_TEST_DENIED, runner.RunTest(command));
-}
-
-// Tests if an over-limit allocation will be denied.
-TEST(ValidationSuite, TestMemoryLimit) {
- TestRunner runner;
- wchar_t command[1024] = {0};
- const int kAllocationSize = 256 * 1024 * 1024;
-
- wsprintf(command, L"AllocateCmd %d", kAllocationSize);
- runner.GetPolicy()->SetJobMemoryLimit(kAllocationSize);
- EXPECT_EQ(SBOX_FATAL_MEMORY_EXCEEDED, runner.RunTest(command));
-}
-
-// Tests a large allocation will succeed absent limits.
-TEST(ValidationSuite, TestMemoryNoLimit) {
- TestRunner runner;
- wchar_t command[1024] = {0};
- const int kAllocationSize = 256 * 1024 * 1024;
-
- wsprintf(command, L"AllocateCmd %d", kAllocationSize);
- EXPECT_EQ(SBOX_TEST_SUCCEEDED, runner.RunTest(command));
-}
-
-} // namespace sandbox
« no previous file with comments | « sandbox/win/tests/validation_tests/sbox_validation_tests.vcproj ('k') | sandbox/win/tests/validation_tests/unit_tests.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698