Bảo mật ứng dụng di động

Tìm ra các lỗ hổng với IBM Security AppScan Standard

Với sự phát triển nhanh chóng của hệ sinh thái di động, ứng dụng bảo mật di động là một mối quan tâm lớn. Những thiết kế ứng dụng di động mới đòi hỏi những cách kiểm tra tốt nhất để đảm bảo dữ liệu được an toàn. Trong bài này, chúng ta khám phá ra nhiều khía cạnh khác nhau về bảo mật trong ứng dụng di động. Với những ví dụ thực tiễn, chúng ta sẽ nghiên cứu cách sử dụng IBM® Security AppScan® Standard với các trạm người dùng từ giả lập đến các thiết bị thật chạy Android và iOS.

Daniel J Anderson, Tư vấn bảo mật, IBM

Ảnh của Daniel AndersonDainel J. Anderson là một nhà tư vấn bảo mật và riêng tư với IBM Security Services. Ông có hơn 20 năm kinh nghiệm trong các lĩnh vực bảo mật thông tin, quản trị hệ thống, và phát triển phần mềm. Dan là một chuyên viên có chứng chỉ IBM Rational AppScan Standard Edition và các chứng chỉ khác như CISSP, CISA, và CIPP/US. Ông còn là cựu chiến binh của không quân Hoa Kỳ và tốt nghiệp trường Đại học Nebraska - bang Omaha.



Carlos Hoyos, Trưởng phòng thí nghiệm CIO Security, IBM

Ảnh của Carlos HoyosCarlos Hoyos là trưởng phòng thí nghiệm IBM CIO Security, một nơi nghiên cứu và thúc đẩy các giải pháp an ninh. Ông quan tâm đến lĩnh vực phân tích an ninh, nơi ông có thể thể hiện được niềm đam mê về Big data (dữ liệu lớn), bảo mật, và cách làm cho hệ thống và người dùng trở nên thông minh hơn. Carlos là một nhà toán học, một nhà công nghệ tự phong, và khi không còn suy nghĩ về bảo mật, ông thường cùng với gia đình học hỏi ý nghĩa cùa việc làm cha, hay đi khám phá New York, quê hương thứ hai của ông.



Nader Nassar, Kỹ sư phần mềm, IBM

Ảnh của Nader NassarNader M. Nassar là trưởng kỹ thuật trong nhóm Sáng tạo Bảo mật, thuộc phòng thí nghiệm IBM CIO. Ông còn là trợ giảng tại Đại học Pace, trường Khoa học máy tính và Hệ thống thông tin Seidenberg. Dự án nghiên cứu chính của ông xoay quanh các lỗ hổng của ứng dụng web và các mô hình dịch vụ an ninh. Nader là một chuyên gia công nghệ có chứng chỉ IBM, thành viên của hội đồng quản trị chứng nhận chuyên gia CNTT của IBM, và là một kiến trúc sư CNTT có chứng nhận. Ông còn là tác giả của một số bài báo trong hội nghị IEEE về không gian bảo mật trên web.



23 08 2013

Giới thiệu

Với hệ sinh thái di động đang phát triển nhanh chóng như hiện nay, thì việc bảo mật ứng dụng di động chính là chủ đề nóng bỏng, thu hút đông đảo sự quan tâm của đội ngũ nhân viên bảo mật Công nghệ thông tin, các nhà nghiên cứu, và các nhà lãnh đạo. Sự phát triển của các ứng dụng di động tích hợp với những nguyên tắc thiết kế mới đòi hỏi các nhà phát triển cần chú ý đến các phương thức khác hơn, mới hơn để đảm bảo an toàn dữ liệu. Cách kiểm tra các ứng dụng di động và những cơ sở hạ tầng liên quan cũng là một giải pháp hiệu quả để tăng cường độ bảo mật này

Tìm hiểu thêm về IBM Security AppScan family dùng cho các ứng dụng web và di động.

