Tải bản đầy đủ (.pdf) (19 trang)

tìm hiểu kỹ thuật xây dựng extention cho trình duyệt web

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (4.28 MB, 19 trang )

<span class="text_page_counter">Trang 1</span><div class="page_container" data-page="1">

<b>ĐẠI HỌC BÁCH KHOA HÀ NỘI </b>

<b>TRƯỜNG CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG </b>

--- □ □ ---

<b>Báo Cáo Bài Tập Lớn</b>

<i><b> Đề</b></i>

<i><b> tài : Tìm hiểu kỹ thuật xây dựng EXTENTION cho</b></i>

<b>trình duyệt web</b>

<i><b> Học phần: Nhập môn an tồn & bảo mật thơng tin</b></i>

<b>Giảng viên: ThS. Đỗ Văn Uy</b>

Nhóm sinh viên thực hiện:

</div><span class="text_page_counter">Trang 2</span><div class="page_container" data-page="2">

<b>Mục Lục </b>

</div><span class="text_page_counter">Trang 3</span><div class="page_container" data-page="3">

<b>4.1Tổng quan về lỗ hổng trên trình duyệt...11</b>

<b>4.2Một số lỗ hổng bảo mật của Extension...12</b>

<i><b>5Kết luận và đánh giá các thành viên...18</b></i>

</div><span class="text_page_counter">Trang 4</span><div class="page_container" data-page="4">

<b>1 Giới thiệu</b>

Hiện nay, một nửa dân số nước ta sử dụng internet vào những công việc hàng ngày hoặctrong những lúc rảnh rỗi. Điều này chứng tỏ rằng công nghệ đang ngày càng đóng một vịtrí quan trọng hơn trong xã hội loài người. Lúc này số người am hiểu về các ứng dụngcũng như những lợi ích của công nghệ đang không ngừng tăng lên. Từ những nhu cầumới phát sinh, các dịch vụ thiết kế Website, thiết kế Extension,… được ra đời hàng loạt.Những dịch vụ này đã nhanh chóng trở thành những ngành “hot” trên thị trường hiện nay.Vậy vì sao doanh nghiệp, cá nhân cần phải thiết kế Extension cho riêng mình?Thứ nhất, khơng phải khi nào các Extension trên trình duyệt đều có thể đáp ứng được tốiđa nhu cầu của tất cả chúng ta. Các Extension trên những trình duyệt được tạo ra cho rấtrất nhiều người sử dụng. Vì thế, những tiện ích này chỉ nhắm vào nhu cầu cần thiết của đasố những người sử dụng có thể dùng. Vậy nếu chúng ta có những nhu cầu riêng thì phảilàm sao? Câu trả lời chính là tự tạo ra các Extension cho riêng mình. Chúng sẽ giúp chonhững ai sử dụng nó được hỗ trợ trực tiếp và tiết kiệm được tối đa nguồn nhân lực và thờigian.

Mỗi một lĩnh vực bạn sẽ cần đến một Extension riêng

Những lợi ích mà các Extension này mang lại cho chúng ta là vô cùng to lớn. Nó hồntồn có thể giúp bạn quản lý đơn hàng khi khách hàng đặt hàng tại website của mình, tạora fake IP để làm MMO, auto click cho các dự án auto IT,… Tùy vào mỗi nhu cầu mà bạncó thể tạo nên những Extension phù hợp.

Thứ hai, các Extension có sẵn trên trình duyệt sẽ tiềm ẩn những hiểm họa khôn lường.Khi chúng ta tải về một Extension nào đó trên các trình duyệt thì nguy cơ bị nhiễm mãđộc vào máy vi tính của mình là rất lớn. Những mã độc này có thể vơ hiệu hóa những tàiliệu bảo mật của chúng ta vì trước đó khi cài đặt vơ tình chúng ta đã cho nó quyền truycập. Điều này là vơ cùng nguy hiểm khi các mã độc (như WannaCry) có thể tấn công cáctài liệu bất cứ lúc nào. Khi một máy vi tính bị nhiễm mã độc thì vơ tình chiếc máy vi tínhnày sẽ làm cho mã độc bị phát tán một cách nhanh hơn.

</div><span class="text_page_counter">Trang 5</span><div class="page_container" data-page="5">

Hẳn là ai cũng hiểu, mã độc WannaCry ban đầu cũng chỉ nhiễm vào một máy vi tính màthơi. Sau một thời gian ngắn, ta đã có thể thấy được nó lan truyền nhanh chóng như thếnào rồi. Nó khơng chỉ lan ra các máy vi tính trong khn khổ của một quốc gia mà nó cóthể lây lan ra tồn cầu.

Vì vậy, việc tự xây dựng Extension cho trình duyệt web là vơ cùng quan trọng.

Mã độc tấn cơng máy tính của bạn âm thầm, lặng lẽ

</div><span class="text_page_counter">Trang 6</span><div class="page_container" data-page="6">

riêng biệt cho phép trình duyệt web nhận biết, truy xuất và hiển thị chúng trênthiết bị của người dung

<i><b>2.2 Browser hoạt động như thế nào?</b></i>

<b>-</b> Khi browser tìm nạp dữ liệu từ một máy chủ được kết nối internet, nó sẽ sửdụng một phần mềm được gọi là công cụ kết xuất để dịch dữ liệu đó thành vănbản và hình ảnh. Dữ liệu này được viết bằng Ngơn ngữ đánh dấu siêu văn bản(HTML) và các browser đọc mã này để tạo ra những gì chúng ta thấy, nghe vàtrải nghiệm trên internet.

<b>-</b> Chức năng chính của browser là hiển thị trang web, được yêu cầu từ người sửdụng đến Server, lên cửa sổ trình duyệt. Hình thức của web (resource format)chủ yếu được xây dựng dưới định dạng HTML, với các nguồn tài nguyên nhưpdf, <img> được định danh bằng một lien kết URI (Uniform ResourceIdentifier).

<b>-</b> Cấu trúc của browser gồm các phần:

o UI Front-end: giao diện người sử dụng, chính là cửa sổ trình duyệt vớicác thanh địa chỉ, các nút Back/Forward …

o Browser Engine: một giao diện (interface) để truy xuất và điều khiểnRendering Engine phía dưới.

o Rendering Engine: chịu trách nhiệm về việc hiển thị các nội dung đượcyêu cầu lên cửa sổ giao diện người sử dụng.

o Networking: bộ phận thực hiện tác vụ gửi các yêu cầu về mạng(network call), ví dụ như các gói HTTP Request.

o UI Back-end: hỗ trợ người sử dụng dùng các widget cơ bản như combobox ( một dạng drop-down box hoặc list box có kèm theo 1 khung cửasổ có thể edit text) và cửa sổ (windows).

o JavaScript Interpreter: dịch và thi hành các đoạn code JavaScript.

</div><span class="text_page_counter">Trang 7</span><div class="page_container" data-page="7">

o Data Storage/Web Database: nơi mà trình duyệt lưu trữ các dữ liệu cầnthiết lên ổ cứng của máy, ví dụ như Cookies.

<b>-</b> Trong số các phần trên, có thể nói Rendering Engine là phần quan trọng nhất, vìnó giúp chuyển đổi các đoạn code HTML và CSS sang dạng text hiển thị chouser.

<b>-</b> Đa số các thiết bị điện tử ngày nay đều có tốc độ làm mới (Refresh Rate) là 60fps, nghĩa là cứ 1 giây màn hình hiển thị lại được load lại 1 lần. Do vậy, để trảinghiệm người sử dụng – QoE (Quality of Experience) được tốt, các browserphải đảm bảo được một tốc độ render tương ứng. Trên thực tế, theo tính tốn,browser phải cố gắng hoàn thành được tác vụ render dưới 10ms để không gâyra giựt (gọi là jank).

</div><span class="text_page_counter">Trang 8</span><div class="page_container" data-page="8">

<b>3 Tìm hiểu về EXTENSION</b>

<i><b>3.1 Extension là gì?</b></i>

