Security/WebAPI/Web Telephony: Difference between revisions

From MozillaWiki
Jump to navigation Jump to search
No edit summary
No edit summary
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:
Bug:
**B2G Meta telephony bug https://bugzilla.mozilla.org/show_bug.cgi?id=699235
*B2G Meta telephony bug https://bugzilla.mozilla.org/show_bug.cgi?id=699235
**Web Telephony meta bug:  https://bugzilla.mozilla.org/show_bug.cgi?id=674726
*Web Telephony meta bug:  https://bugzilla.mozilla.org/show_bug.cgi?id=674726
*Articles:
Articles:
**WebAPI Intro: http://hacks.mozilla.org/2012/03/webtelephony-api-and-websms-api-part-of-webapi/
*http://hacks.mozilla.org/2012/03/webtelephony-api-and-websms-api-part-of-webapi/
**Detailed code walkthrough: https://wiki.mozilla.org/B2G/Architecture#RIL:_Telephony ( some code links of of date, see code links below)
*Detailed code walkthrough for receive call case: https://wiki.mozilla.org/B2G/Architecture#RIL:_Telephony
*Changeset for parts on M-C
Changeset
**https://hg.mozilla.org/integration/mozilla-inbound/rev/bac673bc7211
*https://hg.mozilla.org/integration/mozilla-inbound/rev/bac673bc7211
*Source:
Source:
**http://mxr.mozilla.org/mozilla-central/source/dom/telephony/
*http://mxr.mozilla.org/mozilla-central/source/dom/telephony/
**https://github.com/mozilla-b2g/android-hardware-ril/blob/master/include/telephony/
*https://github.com/mozilla-b2g/android-hardware-ril/blob/master/include/telephony/ril.h


===Data Flow Diagram===
===Data Flow Diagram===
Line 35: Line 34:


===Threat Model===
===Threat Model===
 
<div>
{| border="1" class="fullwidth-table sortable"
    <p>
|ID||Title||Threat||Proposed Mitigations||Threat Agent||Rating||Likelihood||Notes||Impact||Notes
    </p>
|-
    <table border="1" cellpadding="0" cellspacing="0" width="613">
|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
        <tbody>
\* 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
            <tr>
\* Use phone a bugging device, breach user privacy
                <td valign="top" width="49">
\* probably would have broader implications
                    <p>
 
                        ID
|-
                    </p>
|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>
\* Fuzzing
                <td valign="top" width="82">
||Malicious service provider or attacker with ability to inject radio packets||||||||||
                    <p>
|-
                        Title
|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
                    </p>
\* Fuzzing
                </td>
\* Limiting access to API||Malicious web content||||||||||\*Dangerous since it involves privileged code
                <td valign="top" width="81">
|-
                    <p>
|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)
                        Threat
\* Only high-privileged content process will have access to send dialer IPDL messages||Malicious web content||||||||||
                    </p>
|-
                </td>
|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
                <td valign="top" width="87">
\* Only high-privileged content process will have access to send dialer IPDL messages||Malicious web content||||||||||
                    <p>
|-
                        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>

Revision as of 08:28, 5 April 2012

Please use "Edit with form" above to edit this page.

Project Info

Web Telephony
Project Page https://wiki.mozilla.org/WebAPI/WebTelephony
Next Milestone Target Milestone: --- → mozilla12
Security Resource Paul Theriault

{{#set:Component=Web Telephony |Project=https://wiki.mozilla.org/WebAPI/WebTelephony |Milestone=Target Milestone: --- → mozilla12 |Resource=Paul Theriault }}

Security Information

Status: OK
Securtiy Approved for Beta Launch?: No
Data Flow Diagram: `
Threat Model: `
Bugs: https://bugzilla.mozilla.org/show_bug.cgi?id=674726
Security Review: `
Final Security Approval: no

{{#set:Sectrackerstatus=OK |Simpyn=No |DFD=` |TM=` |bugs=https://bugzilla.mozilla.org/show_bug.cgi?id=674726 |Secreview=` |SecTrackerFSA=no }}

Background

Data Flow Diagram

TDB

Threat Model

<tbody> </tbody>

ID

Title

Threat

Proposed Mitigations

Threat Agent

Rating

Likelihood

Notes

Impact

Notes

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

* 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

* Use phone a bugging device, breach user privacy

* probably would have broader implications

2

Attack from radio network

Malicious service provider or attacker with ability to inject radio packets could attack the web telephony stack.

* Code review

* Fuzzing

Malicious service provider or attacker with ability to inject radio packets

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

* Fuzzing

* Limiting access to API

Malicious web content

*Dangerous since it involves privileged code

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)

* Only high-privileged content process will have access to send dialer IPDL messages

Malicious web content

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

* Only high-privileged content process will have access to send dialer IPDL messages

Malicious web content