Bài này tập trung thảo luận về việc bảo mật các ứng dụng di động và cung cấp cho bạn những kỹ thuật để cấu hình cho việc kiểm tra các máy chủ ứng dụng di động bằng cách dùng IBM Security AppScan Standard Edition. Tìm hiểu cách thiết lập AppScan để quét các ứng dụng di động với ba mô hình khác nhau:

  • Quét các ứng dụng web di động bằng cách thiết lập một Mobile User Agent (máy trạm người dùng di động)
  • Sử dụng một trình giả lập cho cả iOS và Android
  • Cấu hình một thiết bị di động thực sự cho cả Android và iOS

Hình 1 cho thấy ba cấu hình khác nhau.

Hình 1. Các phương thức để quét và kiểm tra các ứng dụng di động
Hình ảnh hiển thị ba loại mô hình khác nhau

Các loại ứng dụng di động

Như mô tả gần đây trong webcast của Omri Weisman (xem phần Tài nguyên), các ứng dụng di động có thể được chia thành nhiều nhóm. Mỗi nhóm có những kỹ thuật kiểm tra riêng và những công cụ tương ứng giúp kiểm tra một cách hiệu quả nhất..

Nhóm ứng dụng di động cơ bản

Các ứng dụng di động cơ bản (native application) để chạy trên các thiết bị và được viết bằng ngôn ngữ cơ bản, ví dụ như ngôn ngữ Java cho các ứng dụng Android, hoặc ngôn ngữ lớp đối tượng C cho các ứng dụng iOS Apple. Các ứng dụng trong nhóm này được kiểm tra tốt nhất với những công cụ phân tích tĩnh. IBM Security AppScan Source Edition phiên bản 8.6 và những phiên bản cao hơn hỗ trợ việc phân tích tĩnh các ứng dụng Android. Ngoài ra, IBM Security AppScan Standard Edition cũng thường được dùng để kiểm tra nhiều ứng dụng cơ bản sử dụng web chuẩn và giao diện truyền thông dịch vụ web.

Nhóm ứng dụng web di động

Các ứng dụng web di động thay vì phát triển từng ứng dụng cho từng nền tảng di động, thì nhiều tổ chức sẽ hỗ trợ cho các thiết bị di động truy cập đến các trang web hiện có của họ. Hoặc là họ sẽ phát triển các trang web dành riêng để hỗ trợ các ứng dụng di động. Sự hỗ trợ này thường bao gồm việc tinh chỉnh cho gọn lại, giảm thiểu yêu cầu băng thông, tối ưu hóa cho kích cỡ màn hình nhỏ hơn, công nghệ khác nhau (ví dụ, HTML5 so với Flash). Vì vậy, "ứng dụng" triển khai tới các thiết bị di động thường là ít hơn so với một shortcut hay bookmark. Các ứng dụng trong thể loại này rất thích hợp cho cả hai loại thử nghiệm tĩnh sử dụng AppScan Source Edition và thử nghiệm động sử dụng AppScan Standard Edition.

Nhóm ứng dụng di động lai (hybrid)

Những ứng dụng di động lai thường bao gồm một giao diện người dùng (WebView/UIWebView) dựa trên web (HTML, CSS, JavaScript) được bao bọc bởi một lớp ứng dụng cơ bản (native). Các ứng dụng trong nhóm này cũng rất thích hợp cho cả hai loại thử nghiệm: thử nghiệm tĩnh sử dụng AppScan Source Edition (dùng cho Android) cho các lớp cơ bản và thử nghiệm động sử dụng AppScan Standard Edition cho các lớp dựa trên web của ứng dụng.


Các ứng dụng di động và dịch vụ web

Mỗi nhóm ứng dụng di động có một mô hình đặc thù để xử lý nhằm tách riêng phần Mobile (được triển khai đến thiết bị di động) và phần Xử lý trung tâm hoặc lưu trữ dữ liệu (được triển khai đến máy chủ). Mô hình này thường sử dụng giao diện dịch vụ web có thể thử nghiệm một cách trực tiếp bằng AppScan. AppScan hỗ trợ việc thử nghiệm nhiều dịch vụ web bao gồm cả những dịch vụ web dựa trên SOAP và dựa trên REST.

