Đầu tuần này, công cụ jailbreak iOS 6 mang tên evasi0n đã chính thức trình làng. Nó cũng là bản jailbreak đầu tiên có thể sử dụng với iPhone 5, iPad 3/4, iPad mini. Trong 6 giờ đầu tiên kể từ thời điểm bắt đầu cho tải về, quản trị của Cydia cho biết evasi0n đã được sử dụng ít nhất là 800.000 lần và nó khiến cho máy chủ của Cydia bị tê liệt ở một số thời điểm. Sang đến thứ Ba, con số này đã đạt 1,7 triệu. Và để giúp chúng ta tìm hiểu xem evasi0n hoạt động như thế nào, trang Forbes đã có một cuộc nói chuyện với David Wang, một trong bốn lập trình viên của công cụ bẻ khóa này. Wang cho biết phần mềm của nhóm tận dụng ít nhất là 5 lỗi mới trong mã nguồn của iOS và bên dưới là những diễn giải của anh theo từng bước một.
evasi0n bắt đầu bằng việc khởi chạy libimobiledevice, một phần mềm thay thế cho iTunes để evasi0n có thể liên lạc với thiết bị iOS thông qua cùng loại giao thức mà Apple sử dụng. Bằng công cụ này, evasi0n khai thác một lỗ hổng trong hệ sống sao lưu của iOS để truy cập đến một số phần cấu hình nhất định. Những mục cấu hình này bình thường bị Apple cấm không cho phép truy cập và nó nằm trong một tập tin cho biết múi giờ của máy.
Kế tiếp, evasi0n sẽ chèn một "đường link biểu tượng" (symbolic link, một shortcut để di chuyển từ vùng này đến vùng khác trong hệ điều) vào tập tin múi giờ. Trong trường hợp này, đường link sẽ dẫn đến một "socket", tức một kênh liên lạc giữa nhiều phần mềm khác nhau trong hệ thống. Kế tiếp, evasi0n sẽ chỉnh sửa socket nói trên để cho phép máy liên lạc được với một phần mềm gọi là Launch Daemon (viết tắt: launchd). launchd thực chất là một tiến trình chủ được chạy lên đầu tiên khi chúng ta bật máy iOS và nó có nhiệm vụ khởi động các app cần đến quyền root, quyền người dùng cao nhất trong môi trường UNIX/Linux. Tóm lại, khi iPhone, iPod Touch hay iPad chạy tính năng sao lưu, nó sẽ truy cập tập tin múi giờ và bị chuyển hướng sang việc kích hoạt launchd.
iOS còn một lớp bảo vệ nữa để ngăn không cho các ứng dụng ngoài truy cập vào launchd, đó là Code-signing. Lớp này đòi hỏi mọi app phải được chấp nhận bởi một "chữ kí" của Apple để có thể chạy được. evasi0n tạo ra một app với mã lệnh không được "kí", sau đó các lập trình viên dùng một thủ thuật nhỏ trong Unix để lấy mã từ launchd, vốn đã được Apple chứng thực. Quá trình này diễn ra khi chúng ta chạm vào icon Jailbreak trên màn hình. Nhờ có lauchd mà evasiOn có thể chạy lệnh "remount" và chuyển trạng thái của hệ tập tin root (root file system) từ "chỉ đọc" sang "cho phép đọc và ghi".
Kế tiếp, evasi0n thay đổi nội dung của tập tin launchd.conf để đảm bảo rằng những thay đổi mà evasi0n thực hiện sẽ còn mãi trong hệ thống. Đây chính là mấu chốt cho việc untether jailbreak, giúp chúng ta không phải cắm thiết bị vào máy tính để chạy jailbreak lại mỗi khi iPhone, iPod hay iPad bị tắt nguồn.
Đến đây, máy của chúng ta vẫn chưa bị jailbreak. evasi0n phải tiếp tục chạy launchd nhằm tải một thư viện hàm vào AMFID (Apple Mobile File Integrity Daemon, tiến trình dùng để kiểm tra Code-signing). Nhờ có động tác này mà các đoạn mã không được chứng thực có thể luôn luôn hoạt động.
Tuy nhiên, khó khăn phải chấm dứt. iOS có một lớp bảo mật nữa gọi là Address Space Layout Randomization, hay ASLR. Lớp này sẽ di chuyển vị trí của mã lệnh đến nhiều nơi khác nhau trong bộ nhớ mỗi khi chúng ta khởi động máy, từ đó ngăn chặn việc hacker luôn ghi dữ liệu vào một nơi cố định. evasi0n "lách" qua ASLR bằng cách sử dụng một vị trí nhớ khó bị ẩn giấu trong hệ thống sử dụng chip ARM (gọi là ARM exception vector) để biết được kernel của hệ điều hành đang nằm ở đâu.
Cuối cùng, evasi0n sử dụng một lỗi trong giao diện USB của iOS để chuyển vị trí của kernel cho một phần mềm khác để tiến hành ghi đè dữ liệu. Nơi đầu tiên trong kernel mà evasi0n chỉnh sửa đó là bộ phận giới hạn sự thay đổi code của chính nó. Động tác này giống như "tôi ước là có thêm nhiều điều ước nữa". Wang nói "một khi bạn đã vào đến kernel, các vấn đề về bảo mật không còn nữa. Và như thế là chúng tôi đã chiến thắng".
Nguồn: Forbes