NGHIÊN cứu, ĐÁNH GIÁ AN TOÀN THÔNG TIN mã NGUỒN hệ điều HÀNH ANDROID tùy BIẾN

93 201 6
NGHIÊN cứu, ĐÁNH GIÁ AN TOÀN THÔNG TIN mã NGUỒN hệ điều HÀNH ANDROID tùy BIẾN

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN  Lê Đức Thịnh NGHIÊN CỨU, ĐÁNH GIÁ AN TỒN THƠNG TIN MÃ NGUỒN HỆ ĐIỀU HÀNH ANDROID TÙY BIẾN LUẬN VĂN THẠC SĨ NGÀNH CÔNG NGHỆ THÔNG TIN Mã số: 60.48.02.01 NGƯỜI HƯỚNG DẪN KHOA HỌC: TS PHẠM VĂN HẬU TP HỒ CHÍ MINH - NĂM 2017 LỜI CẢM ƠN Để hoàn thành khóa luận tốt nghiệp này, dựa cố gắng tôi, thiếu hỗ trợ thầy cô, anh chị trường Đại học Công nghệ Thơng tin Tơi xin bày tỏ lòng biết ơn đến: Thầy cô trường ĐH Công Nghệ Thông Tin – ĐHQG TP HCM, đặc biệt thầy cô môn Khoa học Kỹ thuật Thông tin, khoa Mạng máy tính & Truyền Thơng trang bị kiến thức chun mơn tảng vững chắc, tận tình giúp đỡ tơi q trình làm việc, học tập nghiên cứu Đặc biệt xin gởi lời cảm ơn sâu sắc đến Tiến sĩ Phạm Văn Hậu, người Thầy tận tình giúp đỡ, hướng dẫn cho chúng tơi suốt trình thực đề tài Các anh, chị học viên lớp Cao học Công nghệ thông tin khố 09, trường Đại học Cơng nghệ thơng tin hỗ trợ, tạo điều kiện giúp đỡ lẫn trình học tập làm luận văn Đồng nghiệp, bạn bè, bạn sinh viên chia sẻ kinh nghiệm, kiến thức quí báu chia sẻ cơng việc giúp chúng tơi làm tốt cơng việc Đặc biệt tập thể Đồn Thanh Niên, Hội Sinh viên trường hỗ trợ công tác đơn vị giúp tơi có thời gian hồn thành nội dung khóa luận Vợ tơi, gia đình đồng hành, động viên, tạo điều kiện vật chất tinh thần cho học tập nghiên cứu Chúng xin chân thành cảm ơn kính gởi đến q thầy cơ, anh chị, bạn bè, gia đình lời chúc tốt đẹp, thành công công việc sống Tp Hồ Chí Minh, ngày 29 tháng 12 năm 2017 Tác giả luận văn Lê Đức Thịnh LỜI CAM ĐOAN Tôi, Lê Đức Thịnh, xác nhận nội dung báo cáo dựa tổng hợp lý thuyết, trình nghiên cứu tìm hiểu thực tế Mọi thơng tin trích dẫn thích liệt kê rõ ràng thành tài liệu tham khảo Tôi xác nhận đề tài nghiên cứu cơng trình hướng dẫn TS Phạm Văn Hậu giúp đỡ người khác ghi nhận báo cáo Tác giả luận văn Lê Đức Thịnh MỤC LỤC LỜI CẢM ƠN LỜI CAM ĐOAN MỤC LỤC DANH MỤC KÝ HIỆU VÀ CHỮ VIẾT TẮT DANH MỤC BẢNG DANH MỤC CÁC SƠ ĐỒ DANH MỤC HÌNH MỞ ĐẦU 10 CHƯƠNG - TỔNG QUAN 16 1.1 Tình hình nghiên cứu nước 16 1.2 Tình hình nghiên cứu nước ngồi 17 1.3 Kết luận 20 CHƯƠNG – HIỂU VỀ KIẾN TRÚC, MÃ NGUỒN ANDROID (AOSP) 21 2.1 Kiến trúc Android 21 2.2 Bảo mật Android 24 2.3 Bảo mật kernel 26 2.4 Các lời gọi hệ thống (System calls) 26 2.5 Tương tác với mã nguồn Android (AOSP) 27 2.6 Hiểu cấu trúc mã nguồn Android 31 2.7 Hiểu cấu trúc kernel Android 38 2.8 Kết luận 43 CHƯƠNG – CÁC PHƯƠNG PHÁP SO SÁNH MÃ NGUỒN 44 3.1 Các công cụ thương mại 44 Công cụ Code Compare - File and Folder Merge Tool: https://www.devart.com/codecompare/ 44 Công cụ Beyond Compare: https://www.scootersoftware.com/ 47 3.2 Các cơng cụ mã nguồn mở, miễn phí 50 GNU Diffutils: https://www.gnu.org/software/diffutils/ 50 KDiff3: http://kdiff3.sourceforge.net/ 52 3.3 Kết luận 57 CHƯƠNG – CÁC KỊCH BẢN CHỈNH SỬA MÃ NGUỒN AOSP CHO VIỆC THỬ NGHIỆM PHƯƠNG PHÁP ĐÁNH GIÁ 58 4.1 Tổng quan 58 4.2 Chỉnh sửa Activity 59 Kịch 1: chỉnh sửa Activity lấy IMEI điện thoại gởi qua SMS 61 4.3 Chỉnh sửa Services 62 Kịch 2: Lấy thông tin vị trí gởi qua sms từ Services 64 4.4 Kết luận 65 CHƯƠNG – ĐỀ XUẤT PHƯƠNG PHÁP ĐÁNH GIÁ MÃ NGUỒN ANDROID DỰA TRÊN PHÂN TÍCH TĨNH 66 5.1 Tập liệu sử dụng phương pháp phân tích tĩnh Android 66 5.2 Hướng tiếp cận phạm vi 68 5.3 Phương pháp đề xuất 69 Module General 71 Module Compare 72 5.3.2.1 Thử nghiệm Beyond Compare 73 5.3.2.2 Thử nghiệm diffutils (thử nghiệm linux) 76 Module Analysis 78 5.4 Cài đặt thử nghiệm 82 Cài đặt mơi trường thiết lập cấu hình 82 Thử nghiệm kịch (được trình 4.2.1) 83 Thử nghiệm kịch (được trình bày 4.2.1 4.3.1) 85 5.5 Kết luận 87 CHƯƠNG – KẾT LUẬN, KHUYẾN NGHỊ VÀ HƯỚNG PHÁT TRIỂN 88 6.1 Kết luận 88 6.2 Hướng phát triển 89 TÀI LIỆU THAM KHẢO 90 DANH MỤC KÝ HIỆU VÀ CHỮ VIẾT TẮT Chữ viết tắt AOSP Kernel SuSi Source Sink System Call CFG ICC IAC Nội dung chi tiết Android Open Source Project Hạt nhân (Android) Source – Sink Nơi chương trình đọc liệu Nơi chương trình gởi liệu đến Lời gọi hệ thống Control Flow Graph Inter-Component Communication Inter-App Communication DANH MỤC BẢNG Bảng 1: Thị phần tảng di động đến quý 1/2017 10 Bảng 2: Các thành phần AOSP 35 Bảng 3: Bảng chi tiết frameworks/base 38 Bảng 4: Các thành phần kernel Android Goldfish 3.18 42 Bảng 5: Bảng tóm tắt cơng cụ so sánh mã nguồn 57 Bảng 6: Phân nhóm Source Sink [10] 68 DANH MỤC CÁC SƠ ĐỒ Sơ đồ 1: Android System Services Pattern 63 Sơ đồ 2: Lớp service frameworks/base 64 Sơ đồ 3: Sơ đồ tổng quan giải pháp đánh giá mã nguồn Android 70 Sơ đồ 4: Sơ đồ hoạt động của module Compare 72 Sơ đồ 5: Sơ đồ hoạt động module Analysis 79 Sơ đồ 6: Sơ đồ kỹ thuật phân tích luồng liệu nhạy cảm 81 DANH MỤC HÌNH Hình 1: Phân phối firmware Android độc hại 19 Hình 2: Kiến trúc Android [23] 22 Hình 3: Điểm khác biệt Linux truyền thống Android [25] 27 Hình 4: Cấu trúc thư mục mã nguồn nguồn AOSP 30 Hình 5: Cấu trúc thư mục kernel Android goldfish-3.18 31 Hình 6: Kiến trúc Android ánh xạ với AOSP [26] 36 Hình 7: Cấu trúc kernel Android Goldfish 3.18 39 Hình 8: Kết so sánh thư mục với công cụ Code Compare (theo thứ tự từ xuống tập tin bị chỉnh sửa, thêm mới, bị xóa đi) 46 Hình 9: Kết so sánh file với Code Compare 47 Hình 10: So sánh thư mục với Beyond Compare 48 Hình 11: So sánh tập tin với Beyond Compare 48 Hình 12: Xuất báo cáo so sánh với Beyond Compare 49 Hình 13: Hướng dẫn sử dụng cơng cụ diff 50 Hình 14: Kết so sánh tập tin với công cụ diff 52 Hình 15: Giao diện cơng cụ Kdiff3 53 Hình 16: Kết tổng quát so sánh mã nguồn thư mục frameworks với Kdiff3 54 Hình 17: Kết chi tiết so sánh mã nguồn thư mục frameworks với Kdiff3 55 Hình 18: Các thành phần ứng dụng Android 59 Hình 19: Vòng đời Activity 60 Hình 20: Cơ chế hoạt động SuSi 67 Hình 21: So sánh thư mục Beyond Compare 73 Hình 22: Tóm tắt thơng tin báo cáo so sánh Beyond Compare 74 Hình 23: Xuất báo cáo Beyond Compare 75 Hình 24: Định dạng báo cáo kết so sánh Beyond Compare 76 Hình 25: Script thực thi diffutils 76 Hình 26: Thời gian thực so sánh cơng cụ diffutils 77 Hình 27: Định dạng báo cáo công cụ diffutils 77 Hình 28: Cấu trúc công cụ đánh giá đề xuất 82 bước này, có danh sách tập tin khác biệt B so với A (bị chỉnh sửa, thêm mới, bị xóa đi) Bước tiếp theo, tập tin tiến hành lọc danh sách hàm từ tập tin bị chỉnh sửa, thêm bước tiến hành so sánh hàm với hàm tương ứng trong A (xem hàm chuỗi khơng có khoảng trắng so sánh chuỗi) Chỉ thực so sánh hàm tập tin khác biệt, tập tin thêm lọc hàm đưa vào danh sách hàm mà không so sánh Kết thúc bước này, có danh sách hàm khác biệt (chỉnh sửa so với hàm gốc danh sách hàm mới) Điểm đặc biệt quan trọng bước tập tin mã nguồn, phải giữ lại thư viện import đầu tập tin lớp (class) chứa hàm khác biệt, điều kiện quan trọng để tiến hành phân tích bước Module Analysis Theo [10], q trình phân tích hàm có ngữ cảnh mà cần phải quan tâm: - Hàm khác biệt hàm không chứa tham số, nghĩa khơng nhận tham số nào, ngồi biến toàn cục từ bên Như source hàm khác biệt thường tự sinh nên ta cần thực phân tích bên hàm Trước mắt tập trung thực ngữ cảnh - Hàm khác biệt hàm có tham số, nghĩa lúc hàm nhận tham số từ bên ngồi, tham số trở thành source q trình phân tích nên ta cần thực phân tích hàm sử dụng lại hàm khác biệt Phần trình bày phần mở rộng đề tài 78 Quá trình thực tóm tắt qua mơ hình sau: DANH SÁCH CÁC HÀM KHÁC BIỆT TÌM TRONG TẬP DỮ LIỆU SuSi DANH SÁCH CÁC HÀM KHÁC BIỆT ĐƯỢC ĐÁNH DẤU SOURCE - SINK PHÂN TÍCH LUỒNG SOURCE – SINK (INFORMATION FLOW) LUỒNG DỮ LIỆU NHẠY CẢM Sơ đồ 5: Sơ đồ hoạt động module Analysis Kết sau chạy module Compare đưa vào module Analysis nhằm xác định điểm source sink phần mã nguồn khác biệt (danh sách hàm khác biệt) tìm kiếm xem có tồn mối liên hệ điểm hay khơng Bởi có luồng liệu từ source đến sink thật tạo nguy hiểm Trường hợp giả sử có nhiều điểm source mã nguồn khác biệt mà khơng có điểm sink khơng thật gây nguy hiểm ngược lại Tập liệu điểm source – sink, sử dụng tập liệu từ cơng trình nghiên cứu trình bày mục 5.1 Ở đây, thao tác tập tin mã nguồn Java, mã nguồn khác bổ sung phần mở rộng đề tài Để thuận tiện việc tìm kiếm chúng tơi chỉnh sửa tập tin này, trích tên hàm đưa vị trí dòng 79 Trong tập liệu source, sink hàm xuất nhiều lần gọi lớp khác gây khó khăn trình tìm kiếm hàm Do đó, bước trước tìm kiếm có tồn tài điểm source, sink ta cần thay tên lớp thành tên đầy đủ (full name) dựa thư viện import đầu tập tin mã nguồn cần phân tích để trình tìm kiếm xác định hàm thực thi mã nguồn Chẳng hạn, TelephonyManager telephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE) Được thay bằng: android.telephony.TelephonyManager telephonyManager = (android.telephony.TelephonyManager) getSystemService(android.content.Context.TELEPHONY_SERVICE) Sau bước này, dựa tập tin liệu source, sink để tìm kiếm mã nguồn trích xuất thành hai mảng mảng source mảng sink Tiếp theo, ta xét mảng sink có liệu (có hàm sink tồn mã nguồn) từ mảng chứa hàm source ta trích xuất (theo vết) biến gán giá trị hàm source có xuất tham số truyền vào hàm sink hay khơng Nếu có tồn ghi nhận luồng Như vậy, có tồn luồng thơng tin từ source đến sink có xảy rò rỉ thơng tin Kỹ thuật phân tích tìm luồng Source – Sink thể qua sơ đồ sau: 80 START MAKE FULL CLASS NAME Search in data set SuSi Yes FIND SOURCE SINK No CHECK SINK Yes No FIND FLOWS SOURCE - SINK No ALERT STOP Sơ đồ 6: Sơ đồ kỹ thuật phân tích luồng liệu nhạy cảm Dựa kết module này, có tồn luồng source – sink cảnh báo mã nguồn có khả xảy rò rỉ liệu người dùng 81 Yes 5.4 Cài đặt thử nghiệm Cài đặt môi trường thiết lập cấu hình Cơng cụ xây dựng ngơn ngữ Python phiên 2.7  Cài đặt Linux: thông thường, cài đặt Ubuntu có cài sẵn Python 2.7, trường hợp chưa cài đặt cài đặt lệnh sau: apt-get install python Hoặc: - Truy cập trang http://www.python.org/download/ chọn mục Unix/Linux - Tải gói source cho Unix/Linux - Tải giải nén: tar xvzf - Vào thư mục vừa giải nén - Thực thi đoạn script /configure - Thực cài đặt: make && make install  Cài đặt Windows: truy cập vào https://www.python.org/ftp/python/2.7.14/python-2.7.14.msi tải cài đặt cài đặt phần mềm Windows  Thử nghiệm áp dụng frameworks/base AOSP  Trong thử nghiệm này, tạm gọi mã nguồn gốc Google (mã nguồn chuẩn, an toàn) A, mã nguồn chỉnh sửa để tạo phiên khơng an tồn B để để tiến hành so sánh tiện theo dõi Mã nguồn chỉnh sửa trình bày chương  Cơng cụ cài đặt thành mudule chứa thư mục theo cấu trúc sau, tính thư mục theo tính module trình bày phần 5.3 Hình 28: Cấu trúc cơng cụ đánh giá đề xuất Thư mục Output chứa tập tin hàm khác biệt sau thực xong 82 module Comparison Các tập tin rút trích từ tập tin mã nguồn tương ứng Các tập tin thư mục liệu đầu vào cho module Analysis để tiến hành phân tích luồng Tập tin AndroidAnalysis.py tập tin tổng hợp module Do đó, để chạy cơng cụ cần thực thi tập tin cơng cụ tự động thực Tập tin result.txt tập tin chứa kết sau chạy công cụ Để chạy công cụ, cần thiết lập đường dẫn phù hợp hàm main() tập tin AndroidAnalysis.py, đường dẫn cần cung cấp xác gồm: - Đường dẫn đến thư mục mã nguồn gốc (A) - Đường dẫn đến thư mục mã nguồn chỉnh sửa (B) - Đường dẫn đến tập tin báo cáo xuất từ công cụ Beyond Compare  Cách thức thực thi công cụ: - Linux: di chuyển đến thư mục gốc công cụ, thực lệnh python AndroidAnalysis.py - Windows: mở cmd thực lệnh AndroidAnalysis.py Chẳng hạn: C:\Python27\python.exe AndroidAnalysis.py - Chạy trực tiếp IDE python, sử dụng PyCharm Thử nghiệm kịch (được trình 4.2.1) Trước bắt đầu chạy công cụ Beyond Compare với thư mục A B theo hướng dẫn 4.3.2.1 Xuất kết báo cáo beyond_report_test1.txt lưu vào thư mục 2.Comparison công cụ Kiểm tra lại đường dẫn biến beyond_report hàm main() Tiến hành thực thi tập tin AndroidAnalysis.py ta kết sau: 83 C:\Python27\python.exe "G:/Box Sync/GitHub/AndroidAnalysis/AndroidAnalysis.py" Starting Proccessing General Module Proccessing the folder A Proccessing the folder B RESULT GENERAL MODULE: The folder A has 30765 size is (1246670952.0, The folder B has 30766 size is (1239396569.0, files, 569,132 folders and 'bytes') files, 569,079 folders and 'bytes') IN SOURCE B (Custom Source) - Number of different files: H:\framework\base\core\java\android\app\Activity.java - Number of new files: H:\framework\base\core\java\android\app\ActivityCopy.java - Number of deleted files: H:\frameworks\base\api\current.txt H:\frameworks\base\api\removed.txt H:\frameworks\base\api\system-current.txt H:\frameworks\base\api\system-removed.txt ========================================= Proccessing Compare Module H:\framework\base\core\java\android\app\Activity.java - Tong so ham: 284 - So ham giong nhau: 283 - So ham khac nhau: ========================================= Proccessing Flows Module ///Have Flow/// SOURCE: UNIQUE_IDENTIFIER |android.telephony.TelephonyManager telephonyManager =(android.telephony.TelephonyManager) getSystemService(android.content.Context.TELEPHONY_SE RVICE)~source |String strImei =telephonyManager.getDeviceId()~source SINK: NO_CATEGORY |android.content.Intent it =new android.content.Intent(android.content.Intent.ACTION_ SENDTO, uri)~sink |it.putExtra("Imei", strImei)~sink 84 |startActivity(it)~sink ========================== Done! ========================================= Excution time: 0.200883336862 minutes Process finished with exit code Kết cho ta thấy, sau 0.2 phút công cụ phát điểm thay đổi mã nguồn chỉnh sửa mã nguồn ban đầu Liệt kê rõ ràng tập tin/thư mục bị xóa, bị chỉnh sửa, thêm Công cụ phát luồng thông tin từ SOURCE: UNIQUE_IDENTIFIER đến SINK: NO_CATEGORY từ phần code thêm vào, việc thay đổi biến, gọi đối tượng luồng ghi nhận, lần thay đổi, gọi phân biệt dấu “|” Thử nghiệm kịch (được trình bày 4.2.1 4.3.1) Ở thử nghiệm này, thực bổ sung thêm kịch thứ vào kịch để kiểm tra kết Tương tự thử nghiệm kịch 1, ta tiến hành chạy Beyond Compare xuất kết báo cáo beyond_report_test2.txt lưu vào thư mục 2.Comparison công cụ Kiểm tra lại đường dẫn biến beyond_report hàm main() Thực thi tập tin AndroidAnalysis.py, ta kết sau: C:\Python27\python.exe G:/Box Sync /GitHub/AndroidAnalysis/AndroidAnalysis.py Starting Proccessing General Module Proccessing the folder A Proccessing the folder B RESULT GENERAL MODULE: The folder A has 30765 size is (1246670952.0, The folder B has 30766 size is (1239396569.0, files, 569,132 folders and 'bytes') files, 569,079 folders and 'bytes') IN SOURCE B (Custom Source) - Number of different files: H:\framework\base\core\java\android\app\Activity.java 85 H:\framework\base\services\java\com\android\server\Sy stemServer.java - Number of new files: H:\framework\base\core\java\android\app\ActivityCopy.java - Number of deleted files: H:\frameworks\base\api\current.txt H:\frameworks\base\api\removed.txt H:\frameworks\base\api\system-current.txt H:\frameworks\base\api\system-removed.txt ========================================= Proccessing Compare Module H:\framework\base\core\java\android\app\Activity.java - Tong so ham: 284 - So ham giong nhau: 283 - So ham khac nhau: H:\framework\base\services\java\com\android\server\Sy stemServer.java - Tong so ham: 15 - So ham giong nhau: 10 - So ham khac nhau: ========================================= Proccessing Flows Module ///Have Flow/// SOURCE: UNIQUE_IDENTIFIER |android.telephony.TelephonyManager telephonyManager =(android.telephony.TelephonyManager) getSystemService(android.content.Context.TELEPHONY_SE RVICE)~source |String strImei =telephonyManager.getDeviceId()~source SINK: NO_CATEGORY |android.content.Intent it =new android.content.Intent(android.content.Intent.ACTION_ SENDTO, uri)~sink |it.putExtra("Imei", strImei)~sink |startActivity(it)~sink ========================== ///Have Flow/// SOURCE: LOCATION_INFORMATION |android.location.Location mLocation =mLocationManager.getLastKnownLocation(android.locati on.LocationManager.GPS_PROVIDER)~source 86 |String latlon ="Lat: " + Double.toString(mLocation.getLongitude()) + "Lon: " + Double.toString(mLocation.getLatitude())~source SINK: SMS_MMS |mSmsManager.sendTextMessage("+84987654321", null, latlon, null, null)~sink ========================== Done! ========================================= Excution time: 0.243766669432 minutes Process finished with exit code Sau 0.24 phút thực hiện, kết cho thấy công cụ phát tập tin mà chỉnh sửa mã nguồn tập tin Activity.java có hàm khác biệt SystemServer.java có hàm khác biệt Cơng cụ phát luồng thông tin Source – Sink, luồng kịch (đã trình bày phần 5.4.2), luồng kịch SOURCE: LOCATION_INFORMATION đến SINK: SMS_MMS từ phần code thêm vào, với ý định chỉnh sửa mã nguồn ban đầu 5.5 Kết luận Ở chương này, đề xuất phương pháp đánh giá an toàn cho mã nguồn hệ điều hành Android bước tiếp cận mã nguồn Java lớp frameworks Phương pháp trình bày chi tiết mặt ý tưởng thực đến việc cài đặt thử nghiệm bước cho kết tốt Phương pháp đề xuất kết hợp việc phân tích cấu trúc, chức thành phần mã nguồn AOSP để chọn lọc thành phần cốt lõi mã nguồn, với công cụ có sẵn để lọc liệu đầu vào cho tốn (Beyond Compare) cơng cụ chúng tơi phát triển tìm hàm khác biệt để phân tích tìm luồng liệu nhạy cảm Kết thử nghiệm với kịch cho thấy tốc độ xử lý đáng thuyết phục, cho kết tiền xử lý liệu đầu vào 1.16 GB mã nguồn phút Phương pháp tiền đề để mở rộng cho việc đánh giá toàn mã nguồn AOSP 87 CHƯƠNG – KẾT LUẬN, KHUYẾN NGHỊ VÀ HƯỚNG PHÁT TRIỂN 6.1 Kết luận Qua tháng nghiên cứu, thu kết sau: Tìm hiểu kỹ thuật phân tích tĩnh, phân tích động, cơng trình áp dụng kỹ thuật tình hình nghiên cứu Tương tác với mã nguồn Android download, build, chạy máy ảo Android Phân tích hiểu cấu trúc mã nguồn hệ điều hành Android (AOSP), bảo mật Android, từ đánh giá thành phần quan trọng, từ đó, xác định mức độ quan trọng thành phần nói đến an tồn thơng tin người dùng Đây điều quan trọng giúp ta tinh giảm liệu đầu vào tốn, khơng có bước ta phải dùng thuật tốn vét cạn toàn mã nguồn tốn thời gian tài nguyên để thực Từ việc hiểu cấu trúc mã nguồn, chỉnh sửa mã nguồn để tạo mã nguồn làm đối tượng để nghiên cứu, so sánh, nhằm xác định trước kết toán đề xuất, sau thực toán so lại với kết nhằm đánh độ xác phương pháp đề xuất Tìm hiểu số cơng cụ so sánh mã nguồn từ thương mại, miễn phí đến mã nguồn mở Chúng lựa chọn công cụ Beyond Compare Điều này, giúp lọc bớt thơng tin khơng cần thiết q trình phân tích Như thế, liệu đầu vào ngày thu hẹp với thời gian thực ngắn Xây dựng công cụ giúp cho việc so sánh, tìm kiếm điểm khác biệt mã nguồn, phân tích luồng thơng tin nhạy cảm (source – sink) điểm khác biệt đó, ghi nhận luồng thơng tin này, có luồng thơng tin source – sink tồn mã nguồn tính an tồn thơng tin bị vi phạm 88 6.2 Hướng phát triển Trong tương lai, nghiên cứu, cập nhật tính sau để hồn thiện cơng cụ đánh giá này: Xây dựng trích xuất so sánh hàm ngôn ngữ C, C++ Xác định độ nguy hiểm tập tin cấu hình, tập tin khác (không phải tập tin code) Áp dụng đến tầng bên của kiến trúc Android, theo dõi luồng liệu, lời gọi hàm từ framework đến kernel Cải tiến trình tìm kiếm luồng kỹ thuật xây dựng đồ thị lời gọi hàm – Control Flow Graph (CFG) Áp dụng để đánh giá mã nguồn Android mà trước kịch 89 TÀI LIỆU THAM KHẢO [1] Sven Bugiel., et al (2012), “Towards Taming Privilege-Escalation Attacks on Android” [2] Long Lu, et al (2012), “CHEX: Statically vetting Android apps for component hijacking vulnerabilities”, The 2012 ACM conference on Computer and communications security, New York, NY, USA p 229-240 [3] Steven Arzt, S.R., et al (2014), “FlowDroid: Precise Context, Flow, Field, Object-sensitive and Lifecycle-aware Taint Analysis for Android Apps” [4] Damien Octeau, et al (2013), “Effective inter-component communication mapping in android with Epicc: An essential step towards holistic security analysis”, IEEE 13th International Conference on Trust, Security and Privacy in Computing and Communications, IEEE, Beijing p 388-397 [5] Fengguo Wei, et al (2014), “Amandroid: A Precise and General Intercomponent Data Flow Analysis Framework for Security Vetting of Android Apps”, The 2014 ACM SIGSAC Conference on Computer and Communications Security, New York, NY, USA p 1329-1341 [6] Zhemin Yang, Min Yang (2012), “LeakMiner: Detect Information Leakage on Android with Static Taint Analysis”, Software Engineering (WCSE), 2012 Third World Congress on, IEEE, Wuhan p 101 - 104 [7] Min Zheng, Mingshen Sun, John C.S Lui (2014), “DroidRay: A Security Evaluation System for Customized Android Firmwares” ASIA CCS’14, p 1-12 [8] Tao Liu, Ralf Huuck (2015), “Case Study: Static Security Analysis of the Android Goldfish Kernel”, Vol.9109, p 589-592 [9] Tô Ứng Vũ, Phạm Văn Hậu (2017), “Nghiên cứu, đề xuất phương pháp đánh giá tính bảo mật kernel Android dựa phương pháp phân tích tĩnh”, Đại học Cơng nghệ Thông tin - ĐHQG-HCM [10] Huỳnh Ngọc Tịnh, Nguyễn Thanh Truyền, Phạm Văn Hậu (2017), “Phát triển công cụ tự động so sánh đánh giá an tồn thơng tin Android application framework”, Đại học Công nghệ Thông tin - ĐHQG-HCM 90 [11] Nguyễn Lê Thanh Trúc, Phạm Văn Hậu (2012), “Detecting privilege escalation attacks on android device”, Đại học Quốc tế [12] Nguyễn Quốc Kiện, Trần Quang Duy, Phạm Văn Hậu (2016), “Security assessment of android application basing on CFG analysis”, Đại học Công nghệ Thông tin [13] Lý Hoàng Tuấn, Phạm Văn Hậu (2016), “Nghiên cứu chế phát rõ rĩ thông tin phương pháp kết hợp phân tích tĩnh động Adriod”, Đại học Công nghệ Thông tin - ĐHQG-HCM [14] William Klieber, et al (2014), “Android Taint Flow Analysis for App Sets” [15] Cong Zheng, et al (2012), “SmartDroid: an Automatic System for Revealing UIbased Trigger Conditions in Android Applications” [16] Mobile Security Wiki (Nov 2017), https://mobilesecuritywiki.com/ [17] Zeineb Zhioua, Stuart Short, Yves Roudier (2014), “Static Code Analysis for Software Security Verification: Problems and Approaches”, Computer Software and Applications Conference Workshops (COMPSACW), IEEE 38th International, IEEE, Vasteras, p 102 - 109 [18] Wikipedia, List of tools for static code analysis (Nov 2017), https://en.wikipedia.org/wiki/List_of_tools_for_static_code_analysis [19] Collin McMillan, Mark Grechanik, Denys Poshyvanyk (2012), “Detecting Similar Software Applications”, ICSE, p 364-374 [20] 25+ Useful Document and File Comparison Tools (Aug.2011), http://www.noupe.com/business-online/25-useful-document-and-filecomparison-tools.html [21] Wikipedia, Comparison of file comparison tools (Aug 2016), https://en.wikipedia.org/wiki/Comparison_of_file_comparison_tools#Compare _features [22] Sreeja Nair, et al (2015), “A static code analysis tool for control system software”, 2015 IEEE 22nd International Conference on Software Analysis, Evolution, and Reengineering (SANER), IEEE, Montreal, QC p 459 - 463 [23] Google Android Open Source Project (Nov 2017), https://source.android.com 91 [24] Ivan Morgillo, Stefano Viola (2016), “Learning Embedded Android N Programming”, Livery Place, 35 Livery Street Birmingham B3 2PB, UK, Packt Publishing Ltd 282 [25] Hadeel Tariq Al-Rayes (2012), “Studying Main Differences between Android & Linux Operating Systems”, International Journal of Electrical & Computer Sciences IJECS-IJENS Vol.12 [26] Karim Yaghmour (2013), “Embedded Android”, United States of America: O’Reilly Media, Inc., 1005 Gravenstein Highway North, Sebastopol, CA 95472 412 [27] David MacKenzie, P.E., Richard Stallman (2017), “Comparing and Merging Files for Diffutils 3.6 and patch 2.5.4” [28] Instruments, T Android-Adding SystemService (Nov http://processors.wiki.ti.com/index.php/Android-Adding_SystemService 92 2017), ... mềm, mã nguồn hệ điều hành, từ đề xuất phương pháp tổng quan bước đầu để đánh giá an toàn mã nguồn hệ điều hành Android tùy biến, trọng đến việc thất thơng tin Đối tượng: mã nguồn hệ điều hành Android, ... xuất để đánh giá điểm quan trọng mã nguồn Android, trình bày kiến trúc Android mã nguồn Android, chế bảo mật sử dụng Android, bảo mật mã nguồn AOSP, cách tương tác với mã nguồn AOSP, mã nguồn kernel... đoạn mã độc nằm tập tin mã nguồn Bước mở rộng đề tài tiếp tục phát triển dành cho nghiên cứu tương lai đánh giá an tồn tồn ngơn ngữ, đánh giá đoạn mã nằm nhiều tập tin mã nguồn hệ điều hành Android,