Những phương thức được trình bày trong bài báo này được khuyên dùng để kiểm tra các giao diện của dịch vụ web được sử dụng trong ứng dụng của bạn. Tuy nhiên, để bảo mật hơn nữa, bạn cũng cần bảo đảm rằng dịch vụ web được kiểm tra một cách toàn diện, bao gồm cả những hàm đã tạo mà hiện không được dùng trong ứng dụng di động.

Việc giao tiếp với web di động hoặc máy chủ ứng dụng thường thông qua các giao thức chuẩn và các định dạng dữ liệu có thể bị chặn như HTTP, HTTPS SOAP, REST, JSON và XML. Máy chủ ứng dụng di động có thể được kiểm thử bằng IBM Security AppScan Standard Edition. Những phần tiếp theo sẽ trình bày cách cấu hình AppScan để ghi lại những tương tác — đây là bước quan trọng trong việc kiểm thử các máy chủ ứng dụng web di động. Bạn sẽ học về 3 phương thức (trong Hình 1) để kiểm thử các máy chủ ứng dụng di động với AppScan: cấu hình user agent, sử dụng trình giả lập, và dùng các thiết bị di động thực.


Cấu hình user agent (máy trạm người dùng)

Cách tốt nhất để kiểm thử các ứng dụng di động là cấu hình AppScan để gửi các chuỗi User-Agent để giả lập các thiết bị di động. AppScan cung cấp thêm sự hỗ trợ cho nhiều dạng thiết bị di động. Nó có khả năng cấu hình các chuỗi User-Agent cần thiết.

Bạn có thể thiết lập một chuỗi User-Agent bằng cách chọn Explore Options từ cửa sổ Scan Configure, như Hình 2. Sau đó, kiểm tra việc các phần được chia ứng dụng của server, nó thường là URL, manual recordings (hướng dẫn sử dụng), web service interaction (tương tác dịch vụ web), v.v.

Hình 2. Thiết lập User Agent
Hình ảnh cửa sổ cấu hình

Đây là phương pháp tốt để kiểm tra các ứng dụng web di động, cũng dùng AppScan giống như đối với các ứng dụng di động. Thực hiện vài thay đổi cấu hình đơn giản để kiểm thử đầy đủ hết các ứng dụng.


Cấu hình emulator (giả lập)

Một kỹ thuật khác để kiểm thử các ứng dụng di động là thực thi ứng dụng đó trong phần mềm giải lập và ủy quyền vận chuyển thông qua AppScan. Mục này cung cấp các chi tiết cho Android và iOS

Cấu hình giả lập Android

Bạn có thể cấu hình giả lập Android bằng cách sử dụng trình giả lập đó bên trong Android SDK. Khi một ứng dụng đang chạy trong trình giả lập, sự vận chuyển của mạng trực tiếp thông qua AppScan Proxy Port có sẵn địa chỉ localhost (127.0.0.1) ở cổng được xác định trong cửa sổ AppScan > Tools > Options , như Hình 3. Theo mặc định, cổng này được chọn tự động. Nếu bạn đang sử dụng tới đặc tính này, thì nên thiết lập nó bằng một giá trị tĩnh bằng cách bỏ chọn hộp chọn “Let AppScan choose the port automatically (Để AppSan tự động chọn cổng)” và thiết lập lại một cổng khác ở trong mục “AppScan proxy port (Cổng proxy của AppScan)”.

Hình 3. Thiết lập proxy
Hình ảnh cửa sổ tùy chọn

Cấu hình giả lập Android để sử dụng cổng proxy trên địa chỉ localhost bằng dòng lệnh sau .

emulator -avd myAVD -http-proxy 127.0.0.1:{port from appscan config}

Nếu bạn đang khởi chạy trình giả lập trên Eclipse, thì bạn có thể cấu hình những thiết lập từ cửa sổ Window > Preferences > Android >Launch > Default Emulator Options. Chú ý rằng việc cấu hình proxy trong thiết bị cũng như trình giả lập có thể sẽ không sử dụng được với một số ứng dụng. Trong trường hợp này, và các trường hợp tương tự khác, bao gồm việc hỗ trợ phát triển, có thể được yêu cầu.