<b>-</b> Extension là các chương trình phần mềm nhỏ tùy chỉnh trải nghiệm duyệt web.Cho phép người dùng điều chỉnh chức năng và hành vi của trình duyệt theonhiều cách, cung cấp những thứ như:

o Công cụ tăng năng suất làm việco Làm phong phú nội dungo Tổng hợp thơng tino Giải trí và trị chơi

<b>-</b> Đây chỉ là một vài ví dụ về nhiều thứ mà tiện ích mở rộng có thể làm. Xem Cửahàng Chrome trực tuyến để xem hàng nghìn ví dụ khác nhau về các tiện ích mởrộng đã xuất bản.

<i><b>3.2 Extension hoạt động như thế nào</b></i>

CSS. Chúng chạy trong một môi trường thực thi riêng biệt và tương tác với trìnhduyệt Chrome.

- Các Extension cho phép bạn "mở rộng" trình duyệt bằng cách sử dụng các API đểsửa đổi hành vi của trình duyệt và truy cập nội dung web. Các tiện ích mở rộng hoạtđộng bằng giao diện người dùng người dùng cuối và API nhà phát triển:

- Giao diện người dùng tiện ích mở rộng Điều này cung cấp một cách nhất quán đểngười dùng quản lý tiện ích mở rộng của họ.

- API tiện ích mở rộng Các API tiện ích mở rộng cho phép mã của tiện ích mở rộngtruy cập vào các tính năng của chính trình duyệt: kích hoạt tab, sửa đổi u cầumạng, v.v.

- Để tạo tiện ích mở rộng, bạn tập hợp một số tài nguyên - tệp kê khai, tệp JavaScriptvà HTML, hình ảnh và những tài nguyên khác - tạo thành tiện ích mở rộng. Để pháttriển và thử nghiệm, bạn có thể tải các "giải nén" này vào Chrome bằng chế độ nhàphát triển tiện ích mở rộng. Khi bạn hài lịng với tiện ích mở rộng của mình, bạn cóthể đóng gói nó và phân phối nó cho người dùng.

</div><span class="text_page_counter">Trang 9</span><div class="page_container" data-page="9">

<i><b>3.3 Các thành phần chính</b></i>

- Về cơ bản, một Chrome Extension chủ yếu sẽ được viết bằng Javascript và HTML.Bạn có thể tổ chức các thư mục tùy ý sao cho phù hợp và tiện lợi nhất trong quátrình code

<b>a. File manifest</b>

- Mỗi một extension đều có một file manifest với định dạng json (manifest.json). Vớifile này bạn có thể cung cấp các thơng tin cần thiết về extension như: version, tên,icon, các quyền cần thiết,…

<b>d. Content script</b>

- Đầu tiên bạn cần biết content script có thể chạy trên trang web bạn đang xem nghĩalà bạn có thể thao tác với DOM, gọi các Web API, ... như các script thông thường tuynhiên content script chạy trên một môi trường độc lập với các script trên trang webchính, nghĩa là nếu bạn trên trang web của bạn có một thư viện JS như Jquery bạn sẽkhơng thể sử dụng nó trong content script.

"manifest_version":2 }

Bước 2:

Giờ với ví dụ Hello Extensions ở trên bạn hãy thêm đoạn code sau vào filemanifest.json:

"background": {

</div><span class="text_page_counter">Trang 10</span><div class="page_container" data-page="10">

"scripts": [“background.js”],

“persistent”: false}

Bạn hãy tạo thêm file background.js:

