Hướng dẫn phân tích mẫu khai thác lỗ hổng Dump System App bằng việc load hình ảnh có kích thước lớn.
1.Giới thiệu lỗ hổng
Đây là một lỗ hổng nghiêm trọng, kẻ tấn công sẽ sử dụng 1 icon có kích thước rất lớn trong ứng dụng của mình (khoảng 3000x3000px) để tấn công vào lỗ hổng này. Rất đơn giản, bất cứ khi nào icon của ứng dụng được load lên RAM, nó sẽ gây crash, treo, giật thiết bị. Ở một số thiết bị chạy Andorid 2.3 -3.0 có thể bị lỗi hệ thống và không thể khởi động lại, hoặc uninstall ứng dụng đó được. Vậy cơ chế của cuộc tấn công này như thế nào?
Ở đây có 1 sự sai khác giữa kích thước bộ nhớ cho phép để khởi chạy ứng dụng và bộ nhớ mà ứng dụng yêu cầu. Chúng ta cùng phân tích sự chênh lệch này thông qua việc tìm hiểu cơ chế Android cấp phát bộ nhớ cho mỗi ứng dụng. Android quản lý bộ nhớ theo kiểu phân trang và sử dụng cơ chế ánh xạ bộ nhớ để quản lý chúng. Để duy trì môi trường multi-tasking Android thiết lập một giới hạn chính xác bộ nhớ Heap cấp phát cho mỗi ứng dụng. Giới hạn này thì phụ thuộc vào các thiết bị Android khác nhau vì tổng dung lượng RAM của mỗi thiết bị là khác nhau. Nếu ứng dụng nào yêu cầu lượng RAM nhiều hơn cho phép thì sẽ nhận được thông báo lỗi OutOfMemoryError và buộc phải dừng.
Chúng ta có thể kiểm tra lượng Heap cho phép mỗi ứng dụng sử dụng thông qua hàm maxMemory() hoặc lượng Heap nên sử dụng cho mỗi app thông qua hàm getMemoryClass(). (Sẽ Demo ở phần sau). Ở những phiên bản Android từ 4.0 trở đi thì giá trị trả về từ các hàm maxMemory() và getMemoryClass() là tương đương nhau. Đặc biệt, Android chỉ cho phép load ảnh, icon, background… có kích thước.
Đây là một lỗ hổng nghiêm trọng, kẻ tấn công sẽ sử dụng 1 icon có kích thước rất lớn trong ứng dụng của mình (khoảng 3000x3000px) để tấn công vào lỗ hổng này. Rất đơn giản, bất cứ khi nào icon của ứng dụng được load lên RAM, nó sẽ gây crash, treo, giật thiết bị. Ở một số thiết bị chạy Andorid 2.3 -3.0 có thể bị lỗi hệ thống và không thể khởi động lại, hoặc uninstall ứng dụng đó được. Vậy cơ chế của cuộc tấn công này như thế nào?
Ở đây có 1 sự sai khác giữa kích thước bộ nhớ cho phép để khởi chạy ứng dụng và bộ nhớ mà ứng dụng yêu cầu. Chúng ta cùng phân tích sự chênh lệch này thông qua việc tìm hiểu cơ chế Android cấp phát bộ nhớ cho mỗi ứng dụng. Android quản lý bộ nhớ theo kiểu phân trang và sử dụng cơ chế ánh xạ bộ nhớ để quản lý chúng. Để duy trì môi trường multi-tasking Android thiết lập một giới hạn chính xác bộ nhớ Heap cấp phát cho mỗi ứng dụng. Giới hạn này thì phụ thuộc vào các thiết bị Android khác nhau vì tổng dung lượng RAM của mỗi thiết bị là khác nhau. Nếu ứng dụng nào yêu cầu lượng RAM nhiều hơn cho phép thì sẽ nhận được thông báo lỗi OutOfMemoryError và buộc phải dừng.
Chúng ta có thể kiểm tra lượng Heap cho phép mỗi ứng dụng sử dụng thông qua hàm maxMemory() hoặc lượng Heap nên sử dụng cho mỗi app thông qua hàm getMemoryClass(). (Sẽ Demo ở phần sau). Ở những phiên bản Android từ 4.0 trở đi thì giá trị trả về từ các hàm maxMemory() và getMemoryClass() là tương đương nhau. Đặc biệt, Android chỉ cho phép load ảnh, icon, background… có kích thước.
Chỉnh sửa lần cuối bởi người điều hành: