我想知道是否有人有更多关于使用chromedriver的具体风险的信息,正如这句话所关注的那样。
"如果可能,请使用无法访问敏感本地或网络数据的测试帐户运行ChromeDriver。ChromeDrive永远不应该使用特权帐户运行。">
想知道使用特权账户时的具体风险是什么,如果可以采取任何预防措施来防范这些风险,会发生什么。
提前谢谢!
谷歌Chrome浏览器的工作原理
在STEPHANIE CRAWFORD提到的Chrome浏览器安全文章中,谷歌通过创建安全浏览技术,利用其作为搜索引擎的力量,如果Chrome检测到您访问的网站包含恶意软件或网络钓鱼,该技术将自动警告您。
Chrome通过一种名为Sandboxing的独特安全功能部署了这种安全措施。沙盒意味着,将每个进程分离到独立的空间中,以查看它们各自的功能。Chrome将其工作负载作为一系列多个进程来处理,而不是作为一个大型浏览器进程的一部分。每次打开网页时,Chrome都会启动一个或多个新进程来运行该网页上的脚本。此外,每个Chrome扩展和应用程序都在自己的进程中运行。Chrome通过其多进程体系结构实现了沙箱。沙箱的安全优势在于Chrome能够控制每个进程的访问令牌。进程的这些访问令牌允许进程访问有关系统的重要信息,如系统的文件和注册表项。Chrome从浏览器启动的进程中截取每个访问令牌,并修改该令牌以限制其对该信息的访问。因此,Chrome的沙盒有助于阻止那些试图安装恶意软件、获取个人信息或从硬盘获取数据的网页。沙箱的缺点是,它不能抓住所有东西。沙盒进程可能仍然能够访问不太安全的文件系统。它还可能错过保护由第三方软件管理的注册表项和文件,如非系统原生的游戏或聊天程序。
WebDriver驱动的Chrome
最近,在使用Selenium启动WebDriver控制的Chrome浏览上下文时,我们一直主张使用特定的命令行参数:
--no-sandbox
:为所有通常使用沙盒的进程类型禁用沙盒
参见:
- WebDriverException:未知错误:尝试启动Chrome浏览器时,DevToolsActivePort文件不存在
- 如何配置ChromeDriver通过Selenium在无头模式下启动Chrome浏览器
- 未知错误:由于未知错误导致页面崩溃,会话被删除:无法从ChromeDriver Selenium崩溃的选项卡中确定加载状态
无沙盒
还有几个与沙盒相关的标志可用,使沙盒进程能够在没有分配作业对象的情况下运行。此标志是允许Chrome在RemoteApp或Citrix中运行所必需的。此标志可以降低沙盒进程的安全性,并允许它们执行某些API调用,如关闭Windows或访问剪贴板。此外,我们也失去了杀死一些进程的机会,直到拥有它们的外部工作完成。
- --不允许沙箱作业:禁用沙箱作业的使用
- --允许沙盒调试:允许调试沙盒进程
- --禁用gpu沙箱:禁用gpu进程沙箱
- --禁用命名空间沙箱:禁用命名空间沙盒的使用
- --disable seccomp filter sandbox:禁用seccomp筛选器沙箱(seccomp bpf)(仅限Linux)
- --disable setuid sandbox:禁用setuid沙盒(仅限Linux)
- --disable-win32k-lockdown:禁用子进程的win32k进程缓解策略
- --启用音频服务沙箱:启用音频服务沙箱
- --gpu沙箱允许sysv shm:允许在gpu沙箱中调用shmat()系统
- --gpu沙盒故障致命:使gpu沙盒故障变得致命
- --无沙盒且提升:禁用沙盒并赋予进程提升的权限(仅限Windows)
沙盒
沙盒利用操作系统提供的安全性,允许执行无法对计算机进行持久更改或访问机密信息的代码。沙箱提供的体系结构和确切保证取决于操作系统。
- windows实现原则:
- 不要重新发明轮子:用更好的安全模型扩展操作系统内核是很诱人的。不要。让操作系统将其安全性应用于其控制的对象。另一方面,创建具有自定义安全模型的应用程序级对象(抽象)是可以的
- 最小权限原则:这应该同时应用于沙盒代码和控制沙盒的代码。换句话说,即使用户不能提升为超级用户,沙箱也应该工作
- 假设沙盒代码是恶意代码:出于威胁建模的目的,一旦执行路径超过main()函数中的几个早期调用,我们就会认为沙盒已被破坏(即运行恶意代码)。在实践中,它可能在第一个外部输入被接受后立即发生,或者就在进入主循环之前
- 灵活:非恶意代码不会试图访问它无法获得的资源。在这种情况下,沙箱应该施加几乎为零的性能影响。在特殊情况下,当敏感资源需要以可控的方式接触一次时,可以对性能进行处罚。如果操作系统安全性使用得当,通常会出现这种情况
- 仿真不是安全性:仿真和虚拟机解决方案本身并不提供安全性。沙箱不应该依赖代码模拟、代码翻译或修补来提供安全性
- linux实现
- macos实现