Cấu hình mức Android OS

Trong một số phiên bản của Android OS, bạn có thể cấu hình một proxy từ trình giả lập bằng dòng lệnh. Nếu bạn làm thế, thì nên chắc rằng bạn cần sử dụng một cổng proxy khác địa chỉ: 10.0.2.2 trong Android OS. Đây là một địa chỉ đặc biệt tương tự như giao diện loopback trên máy PC cục bộ của bạn (127.0.0.1). Điều này là cần thiết, vì 127.0.0.1 được sử dụng bởi Android OS được giả lập như cổng loopback.

Trong Android 4.1, điều chỉnh việc cài đặt proxy:

  1. Vào Settings.
  2. Chọn More bên dưới Wireless and networks.
  3. Chọn Mobile network settings.
  4. Chọn Access Point Names.
  5. Chọn mạng đã được liệt kê.
  6. Sửa lại trường Proxy and Port, như Hình 4.
  7. Đảm bảo rằng username (tên đăng nhập) đang rỗng và password (mật khẩu) chưa được thiết lập.
Hình 4. Cấu hình ở tầng Android OS
Ảnh chụp màn hình Network với web proxy http được chọn và địa chỉ máy chủ web proxy được nhập vào

Trình mô phỏng iOS

Trình mô phỏng iOS không có các thiết lập proxy chuyên dụng, nhưng vì nó rất dễ để thiết lập một proxy cho tất cả loại mạng bằng cách sử dụng máy tính Mac. Trong hộp thoại Preferences > System preferences, chọn Networking và chọn giao diện bạn đang sử dụng (có dây hoặc không dây). Bên dưới Advanced setting (thiết lập nâng cao), bạn sẽ thấy một thẻ proxy, như Hình 5. Thiết lập IP và cổng cho thiết bị mà bạn đang thực thi AppScan. AppScan chỉ kết nối với lưu lượng truy cập cục bộ, vì thế bạn cần phải thay đổi cấu hình để chuyển tiếp lưu lượng truy cập tới bộ chuyển đổi cục bộ. (xem mục Sử dụng thiết bị chạy iOS).

Hình 5. Thiết lập iOS proxy
Màn hình iOS proxy

Cấu hình thiết bị di động

Nếu bạn muốn khám phá thiết bị thực tế của bạn, một số cấu hình bổ sung sau là cần thiết. Như đã đề cập, các proxy AppScan chỉ liên kết với địa chỉ loopback localhost (127.0.0.1). Bạn cần cho phép để tạo cổng proxy này sẵn có trên một giao diện có sẵn.

Có rất nhiều tiện ích giúp bạn cấu hình một thiết bị di động. Ví dụ trong bài viết này sử dụng rinetd (xem phần Tài nguyên), một ứng dụng mã nguồn mở (GPL 2 +) tiện ích rất dễ sử dụng, phổ biến rộng rãi, và miễn phí. Sau khi bạn đã tải về các tiện ích rinetd để máy tính, nơi AppScan được cài đặt, cài đặt rinetd cũng đơn giản bằng cách giải nén tệp zip và đặt tệp thực thi vào nơi mà bạn lựa chọn.

Sau khi cài đặt, bạn sẽ cần phải tạo một tập tin cấu hình đơn giản. Tài liệu về định dạng và các tính năng cho các tập tin có sẵn trên trang web rinetd. Ví dụ trong bài viết này đòi hỏi một dòng duy nhất:

(IP to listen on) (port to listen on) (IP to forward to) (port to forward to)
192.168.1.114 28080 127.0.0.1 18080

Dòng cấu hình này chỉ thị cho rinetd lắng nghe địa chỉ IP 192.168.1.114 trên cổng 28080 và chuyển tiếp tất cả lưu lượng truy cập đến 127.0.0.1 trên cổng 18080 (có lẽ là nơi AppScan được cấu hình để lắng nghe). Bạn có thể đặt dòng này vào một tập tin văn bản gọi là rinetd.conf, hoặc bất cứ thứ gì mà bạn lựa chọn, sau đó chạy rinetd từ dòng lệnh với các lệnh sau.

