|
|
| Line 15: |
Line 15: |
|
| |
|
| ===Background=== | | ===Background=== |
| *Goals
| | Goals |
| ** allow web content to dial out
| | * allow web content to dial out |
| **allow content to mediate incoming calls (accept/reject/merge) *allow content to query transceiver state
| | *allow content to mediate incoming calls (accept/reject/merge) *allow content to query transceiver state |
| *Bugs:
| | |
| **B2G Meta telephony bug https://bugzilla.mozilla.org/show_bug.cgi?id=699235
| | Bug: |
| **Web Telephony meta bug: https://bugzilla.mozilla.org/show_bug.cgi?id=674726
| | *B2G Meta telephony bug https://bugzilla.mozilla.org/show_bug.cgi?id=699235 |
| *Articles:
| | *Web Telephony meta bug: https://bugzilla.mozilla.org/show_bug.cgi?id=674726 |
| **WebAPI Intro: http://hacks.mozilla.org/2012/03/webtelephony-api-and-websms-api-part-of-webapi/ | | Articles: |
| **Detailed code walkthrough: https://wiki.mozilla.org/B2G/Architecture#RIL:_Telephony ( some code links of of date, see code links below)
| | *http://hacks.mozilla.org/2012/03/webtelephony-api-and-websms-api-part-of-webapi/ |
| *Changeset for parts on M-C
| | *Detailed code walkthrough for receive call case: https://wiki.mozilla.org/B2G/Architecture#RIL:_Telephony |
| **https://hg.mozilla.org/integration/mozilla-inbound/rev/bac673bc7211
| | Changeset |
| *Source:
| | *https://hg.mozilla.org/integration/mozilla-inbound/rev/bac673bc7211 |
| **http://mxr.mozilla.org/mozilla-central/source/dom/telephony/
| | Source: |
| **https://github.com/mozilla-b2g/android-hardware-ril/blob/master/include/telephony/
| | *http://mxr.mozilla.org/mozilla-central/source/dom/telephony/ |
| | *https://github.com/mozilla-b2g/android-hardware-ril/blob/master/include/telephony/ril.h |
|
| |
|
| ===Data Flow Diagram=== | | ===Data Flow Diagram=== |
| Line 34: |
Line 35: |
|
| |
|
| ===Threat Model=== | | ===Threat Model=== |
| <div>
| | |
| <p>
| | {| border="1" class="fullwidth-table sortable" |
| </p>
| | |ID||Title||Threat||Proposed Mitigations||Threat Agent||Rating||Likelihood||Notes||Impact||Notes |
| <table border="1" cellpadding="0" cellspacing="0" width="613">
| | |- |
| <tbody>
| | |1||Unauthorized content accesses the Web Telephony API||A web page or web app accesses the Telephony API with having the valid permissions or requirements ||\* App Permissions Model will enforce which apps can access which APIs |
| <tr>
| | \* B2G security model will enforce permissions model at a process level (ie less privileged process not allowed to send IPDL messages even if permissions check fails at an API level)||Malicious web content||||Requires a bug in broader browser security model||||||\* Place unauthorized calls, cost the user money, make spam phone calls |
| <td valign="top" width="49">
| | \* Use phone a bugging device, breach user privacy |
| <p>
| | \* probably would have broader implications |
| ID
| | |
| </p>
| | |- |
| </td>
| | |2||Attack from radio network||Malicious service provider or attacker with ability to inject radio packets could attack the web telephony stack.||\* Code review |
| <td valign="top" width="82">
| | \* Fuzzing |
| <p>
| | ||Malicious service provider or attacker with ability to inject radio packets|||||||||| |
| Title
| | |- |
| </p>
| | |3||Bug in Web Telephony stack leads to code execution vulnerability ||A web page could supply malicious data to an API, triggering an exploitable crash.||\* Code review |
| </td>
| | \* Fuzzing |
| <td valign="top" width="81">
| | \* Limiting access to API||Malicious web content||||||||||\*Dangerous since it involves privileged code |
| <p>
| | |- |
| Threat
| | |3||Content spoofing phones dialer app||Webpage or app masquerades as the dialer for a complex phishing attack||\*Sort of a broader B2G issue (all apps could be spoofed) |
| </p>
| | \* Only high-privileged content process will have access to send dialer IPDL messages||Malicious web content|||||||||| |
| </td>
| | |- |
| <td valign="top" width="87">
| | |4||Content framing the dialer app||If content could frame the dialer app, or load it in a manner where it was obscured, malicious content might be able to induce the user to make a call.||\* Broader B2G issue |
| <p>
| | \* Only high-privileged content process will have access to send dialer IPDL messages||Malicious web content|||||||||| |
| Proposed Mitigations
| | |- |
| </p>
| | |} |
| </td>
| |
| <td valign="top" width="71">
| |
| <p>
| |
| Threat Agent
| |
| </p>
| |
| </td>
| |
| <td valign="top" width="45">
| |
| <p>
| |
| Rating
| |
| </p>
| |
| </td>
| |
| <td valign="top" width="65">
| |
| <p>
| |
| Likelihood
| |
| </p>
| |
| </td>
| |
| <td valign="top" width="43">
| |
| <p>
| |
| Notes
| |
| </p>
| |
| </td>
| |
| <td valign="top" width="50">
| |
| <p>
| |
| Impact
| |
| </p>
| |
| </td>
| |
| <td valign="top" width="40">
| |
| <p>
| |
| Notes
| |
| </p>
| |
| </td>
| |
| </tr>
| |
| <tr>
| |
| <td valign="top" width="49">
| |
| <p>
| |
| 1
| |
| </p>
| |
| </td>
| |
| <td valign="top" width="82">
| |
| <p>
| |
| Unauthorized content accesses the Web Telephony API
| |
| </p>
| |
| </td>
| |
| <td valign="top" width="81">
| |
| <p>
| |
| A web page or web app accesses the Telephony API with having the valid permissions or requirements
| |
| </p>
| |
| </td>
| |
| <td valign="top" width="87">
| |
| <p>
| |
| * App Permissions Model will enforce which apps can access which APIs
| |
| </p>
| |
| <p>
| |
| * B2G security model will enforce permissions model at a process level (ie less privileged process not allowed to send IPDL messages
| |
| even if permissions check fails at an API level)
| |
| </p>
| |
| </td>
| |
| <td valign="top" width="71">
| |
| <p>
| |
| Malicious web content
| |
| </p>
| |
| </td>
| |
| <td valign="top" width="45">
| |
| <p>
| |
|
| |
| </p>
| |
| </td>
| |
| <td valign="top" width="65">
| |
| <p>
| |
| Requires a bug in broader browser security model
| |
| </p>
| |
| </td>
| |
| <td valign="top" width="43">
| |
| <p>
| |
|
| |
| </p>
| |
| </td>
| |
| <td valign="top" width="50">
| |
| <p>
| |
|
| |
| </p>
| |
| </td>
| |
| <td valign="top" width="40">
| |
| <p>
| |
| * Place unauthorized calls, cost the user money, make spam phone calls
| |
| </p>
| |
| <p>
| |
| * Use phone a bugging device, breach user privacy
| |
| </p>
| |
| <p>
| |
| * probably would have broader implications
| |
| </p>
| |
| <p>
| |
|
| |
| </p>
| |
| </td>
| |
| </tr>
| |
| <tr>
| |
| <td valign="top" width="49">
| |
| <p>
| |
| 2
| |
| </p>
| |
| </td>
| |
| <td valign="top" width="82">
| |
| <p>
| |
| Attack from radio network
| |
| </p>
| |
| </td>
| |
| <td valign="top" width="81">
| |
| <p>
| |
| Malicious service provider or attacker with ability to inject radio packets could attack the web telephony stack.
| |
| </p>
| |
| </td>
| |
| <td valign="top" width="87">
| |
| <p>
| |
| * Code review
| |
| </p>
| |
| <p>
| |
| * Fuzzing
| |
| </p>
| |
| <p>
| |
|
| |
| </p>
| |
| </td>
| |
| <td valign="top" width="71">
| |
| <p>
| |
| Malicious service provider or attacker with ability to inject radio packets
| |
| </p>
| |
| </td>
| |
| <td valign="top" width="45">
| |
| <p>
| |
|
| |
| </p>
| |
| </td>
| |
| <td valign="top" width="65">
| |
| <p>
| |
|
| |
| </p>
| |
| </td>
| |
| <td valign="top" width="43">
| |
| <p>
| |
|
| |
| </p>
| |
| </td>
| |
| <td valign="top" width="50">
| |
| <p>
| |
|
| |
| </p>
| |
| </td>
| |
| <td valign="top" width="40">
| |
| <p>
| |
|
| |
| </p>
| |
| </td>
| |
| </tr>
| |
| <tr>
| |
| <td valign="top" width="49">
| |
| <p>
| |
| 3
| |
| </p>
| |
| </td>
| |
| <td valign="top" width="82">
| |
| <p>
| |
| Bug in Web Telephony stack leads to code execution vulnerability
| |
| </p>
| |
| </td>
| |
| <td valign="top" width="81">
| |
| <p>
| |
| A web page could supply malicious data to an API, triggering an exploitable crash.
| |
| </p>
| |
| </td>
| |
| <td valign="top" width="87">
| |
| <p>
| |
| * Code review
| |
| </p>
| |
| <p>
| |
| * Fuzzing
| |
| </p>
| |
| <p>
| |
| * Limiting access to API
| |
| </p>
| |
| </td>
| |
| <td valign="top" width="71">
| |
| <p>
| |
| Malicious web content
| |
| </p>
| |
| </td>
| |
| <td valign="top" width="45">
| |
| <p>
| |
|
| |
| </p>
| |
| </td>
| |
| <td valign="top" width="65">
| |
| <p>
| |
|
| |
| </p>
| |
| </td>
| |
| <td valign="top" width="43">
| |
| <p>
| |
|
| |
| </p>
| |
| </td>
| |
| <td valign="top" width="50">
| |
| <p>
| |
|
| |
| </p>
| |
| </td>
| |
| <td valign="top" width="40">
| |
| <p>
| |
| *Dangerous since it involves privileged code
| |
| </p>
| |
| </td>
| |
| </tr>
| |
| <tr>
| |
| <td valign="top" width="49">
| |
| <p>
| |
| 3
| |
| </p>
| |
| </td>
| |
| <td valign="top" width="82">
| |
| <p>
| |
| Content spoofing phones dialer app
| |
| </p>
| |
| </td>
| |
| <td valign="top" width="81">
| |
| <p>
| |
| Webpage or app masquerades as the dialer for a complex phishing attack
| |
| </p>
| |
| </td>
| |
| <td valign="top" width="87">
| |
| <p>
| |
| *Sort of a broader B2G issue (all apps could be spoofed)
| |
| </p>
| |
| <p>
| |
| * Only high-privileged content process will have access to send dialer IPDL messages
| |
| </p>
| |
| </td>
| |
| <td valign="top" width="71">
| |
| <p>
| |
| Malicious web content
| |
| </p>
| |
| </td>
| |
| <td valign="top" width="45">
| |
| <p>
| |
|
| |
| </p>
| |
| </td>
| |
| <td valign="top" width="65">
| |
| <p>
| |
|
| |
| </p>
| |
| </td>
| |
| <td valign="top" width="43">
| |
| <p>
| |
|
| |
| </p>
| |
| </td>
| |
| <td valign="top" width="50">
| |
| <p>
| |
|
| |
| </p>
| |
| </td>
| |
| <td valign="top" width="40">
| |
| <p>
| |
|
| |
| </p>
| |
| </td>
| |
| </tr>
| |
| <tr>
| |
| <td valign="top" width="49">
| |
| <p>
| |
| 4
| |
| </p>
| |
| </td>
| |
| <td valign="top" width="82">
| |
| <p>
| |
| Content framing the dialer app
| |
| </p>
| |
| </td>
| |
| <td valign="top" width="81">
| |
| <p>
| |
| If content could frame the dialer app, or load it in a manner where it was obscured, malicious content might be able to induce the user
| |
| to make a call.
| |
| </p>
| |
| </td>
| |
| <td valign="top" width="87">
| |
| <p>
| |
| * Broader B2G issue
| |
| </p>
| |
| <p>
| |
| * Only high-privileged content process will have access to send dialer IPDL messages
| |
| </p>
| |
| </td>
| |
| <td valign="top" width="71">
| |
| <p>
| |
| Malicious web content
| |
| </p>
| |
| </td>
| |
| <td valign="top" width="45">
| |
| <p>
| |
|
| |
| </p>
| |
| </td>
| |
| <td valign="top" width="65">
| |
| <p>
| |
|
| |
| </p>
| |
| </td>
| |
| <td valign="top" width="43">
| |
| <p>
| |
|
| |
| </p>
| |
| </td>
| |
| <td valign="top" width="50">
| |
| <p>
| |
|
| |
| </p>
| |
| </td>
| |
| <td valign="top" width="40">
| |
| <p>
| |
|
| |
| </p>
| |
| </td>
| |
| </tr>
| |
| </tbody>
| |
| </table>
| |
| </div>
| |