Closed
Bug 1424891
Opened 6 years ago
Closed 6 years ago
MOZ_CRASH(Unable to serialize principal.) creating blob uri within moz-icon
Categories
(Firefox :: Untriaged, defect)
Tracking
()
RESOLVED
DUPLICATE
of bug 1424261
People
(Reporter: qab, Unassigned)
Details
(Keywords: sec-other)
Attachments
(1 file)
847 bytes,
text/html
|
Details |
User Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36 Steps to reproduce: Originally reported https://bugzilla.mozilla.org/show_bug.cgi?id=1424261#c5 When attempting to create a blob uri within a moz-icon, a tab crash occurs that indicates possible crash corruption. Actual results: Some frames appear to be hex which may be a sign of memory corruption. https://crash-stats.mozilla.com/report/index/b8b3001b-e0b2-42ec-957d-463540171212 https://crash-stats.mozilla.com/report/index/87bf5f3a-51f0-41fc-a831-4364b0171212 https://crash-stats.mozilla.com/report/index/68a44f6a-88fb-43a2-9431-0a2100171212 Expected results: No crash
Comment 1•6 years ago
|
||
This looks like something's going wrong in IPC/blob land to me, but I'm not an expert. baku/bkelly?
Flags: needinfo?(bkelly)
Flags: needinfo?(amarchesini)
Comment 2•6 years ago
|
||
Andrea is definitely more knowledgeable about blob code. CC'ing a couple more folks who might know about this.
Flags: needinfo?(bkelly)
Comment 3•6 years ago
|
||
The crashes are all intentional crashes at: MOZ_CRASH(Unable to serialize principal.) Weird stacks values like that are probably due to JIT code and are expected. So I don't think there are any memory corruption issues apparent here. It is probably a good idea for somebody to figure out if the principal-related crash has any security implications.
Updated•6 years ago
|
Summary: Possible stack corruption tab crash creating blob uri within moz-icon → MOZ_CRASH(Unable to serialize principal.) creating blob uri within moz-icon
Comment 4•6 years ago
|
||
(In reply to Andrew McCreight [:mccr8] from comment #3) > The crashes are all intentional crashes at: MOZ_CRASH(Unable to serialize > principal.) > > Weird stacks values like that are probably due to JIT code and are expected. > > So I don't think there are any memory corruption issues apparent here. It is > probably a good idea for somebody to figure out if the principal-related > crash has any security implications. This is because this check fails for principals composed of a moz-icon URI, which gets passed as an nsMozIconURI* here (from what I can tell in xcode, anyway): https://dxr.mozilla.org/mozilla-central/rev/93b37aa497c48a6e28a9463eeb753b2ce3964f42/xpcom/io/nsBinaryStream.cpp#323-325 nsCOMPtr<nsIClassInfo> classInfo = do_QueryInterface(aObject); nsCOMPtr<nsISerializable> serializable = do_QueryInterface(aObject); ... if (NS_WARN_IF(!classInfo) || NS_WARN_IF(!serializable)) { return NS_ERROR_NOT_AVAILABLE; } I'm a bit confused by this because: https://dxr.mozilla.org/mozilla-central/rev/93b37aa497c48a6e28a9463eeb753b2ce3964f42/image/decoders/icon/nsIconURI.cpp#69-75 NS_INTERFACE_MAP_BEGIN(nsMozIconURI) NS_INTERFACE_MAP_ENTRY(nsIMozIconURI) NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsISupports, nsIURI) NS_INTERFACE_MAP_ENTRY(nsIURI) NS_INTERFACE_MAP_ENTRY(nsIIPCSerializableURI) NS_INTERFACE_MAP_ENTRY_CONDITIONAL(nsINestedURI, mIconURL) NS_INTERFACE_MAP_END so I don't understand how we implement nsIIPCSerializableURI but not classinfo/serializable, and thus this write fails. URIs themselves seem to be serialized OK. Valentin, you looked at the interface definitions here recently, is this something you understand, and/or do you know someone who does? IPC (de)serialization is not really my area. Note that in bug 1424261 hopefully we finish restricting moz-icon: from content, so it shouldn't be possible to encounter this case with moz-icon. That said, perhaps we need to audit our nsIURI implementations so we ensure we don't run into this with other URIs? Or perhaps I'm just wildly off...
Flags: needinfo?(valentin.gosu)
Comment 5•6 years ago
|
||
(In reply to :Gijs from comment #4) > so I don't understand how we implement nsIIPCSerializableURI but not > classinfo/serializable, and thus this write fails. URIs themselves seem to > be serialized OK. > > Valentin, you looked at the interface definitions here recently, is this > something you understand, and/or do you know someone who does? IPC > (de)serialization is not really my area. So, I didn't look into this too much, but I think the problem here is that nsMozIconURI doesn't implement nsISerializable (which is different from nsIIPCSerializableURI) - which is why serialization fails. > Note that in bug 1424261 hopefully we finish restricting moz-icon: from > content, so it shouldn't be possible to encounter this case with moz-icon. > That said, perhaps we need to audit our nsIURI implementations so we ensure > we don't run into this with other URIs? Or perhaps I'm just wildly off... The only other nsIURI implementation that doesn't implement nsISerializable is NullPrincipalURI.
Flags: needinfo?(valentin.gosu)
Comment 6•6 years ago
|
||
I'm going to mark this sec-other because it sounds like it is not a security issue, but it refers to a sec bug.
Keywords: sec-other
Comment 7•6 years ago
|
||
It seems that this bug cannot be reproduced after bug 1424261. Maybe this bug can be reproduced using a JSM, but not content. valentin, can you confirm it?
Flags: needinfo?(amarchesini) → needinfo?(valentin.gosu)
Comment 8•6 years ago
|
||
Indeed, in Bug 1424261 we disallowed nesting any scheme other than file under moz-icon:// I can't reproduce this bug anymore, and I don't think you can reproduce it in JSM either.
Flags: needinfo?(valentin.gosu)
Comment 9•6 years ago
|
||
Let's close it as dup of bug 1424261.
Status: UNCONFIRMED → RESOLVED
Closed: 6 years ago
Resolution: --- → DUPLICATE
Updated•3 years ago
|
Group: firefox-core-security
You need to log in
before you can comment on or make changes to this bug.
Description
•