Ngày đăng: 23/12/2018, 06:14

Từ khóa liên quan

Mục lục

  • LỜI CẢM ƠN

  • LỜI CAM ĐOAN

  • MỤC LỤC

  • DANH MỤC KÝ HIỆU VÀ CHỮ VIẾT TẮT

  • DANH MỤC BẢNG

  • DANH MỤC CÁC SƠ ĐỒ

  • DANH MỤC HÌNH

  • MỞ ĐẦU

  • CHƯƠNG 1 - TỔNG QUAN

    • 1.1 Tình hình nghiên cứu trong nước

    • 1.2 Tình hình nghiên cứu ở nước ngoài

    • 1.3 Kết luận

    • CHƯƠNG 2 – HIỂU VỀ KIẾN TRÚC, MÃ NGUỒN ANDROID (AOSP)

    • 2

      • 2.1 Kiến trúc Android

      • 2.2 Bảo mật Android6F

      • 2.3 Bảo mật kernel7F

      • 2.4 Các lời gọi hệ thống (System calls)

      • 2.5 Tương tác với mã nguồn Android (AOSP)

      • 2.6 Hiểu về cấu trúc cơ bản mã nguồn Android

      • 2.7 Hiểu về cấu trúc cơ bản kernel Android

      • 2.8 Kết luận

Tài liệu cùng người dùng

Tài liệu liên quan