rinetd -c c:\PATH\TO\CONFIG\rinetd.conf

Sau khi rinetd đang chạy, bạn sẽ có thể ủy quyền lưu lượng dữ liệu của thiết bị thông qua địa chỉ IP có sẵn và cổng dẫn đến cổng AppScan proxy trên card mạng.

Sử dụng thiết bị di động chạy Android

Sau khi cấu hình rinetd, bạn cần phải cấu hình thiết bị Android của bạn đến proxy bằng cách sử dụng IP rinetd và cổng (ví dụ 192.168.1.114 và 28.080). Chọn Settings > Wi-Fi và sửa đổi các mạng hiện tại, như thể hiện trong hình 6.

Hình 6. Thiết lập Android proxy
Thiết lập Android proxy

Sử dụng thiết bị chạy iOS

Tương tự như vậy, trên một thiết bị iOS bạn sẽ cần phải thiết lập HTTP proxy từ màn hình cấu hình chọn Settings > Wi-Fi. Thiết lập máy chủ và cổng cho những cấu hình trong rinetd (ví dụ 192.168.1.114 và 28.080).

Hình 7. Thiết lập iOS
Ảnh chụp máy chủ và cổng iOS

Ghi nhận

Sau khi bạn đã thiết lập cấu hình proxy của bạn sử dụng bất kỳ các phương pháp trên, bước tiếp theo là cấu hình một máy quét và bắt đầu dò bằng tay.

Trong thiết bị giả lập hoặc thiết bị thật, chạy các ứng dụng mà bạn muốn kiểm tra. Khi bạn khám phá các tính năng ứng dụng, lưu lượng truy cập tạo ra được định tuyến thông qua AppScan proxy để ghi nhận lại. Khi bạn đang thực hiện khám phá thủ công với trình giả lập hoặc thiết bị, đóng trình duyệt và lưu lượng được nạp vào cấu hình. Khi quá trình ghi nhận hoàn tất, bạn đã sẵn sàng để bắt đầu thử nghiệm. Bạn có thể cấu hình lại các thiết bị di động và nên tắt rinetd (nếu đang dùng).


Kiểm thử

Việc kiểm tra bảo mật cũng tương tự như với việc kiểm tra các ứng dụng web hoặc các dịch vụ web điển hình. Chính sách kiểm tra mà bạn chọn lựa hầu như sẽ được hướng tới để kiểm thử các ứng dụng web di động, có thể là cho một ứng dụng duy nhất, ít quan trọng hoặc là kiểm tra những yếu tố cần thiết cho các nhà phát triển. Đó cũng là một ý hay để kiểm tra các cơ sở hạ tầng của ứng dụng theo định kỳ. Đôi khi các tổ chức lại tiến hành xử lý các máy chủ của ứng dụng di động khác nhau về mặt chính sách, các thủ tục, các tiêu chuẩn, và thực tế thậm chí họ cũng thực hiện điều đó trên các máy chủ ứng dụng web và các máy chủ web.

Bạn có thể sẽ cần thực hiện cấu hình bổ sung để hỗ trợ phương pháp truyền thông cho ứng dụng của mình. Các phương pháp của Web Service, ví dụ SOAP hay REST, có thể được sử dụng cho việc này. AppScan bao gồm các phương pháp kiểm tra nhằm kiểm thử các phương pháp của SOAP. Nó cũng có thể được cấu hình để kiểm thử các dịch vụ của RESTful. Có thể tìm kiếm thông tin về các bài viết của Ory Segal về chủ đề này (xem phần Tài nguyên) trên blog Application Security Insider.


Mã hóa lớp vận chuyển.

