Chromium学习2(security)
http://www.chromium.org/Home/chromium-security
1. 领域大牛: Michal Zalewski (lcamtuf) and Tavis Ormandy (taviso).
2. 安全评估方面专家:iSec Partners and Chris Rohlf
3. security-related web platform features (examples: iframe sandbox, XSS auditor, CSP). security hardening measures (examples: defensive checks, allocator improvements, ASLR improvements).
4. Bugs in IPC can have nasty consequences. 因此需要一系列措施,保证能够抵抗下列攻击http://www.chromium.org/Home/chromium-security/education/security-tips-for-ipc
5. Core security Principles,从设计层面,除了Chrome’s sandbox architecture外,还使用了其他通用的技术,包括ASLR,DEP,JIT hardening, and SafeSEH—along with custom technologies likeSafe Browsing,out-of-date plugin blocking, silent auto-update, andverified booton Chrome OS,还有per-origin sandboxing and control flow integrity. 此外,Chromium还需行业合作,参与标准制定,包括public key pinning,Content Security Policies, and SPDY. 开源了安全技术(e.g.Native Client/ Pepper,Open Type Sanitizer,application sandboxing, andSafe Browsing). (http://www.chromium.org/Home/chromium-security/core-principles)
6. Security Brag Sheet
chromium存在的安全方面的优点:integrated sandbox、sandbox protection for the Adobe Flash plug-in、unique techniques for significantly mitigating the security risks posed by plug-ins、robust built-in sandboxed PDF viewer、Strict Transport Security and preloaded public key pinning (protected our users against the fraudulent Diginotar certificate for *.google.com.)、HTTPS security through features such as mixed script blocking.
7. site isolation
http://www.chromium.org/developers/design-documents/site-isolation
Chromium中Render进程运行在沙盒中,即使攻击者利用Render进程的漏洞进行攻击,由于沙盒的存在,其造成的危害有限。沙盒还可用来辅助实现site isolation,chromium目前尽量尝试通过"site-per-process"做到,但是实际上是无法做到的,在无法做到site-per-process的情况下,借助Render实现同源策略和site isolation。
site isolation需要解决的问题是:Stealing cross-site cookies and HTML5 stored data.、Stealing cross-site HTML, XML, and JSON documents.、Stealing saved passwords.、Abusing permissions granted to another site、Compromising X-Frame-Options、Accessing cross-site DOM elements via UXSS bugs。
8. sanfbox
https://chromium.googlesource.com/chromium/src/+/master/docs/design/sandbox.md
9. Chromium中安全教育
http://www.chromium.org/Home/chromium-security/education
10. SSL
wifi网络中的中间人攻击工具:https://moxie.org/software/sslstrip/
其他一些中间人攻击的示例包括:NSA通过中间人攻击监控邮件、聊天和其他互联网通信,ISP通过中间人sniffing收集数据用于商业用途,ISP通过中间人攻击修改页面(如加入广告)、中国黑客劫持github。
The Let’s Encrypt project(https://letsencrypt.org/)提供免费的服务器证书
SSL lab提供了SSL部署指南(https://github.com/ssllabs/research/wiki/SSL-and-TLS-Deployment-Best-Practices);通过https://www.ssllabs.com/ssltest/.可以查看SSL部署是否正确
Mixed Content (HTTP / HTTPS) Vulnerabilities(HTTP/HTTPS共存的安全漏洞)
11. 更加有力的安全建议
更加有力是指相应的特性,这些特性处理个人标识信息、高价值信息(如凭据、支付)、同源、对用户设备的设置、用户权限设置等。
传统平台/操作系统仅有一元:用户。当用户登录后,其运行的程序拥有用户的全部权限:所有用户程序能够以用户的权限对其数据、资源进行任意操纵。这引入了安全问题:由于来源多样的代码存在,一般而言是无法接受,例如用户的word程序读取用户私有的SSH key的事情发生。
现在的平台有2元:用户、代码来源。这样的平台包括web、android和iOS。在这些系统中,一个源的代码仅能访问其创建或明确授权的资源。例如,Android平台上的Gmail app仅能访问用户的Gmail和读写邮件所必须的系统功能。没有明确授权,其无法访问其他app(如Twitter)创建的资源,无法访问与email物管的系统能力,无法访问同一个计算机中其他用户的email。
在2元平台中,需要对两个元素进行强认证,而非仅仅对其一进行认证(否则,系统就变成了一元系统了)。这就是,例如,Android和iOS要求厂商(代码源)对其代码进行密码学签名。从而,当用户选择安装Twitter并给与Twitter强权限(如访问用户摄像头)时,能够确保这些能力仅仅赋予了Twiiter code,而非其他code。
作为对比,web历史上将源认证作为可选的,在web中,源被定义为3元组(scheme,host,port),例如(http,example.com, 80)和(HTTPS,mail.google.com,443)。很多源使用非认证的scheme,如http、ws甚至ftp。将权限赋予非认证的源,在网络攻击者存在的情况下,等价于将权限赋予了任意源。
当前,Chromium认为安全的源(Secure origins)包括如下(https, *, *)、(wss, *, *)、(*, localhost, *)、(*, 127/8, *)、(*, ::1/128, *)、(file, *, —)、(chrome-extension, *, —)。
https://www.w3.org/TR/secure-contexts/
12. HTTP一点安全性也没有(http://www.chromium.org/Home/chromium-security/marking-http-as-non-secure)
简单而言,针对web源,有三个基本的传输层安全状态:1. secure(合法的HTTPS、(*,localhost,*)); 2. 可疑的(合法的HTTPS但是有混杂的passive资源,合法的HTTPS但是存在小的TLS错误);3. 不安全的 (broken HTTPS、HTTP)
active tampering, surveillance attacks, 和passive surveillance attacks不仅存在于理论中,也存在于实际中,包括:
RFC 7258: Pervasive Monitoring Is an Attack
NSA uses Google cookies to pinpoint targets for hacking(NSA使用Google网站的Cookie来追踪用户)
Verizon’s ‘Perma-Cookie’ Is a Privacy-Killing Machine(无线运行商Verizon,在用户和用户访问的网站之间加入了50个左右字符,这些字符可以看做是永久cookie,用户唯一标识,可以被所有网站访问,用于定向广告。I don't know how I missed this: Verizon is rewriting your HTTP requests to insert a permacookie? Terrible.)
How bad is it to replace adSense code id to ISP's adSense ID on free Internet?
Comcast Wi-Fi serving self-promotional ads via JavaScript injection
Erosion of the moral authority of transparent middleboxes
Transitioning The Web To HTTPS
将网站变成HTTPS支持的,已经有一系列帮助工具:
1. Let's Encrypt是一家免费的CA,同时设计了设置服务器证书的简单、开源协议https://letsencrypt.org/getting-started/, (SSLMate)提供相同的服务,但是收取一定费用。
2. CloudFlare (https://blog.cloudflare.com/introducing-universal-ssl/)提供服务,用户将服务部署在其上之后,直接提供HTTPS服务。