Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 73 trang
THÔNG TIN TÀI LIỆU
Nội dung
Trường ĐH CNTT TP HCM Bảo mật web ứng dụng Nội dung • Mơ hình an tồn ứng dụng Android • Quyền hạn ứng dụng • Package Management Mơ hình an tồn Android Android Security Model ▪ Application Sandboxing ▪ Permission ▪ IPC (Inter-Process Communication) ▪ Code Signing & Platform Key Ứng dụng Android ▪ System app: ✓ Đi kèm với OS, đọc (read-only) thiết bị ✓ Nằm thư mục /system, khơng thể bị xóa hay chỉnh sửa người dùng ▪ User-installed app ✓ Nằm phân vùng read-write, thư mục /data ✓ Độc lập với Application Sandboxing ▪ Android gán UID (thường gọi app ID), thời điểm cài đặt ứng dụng ▪ Ứng dụng Android cô lập (isolated) mức: tiến trình (process) tập tin (file) ▪ Mỗi tiến trình ứng dụng Android thực thi user độc lập (với UID riêng biệt) ▪ Mỗi ứng dụng có thư mục mà có ứng dụng quyền đọc ghi (phân quyền dựa UID) ▪ Android khơng có file /etc/password, thơng tin UID định nghĩa tập tin android_filesystem_config.h https://android.googlesource.com/platform/system/core/+/master/libcutils/includ e/private/android_filesystem_config.h Application Sandboxing ▪ Các daemon hệ thống chạy ngầm ứng dụng gắn với UID, vài daemons chạy quyền root user (UID 0) ▪ UID dịch vụ hệ thống bắt đầu 1000 (AID_SYSTEM) ▪ UID ứng dụng có giá trị từ 10000 trở lên (AID_APP) ▪ Username app có quy tắc sau: ▪ app_XXX ▪ Hoặc uY_aXXX ▪ Trong đó, XXX offset tính từ AID_APP, Y Android user ID Application Sandboxing # pm list packages # dumpsys | grep -A18 "Package \[com.example.app1\]" Application Sandboxing ▪ Dữ liệu ứng dụng chứa thư mục /data/data single-user device ▪ Các ứng dụng tùy chỉnh tạo file với mong muốn cấp quyền truy cập cho ứng dụng khác cách sử dụng flag: ▪ MODE_WORLD_READABLE (ứng với bits giá trị S_IROTH tập tin) ▪ MODE_WORLD_WRITEABLE (ứng với bits giá trị S_IWOTH tập tin) Application Sandboxing • UID ứng dụng quản lý tập tin: • /data/system/packages.xml • /data/system/packages.list • Trong đó, giá trị trường sau: • Thứ 1: package name • Thứ 2: UID ứng dụng • Thứ 3: debug flag (1 debug) • Thứ 4: đường dẫn thư mục ứng dụng • Thứ 5: seinfo label (được sử dụng SELinux) • Thứ 6: Danh sách GID bổ sung mà app chạy Mỗi GID gắn với quyền (Android permission); GID tạo dựa quyền cấp cho ứng dụng Application Sandboxing • Các ứng dụng cài đặt cách sử dụng UID, gọi shared user ID → chạy tiến trình, chia sẻ liệu với • Để sử dụng UID, ứng dụng cần ký code signing key • Nếu thêm shared user ID vào app cài đặt → thay đổi UID app → hệ thống vơ hiệu hóa app → Do đó, ứng dụng cần thiết kế với shared ID từ đầu 10 Package Management • Java Code Signing (JAR file level) • Thêm signature file (.SF) chứa: - Dữ liệu ký - Chữ ký 62 Package Management • Java Code Signing (JAR file level) • Kiểm tra tập tin chữ ký JAR sử dụng chuẩn mã hóa cách sử dụng thư viện OpenSSL 63 Package Management • Java Code Signing (JAR file level) • Quá trình Ký lên tập tin JAR, sử dụng jarsigner: 64 Package Management • Java Code Signing (JAR file level) • Xem, trích xuất thơng tin người ký (Signer) 65 Package Management • Java Code Signing (JAR file level) • Sử dụng lệnh unzip với OpenSSL để trích xuất chứng ký lên file: 66 Package Management • Android Code Signing: dựa Java JAR signing • Sử dụng khóa cơng khai chứng X.509 • Chứng dùng Android tự ký (self-signed) • Các entry file APK phải ký signer (cùng certificate) thay số entry JAR signing khơng ký ký signer khác • Cơng cụ: signapk 67 Package Management: Cài đặt APK • Các thành phần package management 68 Package Management: Package Verification • Thơng báo cảnh báo xác nhận ứng dụng Android: 69 Package Management: Package Verification • Android hỗ trợ Package Verification: • PackageManagerService • Một ứng dụng tự đăng ký tính xác thực cách khai báo Broadcast Receiver có intent filter khớp với action PACKAGE_NEEDS_VERIFICATION MIME type tập tin APK (application/vnd.android.package-archive) 70 Package Management: Package Verification • Android hỗ trợ Package Verification: • Thêm quyền PACKAGE_VERIFICATION_AGENT ứng dụng khai báo làm verifier • Thêm thẻ vào file manifest liệt kê danh sách tên package khóa cơng khai verifier • PackageManagerService thực q trình xác thực có ứng dụng yêu cầu xác thực thiết lập Settings.Global.PACKAGE_VERIFIER_ENABLE true hệ thống 71 Package Management: Package Verification • Android hỗ trợ Package Verification: • APK thêm vào hàng đợi chờ cài đặt, sau truyền broadcast ACTION_PACKAGE_NEEDS_VERIFICATION tới verifier đăng ký • Broadcast chứa mã verification ID số thông tin meta-data package cần xác thực • Các agent xác thực gọi hàm verifyPendingInstall() với quyền hạn PACKAGE_VERIFICATION_AGENT để trả kết • Nếu xác thực thành cơng agent xác thực, trình cài đặt ứng dụng bắt đầu 72 Package Management: Package Verification • Google Play Implementation ✓ PackgeInstaller ✓ Hoặc adb install 73 Tài liệu tham khảo - Chương 1-2-3 Sách “Android Security Internals : An In-Depth Guide to Android's Security Architecture” Nikolay Elenkov No Starch Press 2015 - Sách “Application Security for the Android Platform: Processes, Permissions, and Other” Jeff Six 2011 74 Bài tập Chọn ứng dụng Android công ty phát triển, phân tích: - Các quyền hạn cấp ứng dụng, quyền hạn tùy chỉnh thành phần ứng dụng - Xem thông tin chữ ký file APK ứng dụng 75 Bảo mật web ứng dụng Trường ĐH CNTT TP HCM ...Nội dung • Mơ hình an tồn ứng dụng Android • Quyền hạn ứng dụng • Package Management Mơ hình an tồn Android Android Security Model ▪ Application Sandboxing ▪ Permission ▪ IPC (Inter-Process... ▪ Android khơng có file /etc/password, thơng tin UID định nghĩa tập tin android_ filesystem_config.h https:/ /android. googlesource.com/platform/system/core/+/master/libcutils/includ e/private /android_ filesystem_config.h... A) • Binder object hoạt động token bảo mật → hỗ trợ chế capability-based security model Android 19 IPC: Capability-based Security • Các ứng dụng cấp phép truy cập tới tài nguyên định cách cấp cho