chrome.runtime.onInstalled.addListener(function() { alert('Hello Extensions');

</body></html>

Bước 4: Load lại extension:

</div><span class="text_page_counter">Trang 11</span><div class="page_container" data-page="11">

Vậy là mình có cái extension bấm vào thì sẽ hiện một video trên youtube từ đườngdẫn ở trên:

</div><span class="text_page_counter">Trang 12</span><div class="page_container" data-page="12">

<b>4 Lỗ hổng bảo mật</b>

<i><b>4.1 Tổng quan về lỗ hổng trên trình duyệt</b></i>

<b>-</b> Các chuyên gia của Awake Security cho biết đã phát hiện nhiều phần mềm giánđiệp qua 32 triệu lượt tải về của các tiện ích mở rộng dành cho trình duyệtGoogle Chrome . Đã có ít nhất 70 tiện ích độc hại đã bị xóa bỏ khỏi cửa hàngtrực tuyến của Google.

<b>-</b> Đây là điều đáng lo ngại bởi đây là một trong những trình duyệt được sử dụngnhiều nhất hiện nay với các hoạt động cho trao đổi thông tin, quản lý tài khoản,mua bán trực tuyến...

<b>-</b> Đối với những ai chưa biết, tiện ích mở rộng (Extension) là các tính năng bổsung mà người dùng có thể thêm vào trình duyệt của mình, ví dụ như các tínhnăng để chặn quảng cáo hoặc tăng cường bảo mật web.

<b>-</b> Phát ngôn viên của Google - Scott Westover cho biết: “Khi chúng tôi nhận đượccảnh báo về các tiện ích mở rộng trên cửa hàng trực tuyến vi phạm chính sáchcủa Google, chúng tơi đã hành động và sử dụng các sự cố đó làm tài liệu đàotạo để cải thiện việc phân tích tự động và thủ cơng”.

<b>-</b> Hầu hết các tiện ích độc hại đều đã được liệt kê để cảnh báo người dùng về cáctrang web nguy hiểm tiềm tàng hoặc chuyển đổi định dạng tệp. Những tiện íchnày được báo cáo là đã đánh cắp lịch sử và dữ liệu duyệt web của người dùng,trong đó có thể bao gồm cả thơng tin đăng nhập.

<b>-</b> Các tiện ích mở rộng đã được thiết kế có chủ đích để chúng khơng bị phát hiệnbởi phần mềm diệt virus hoặc bảo mật.

<b>-</b> Awake cũng nhận thấy rằng, các nhà phát triển đã gửi thông tin liên hệ sai khihọ gửi tiện ích mở rộng cho Google.

<b>-</b> Theo Engadget, báo cáo từ Duo Security dựa trên việc kiểm tra mức độ an toàncủa 180.000 ứng dụng và tiện ích mở rộng cho trình duyệt Chrome. 85% trongsố này khơng đi kèm chính sách bảo mật, nghĩa là các nhà phát triển về cơ bảncó thể xử lý dữ liệu của người dùng mà họ thu thập được theo ý muốn.

<b>-</b> Trong q trình xây dựng một cơng cụ miễn phí để phân tích các tiện ích mởrộng của Chrome, Duo đã đánh giá 120.000 ứng dụng và tiện ích mở rộng trongChrome Web Store. Cơng ty nhận thấy 35% trong số này có thể đọc dữ liệu trênbất kỳ trang web nào mà người dùng truy cập. Gần 32% sử dụng các thư việncủa bên thứ ba với nhiều lỗ hổng bảo mật và 77% khơng có trang web hỗ trợ.

quan tâm tới tình trạng trên. Hệ quả là tiện ích có thể bị một bên thứ ba mua lạihoặc hack bằng phần mềm độc hại. Tháng 10/2018, các nhà phát triển tiện íchmở rộng của Chrome là mục tiêu của một cuộc tấn công lừa đảo hàng loạt.

</div><span class="text_page_counter">Trang 13</span><div class="page_container" data-page="13">

Trong đó, tin tặc đã cố gắng truy cập thông tin đăng nhập cho tài khoản Googlecủa nhà phát triển.

Người dùng thường không chú ý tới các ứng dụng và tiện ích cài trên trình duyệt.Ảnh: Engadget

<b>-</b> Google đã thực hiện nhiều bước để cải thiện mức độ bảo mật của Chrome, chặnviệc cài đặt các tiện ích mở rộng bên ngồi Chrome Web Store, cũng như đặt ra các quy tắc nhằm cải thiện quyền riêng tư và bảo mật của người dùng. Tuy nhiên, dữ liệu từ Duo cho thấy Google còn rất nhiều việc phải làm. Người dùng được khuyên tránh sử dụng các tiện ích mở rộng trên Chrome khơng thuộc các đơn vị phát triển có tiếng, đặc biệt nên kiểm tra các chính sách bảo mật đi kèm trước khi cài đặt.

<b>-</b> Theo thống kê, ước tính có khoảng 85% ứng dụng và tiện ích trên Chrome có nguy cơ bảo mật. Điều này rấy lên một sự lo ngại cho người dùng bởi đa số những thông tin cá nhân cũng như thanh tốn online đều được thơng qua trình duyệt Web.

<i><b>4.2 Một số lỗ hổng bảo mật của Extension</b></i>

<b>a. Phát hiện lỗ hổng bảo mật nghiêm trọng trong tiện ích mở rộng LastPass trênChrome và Firefox</b>

</div><span class="text_page_counter">Trang 14</span><div class="page_container" data-page="14">

e. Chuyên gia bảo mật phát hiện đến 3 lỗ hổng bảo mật cực nghiêm trọng có trong tiệních mở rộng của dịch vụ lưu trữ mật khẩu phổ biến LastPass trên hai trình duyệt nổitiếng Chrome và Firefox.

f. Chuyên gia nghiên cứu bảo mật Tavis Ormandy từ nhóm Google Project Zero đãphát hiện ra một số vấn đề bảo mật nghiêm trọng trong dịch vụ quản lý mật khẩu nổitiếng LastPass. Năm nay, ơng tiếp tục tìm ra nhiều lỗ hổng mới từ ứng dụng này.g. Ormandy đã đề cập đến việc phát hiện một lỗ hổng bên trong tiện ích mở rộng trên

trình duyệt Firefox . Ngay sau đó, ơng tìm ra một lỗi ảnh hưởng cả hai trình duyệtChrome và Firefox . Cuối cùng, ơng phát hiện thêm một lỗ hổng bên thứ ba chophép hacker đánh cắp mật khẩu từ bất cứ tên miền nào.

h. Lỗ hổng đầu tiên chưa được công bố cụ thể, bởi theo Ormandy, Mozilla cần thờigian để kiểm tra lại lỗi và ra bản cập nhật vá lỗi trước khi tung ra cho người dùng.Theo chia sẻ của Ormandy trên Twitter, lỗ hổng này có thể tiết lộ mật khẩu củangười dùng, nhưng chưa thông báo cụ thể lỗi này có thể ảnh hưởng đến người dùngnhư thế nào.

ơng báo đã vá lỗi xong của LastPass

</div><span class="text_page_counter">Trang 15</span><div class="page_container" data-page="15">

j. Lỗ hổng thứ hai có vẻ nghiêm trọng hơn vì khả năng đánh cắp mật khẩu người dùngcủa nó, hoặc nếu người dùng cài đặt tiện ích mở rộng này thì ứng dụng sẽ khởi chạybất kỳ đoạn mã nào mà hacker yêu cầu. Theo phản hồi của LastPass thì lỗ hổng nàyđã được xử lý trong phiên bản cập nhật mới nhất. Để vá lỗ hổng này, người dùng nêncập nhật càng nhanh càng tốt.

Nội dung Twitter của Ormandy về lỗ hổng thứ hai

k. Lỗ hổng thứ ba mà Ormandy phát hiện có liên hệ đến phiên bản cũ của tiện ích này trên Firefox, nhưng may mắn là nhà cung cấp LastPass đã sửa thông qua bản cập nhật mới nhất. Hiện phiên bản mới nhất là phiên bản 3.3.6.

l. Đây không phải là lần đầu tiên LastPass gặp phải những vấn đề bảo mật nghiêm trọng như thế này. Trước đây, dịch vụ lưu trữ mật khẩu nổi tiếng này đã bị tấn công vào năm 2011 và tháng 6/2015.

m. Kaspersky Proguide khuyến cáo người dùng nên cập nhật phiên bản mới nhất của tiện ích mở rộng LastPass trên cả hai trình duyệt Chrome và Firefox để tiếp tục sử dụng. Nếu cảm thấy lo lắng về độ bảo mật của dịch vụ này trong tương lai, người

</div><span class="text_page_counter">Trang 16</span><div class="page_container" data-page="16">

dùng có thể cân nhắc vơ hiệu hóa tiện ích mở rộng của LastPass và thay thế bằng một dịch vụ tương tự của nhà cung cấp đáng tin cậy hơn.

o. Evernote là một dịch vụ phổ biến giúp mọi người ghi chú và sắp xếp danh sách côngviệc phải làm của họ và hơn 4.610.000 người dùng đã sử dụng Evernote Web Clipper Extension cho trình duyệt Chrome.

p. Được phát hiện bởi Guardio, lỗ hổng (CVE-2019-12592) nằm trong cách thức tiện ích mở rộng Evernote Web Clipper tương tác với các trang web, iframe và tiêm script, cuối cùng phá vỡ chính sách cùng nguồn gốc của trình duyệt (SOP) và cơ chế cách ly tên miền.

</div><span class="text_page_counter">Trang 17</span><div class="page_container" data-page="17">

q. Theo các nhà nghiên cứu, lỗ hổng này có thể cho phép một trang web do kẻ tấn cơngkiểm sốt thực thi mã tùy ý trên trình duyệt trong bối cảnh các tên miền khác thay mặt người dùng, dẫn đến sự cố Universal Cross-site Scripting (UXSS hoặc Universal XSS).

r. Các nhà nghiên cứu cho biết: “Một khai thác đầy đủ sẽ cho phép tải tập lệnh do hacker kiểm soát từ xa vào ngữ cảnh của các trang web khác có thể đạt được thơng qua một lệnh window.postMessage đơn giản. Bằng cách lạm dụng cơ sở hạ tầng intended injection của Evernote, tập lệnh độc hại sẽ được đưa vào tất cả các khung mục tiêu trong trang bất kể các ràng buộc về nguồn gốc chéo (cross-origin constraints).”

<b>c. Lỗ hổng nghiêm trọng trong tiện ích kiểm tra ngữ pháp cho phép tin tặc đánh cắpdữ liệu</b>

s. Một lỗ hổng nghiêm trọng được phát hiện trong tiện ích mở rộng Grammarly, có sẵn cho trình duyệt Chrome và Firefox, ảnh hưởng đến hơn 22 triệu người dùng. Điều này bao gồm tất cả các tài liệu và hồ sơ cá nhân. Tất cả điều này được tiếp xúc với tội phạm mạng từ xa. Nó là một trình kiểm tra chính tả hoạt động trên hai trong số các trình duyệt được sử dụng nhiều nhất.

t. Theo nhà nghiên cứu Tavis Ormandy thuộc nhóm Google Project Zero – người đã phát hiện lỗ hổng này vào ngày 02/02/2019, tiện ích mở rộng trên Chrome và Firefox của Grammarly để lộ token xác thực cho tất cả các website. Token xác thực này có thể bị tin tặc truy cập từ xa chỉ với 4 dịng lệnh JavaScript. Nói cách khác, bấtkỳ website nào mà người dùng Grammarly truy cập đều có thể đánh cắp token xác thực của người dùng, từ đó cho phép kẻ xấu đăng nhập vào tài khoản, truy cập mọi tài liệu, lịch sử, nhật ký sử dụng và các dữ liệu khác.

u. Ormandy cho rằng đây là lỗi cực kỳ nghiêm trọng, vì nó vi phạm nghiêm trọng đến người dùng. Người dùng sẽ không muốn khi ghé thăm một website sẽ cho phép trang đó truy cập mọi tài liệu và dữ liệu của họ trong các website khác. Ông cũng cung cấp một bản chứng minh khái niệm (PoC) của khai thác, cho thấy sự dễ dàng của việc lợi dụng lỗ hổng này chỉ với 4 dòng lệnh để đánh cắp token truy cập của người dùng Grammarly.

</div>

×