Các ứng dụng di động có thể hoạt động trong nhiều môi trường mạng với nhiều rủi ro cao, vì vậy việc mã hóa lớp Vận chuyển (Transport layer) trong SSL/HTTPS được quan tâm nhiều. Việc triển khai mã hóa lớp vận chuyển có thể gây khó khăn khi tiến hành kiểm thử đối với những trình giả lập hoặc mô phỏng từ các thiết bị thực tế. Và AppScan proxy có chức năng như một "người trung gian" để nắm bắt các lưu lượng mã hóa.

Thách thức đối với việc mã hóa lớp vận chuyển thường có thể được khắc phục bằng cách điều chỉnh các thiết lập cấu hình trong ứng dụng hoặc thiết bị, hoặc trình mô phỏng, từ đó tạo ra sự tin tưởng với chứng nhận của AppScan. Tuy nhiên, trong một số trường hợp, việc hỗ trợ phát triển có thể được yêu cầu, chẳng hạn như đối với chứng chỉ gắn dấu là không có cấu hình. Việc thiết lập cấu hình chi tiết cho các thiết bị di động hoặc giả lập nằm ngoài phạm vi của bài viết này.


Kết luận

Nếu thiết bị của bạn hiện tại không hỗ trợ những ứng dụng di động, nó có thể sẽ sớm được hỗ trợ. Trong bài này, bạn có thể nắm được về bảo mật ứng dụng di động với một vài kỹ thuật thực tiễn đến bài kiểm tra bảo mật của ứng dụng di động sử dụng IBM Security AppScan Standard Edition.

Tài nguyên

Học tập

Lấy sản phẩm và công nghệ

  • rinetd: Tải về rinetd(8), giúp chuyển hướng các kết nối TCP từ một địa chỉ IP và cổng đến một địa chỉ IP và cổng khác.
  • Dùng thử các sản phẩm của IBM theo cách phù hợp nhất với bạn: Tải về các sản phẩm dùng thử, dùng thử trực tuyến, hay trên môi trường đám mây hoặc SOA Sandbox để tìm hiểu cách thực hiện Service Oriented Architecture hiệu quả.

Thảo luận

  • Tham gia vào cộng đồng developerWorks. Kết nối với thành viên developerWorks thông qua các blog, diễn đàn, nhóm, và thư viện wiki.

Bình luận

developerWorks: Đăng nhập

Các trường được đánh dấu hoa thị là bắt buộc (*).


Bạn cần một ID của IBM?
Bạn quên định danh?


Bạn quên mật khẩu?
Đổi mật khẩu

Bằng việc nhấn Gửi, bạn đã đồng ý với các điều khoản sử dụng developerWorks Điều khoản sử dụng.

 


Ở lần bạn đăng nhập đầu tiên vào trang developerWorks, một hồ sơ cá nhân của bạn được tạo ra. Thông tin trong bản hồ sơ này (tên bạn, nước/vùng lãnh thổ, và tên cơ quan) sẽ được trưng ra cho mọi người và sẽ đi cùng các nội dung mà bạn đăng, trừ khi bạn chọn việc ẩn tên cơ quan của bạn. Bạn có thể cập nhật tài khoản trên trang IBM bất cứ khi nào.

Thông tin gửi đi được đảm bảo an toàn.

Chọn tên hiển thị của bạn



Lần đầu tiên bạn đăng nhập vào trang developerWorks, một bản trích ngang được tạo ra cho bạn, bạn cần phải chọn một tên để hiển thị. Tên hiển thị của bạn sẽ đi kèm theo các nội dung mà bạn đăng tải trên developerWorks.

Tên hiển thị cần có từ 3 đến 30 ký tự. Tên xuất hiện của bạn phải là duy nhất trên trang Cộng đồng developerWorks và vì lí do an ninh nó không phải là địa chỉ email của bạn.

Các trường được đánh dấu hoa thị là bắt buộc (*).

(Tên hiển thị cần có từ 3 đến 30 ký tự)

Bằng việc nhấn Gửi, bạn đã đồng ý với các điều khoản sử dụng developerWorks Điều khoản sử dụng.

 


Thông tin gửi đi được đảm bảo an toàn.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=70
Zone=Rational
ArticleID=942059
ArticleTitle=Bảo mật ứng dụng di động
publish-date=08232013