Register
Submit a solution
The challenge is finished.

Challenge Overview

Overview

 

The process of jailbreaking iOS devices has been around since the early days when the first iPhone was launched. Simply put, jailbreaking is the process of removing the restrictions that Apple puts on your device and allows you to install applications from 3rd party application stores.

 

There are several approaches and tools to jailbreak an iOS device. Jailbreaks can be untethered, tethered or semi-tethered. These can be implemented via simple client-side apps or via more sophisticated solutions which have a client-server architecture

 

We would like to leverage the Topcoder community to to build an application to detect jailbreaking of an iOS device. Please read on to understand the complete requirements of what we’re trying to build. This ideation challenge is meant to solicit detailed ideas on what’s the best approach to build this tool and flesh out the various aspects of how it would work.

 

This is a good example of the capabilites we’re trying to build.

 

Requirements

 
  • It is expected that the tool can work with the latest iOS version (10.3.x) and with the latest iOS devices (iPhone 7x and 6x)

  • The core requirements of this tool are

    • Be able to determine whether a device is jailbroken or not

    • Be able to handle false positives

    • Be able to bypass detection of app by active jailbreak
       

As an example, some utilities use one or more of the following approaches for detecting jailbreaks.

 
  • Existence of directories - Check for paths like /Applications/Cydia.app/ and /private/var/stash

  • Directory permissions - Use NSFileManager & statfs() to check write access on multiple directories.

  • Process forking -

  • SSH loopback connection

  • system() - Calling the system() function with a NULL argument on a jailbroken device will return 1.

 

These are merely examples - while you can use leverage one or more of these approaches, all the functionality in proposed tool can’t be built using just the above.

 

Assumptions

 

Although you’re free to propose a client-side only solution, our findings so far suggest that a server-based solution will be better suited. If you do propose a solution which has a server component, you can safely assume the following

 
  • A trusted (authenticated + encrypted) channel exists between the app and the server

  • There will be a network of ~1000 users on the server, across which data can be compared

 

Deliverables

 

You are expected to submit a detailed document (minimum 3-4 pages) explaining your proposed approach for building this tool which can successfully detect whether a device is jailbroken or not. Make sure to include details on the architecture

 
  • Whether your solution is only client-side or client side + server side. If the latter, please describe the client-server interaction flows

  • Do NOT just submit links to any jailbreaking utilities. We are NOT building a tool to jailbreak devices. We are building a tool which can detect jailbroken devices.

  • Submission should provide a clear direction on how the tool can be implemented - which APIs should be used, how will it be deployed etc. Be as detailed as possible.

  • Include details on how your tool will detect a false positive and bypass detection

  • If your submission relies on an existing open source package, please clearly mention those with appropriate licensing terms.

 

Review Criteria

 

The submissions will be reviewed by the client and will be rated based on the feasibility of implementation, level of attention to detail and how well the submissions matches to the requirements mentioned above. Only submissions that the client deems as passable will be chosen for awarding prizes. There will be no appeals or appeals response.

 

References

 

Here are some examples which should help you understand jailbreak,jailbreak detection and , and anomaly analysis better.

 
  1. https://www.theiphonewiki.com/wiki/XCon

  2. http://www.delaat.net/rp/2015-2016/p51/report.pdf

  3. http://www.pank4j.com/posts/appminder-jailbreak-detection-analysis.html

  4. https://github.com/thii/DTTJailbreakDetection

  5. https://www.notsosecure.com/bypassing-jailbreak-detection-ios/

  6. https://www.trustwave.com/Resources/SpiderLabs-Blog/Jailbreak-Detection-Methods/

  7. https://opensource.srlabs.de/projects/snoopsnitch


     



Final Submission Guidelines

Refere submission guidelines above

ELIGIBLE EVENTS:

2017 TopCoder(R) Open

Review style

Final Review

Community Review Board

Approval

User Sign-Off

ID: 30058552