<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Arzedlab 🪵</title><link>https://arzedlab.github.io/</link><description>Recent content on Arzedlab 🪵</description><generator>Hugo</generator><language>en-us</language><copyright>© Ravshan</copyright><lastBuildDate>Fri, 28 Nov 2025 00:00:00 +0000</lastBuildDate><atom:link href="https://arzedlab.github.io/index.xml" rel="self" type="application/rss+xml"/><item><title>About Me</title><link>https://arzedlab.github.io/about/</link><pubDate>Fri, 28 Nov 2025 00:00:00 +0000</pubDate><guid>https://arzedlab.github.io/about/</guid><description>&lt;p>My name is Ravshan Rikhsiev, a cybersecurity researcher at &lt;a href="https://onesec.uz">ONESEC&lt;/a> with a technical focus on low-level systems: firmware, kernel subsystems, compilers, reverse engineering, and low-level programming. My research spans vulnerability discovery, exploit development, and methods to make fixes verifiable and safe in production systems. I regularly publish technical posts, present at security workshops, and mentor students because I believe strong communities accelerate learning and responsible research. On this site, you’ll find writeups, tools, and reproducible artifacts from my projects, along with resources for hands-on learning. Off-duty from systems exploration, my passion is cycling, which is where I think, recharge, and plan new outreach initiatives. If you’re interested in collaboration, teaching, or talks, please get in touch.&lt;/p></description></item><item><title>Publications &amp; Papers &amp; Conferences</title><link>https://arzedlab.github.io/papers/</link><pubDate>Fri, 28 Nov 2025 00:00:00 +0000</pubDate><guid>https://arzedlab.github.io/papers/</guid><description>&lt;p>&lt;img src="banner.jpg" alt="Conferences">&lt;/p>
&lt;h1 id="speaker-at-conference">Speaker at Conference&lt;/h1>
&lt;ul>
&lt;li>&lt;strong>KazHackStan 2025, Almaty&lt;/strong> - &amp;ldquo;&lt;a href="https://drive.google.com/file/d/1bGn8_1gQe8DiXqvdhD9rUPpFzaxTAHXd/view?usp=sharing">Uncovering Memory Flaws with Taint Analysis&lt;/a>&amp;rdquo;&lt;/li>
&lt;li>&lt;strong>Positive Hack Talks, Cairo &amp;amp; &lt;a href="https://youtu.be/ETOAjJpOY7E?si=MInsiA9ZSlNgVvf9">Cyberkent 3.0, Tashkent&lt;/a>&lt;/strong> - &amp;ldquo;&lt;a href="https://drive.google.com/file/d/1YyO7knfreQ8Q0JoBqUPhNvQp95W6Z8oh/view?usp=sharing">Unveiling eBPF: Reversing, Exploring the Verifier, and CVEs&lt;/a>&amp;rdquo;&lt;/li>
&lt;/ul>
&lt;h1 id="workshops-conducted">Workshops Conducted&lt;/h1>
&lt;ul>
&lt;li>&lt;strong>Inha University&lt;/strong> - &lt;em>Breaking the Browser: V8 Internals and Exploitation Primitives&lt;/em>&lt;/li>
&lt;li>&lt;strong>Turin Polytechnic University in Tashkent&lt;/strong> - &lt;em>Introduction to Malware Analysis: A Hands-On Workshop&lt;/em>&lt;/li>
&lt;li>&lt;strong>British University in Tashkent&lt;/strong> - &lt;em>Navigating the Cyber Landscape: Basics, Vulnerabilities, and CVEs&lt;/em>&lt;/li>
&lt;/ul>
&lt;h1 id="publications">Publications&lt;/h1>
&lt;ul>
&lt;li>&lt;a href="https://drive.google.com/file/d/1td5uQAc31HeGYQ-JRgYOhyIDvdrx0PxW/view?usp=drive_link">Full-Technical Analysis of DcRAT: Dissecting the Stealth, Persistence, and Power of DarkCrystal RAT&lt;/a>&lt;/li>
&lt;li>&lt;a href="http://arzedlab.github.io/posts/firmware-reverse-engineering-and-analysis-of-route-2b63648c0bf48023a3fec748d42f3844/">Firmware reverse engineering and analysis of router devices&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://drive.google.com/file/d/1YyO7knfreQ8Q0JoBqUPhNvQp95W6Z8oh/view?usp=drive_link">Unveiling eBPF: Reversing, Exploring the Verifier and CVEs&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://drive.google.com/file/d/1bGn8_1gQe8DiXqvdhD9rUPpFzaxTAHXd/view?usp=sharing">Uncovering Memory Flaws with Taint Analysis&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://drive.google.com/file/d/1MdeEnWY1ahlwLMZXCgCPCrBR1TGBQy8R/view?usp=drive_link">CVE-2019 5782 | Incorrect Optimization assumptions in V8&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://drive.google.com/file/d/18v9UvK3WmdWxQztts5TjE_quQHB2m5Eo/view?usp=drive_link">CVE-2020-6418 | Incorrect Optimization Chrome in V8 &lt;/a>&lt;/li>
&lt;li>&lt;a href="https://arzedlab.github.io/posts/cve-2021-38003-the-hole-leak-to-rce-ed84a7ccd2664916bb597042d3423439/">CVE-2021-38003 | The Hole Leak to RCE&lt;/a>&lt;/li>
&lt;li>Linux Kernel Exploitation (&lt;a href="https://arzedlab.github.io/posts/kernel-exploitation-ret2usr-part-1-2063648c0bf4802299a9f392ff3c809b/">1&lt;/a>,&lt;a href="https://arzedlab.github.io/posts/kernel-2-adding-mitigitions-2063648c0bf4808c81cec3f938783649/">2&lt;/a>)&lt;/li>
&lt;/ul></description></item><item><title>Firmware reverse engineering and analysis of router devices</title><link>https://arzedlab.github.io/posts/firmware-reverse-engineering-and-analysis-of-route-2b63648c0bf48023a3fec748d42f3844/</link><pubDate>Mon, 24 Nov 2025 00:00:00 +0000</pubDate><guid>https://arzedlab.github.io/posts/firmware-reverse-engineering-and-analysis-of-route-2b63648c0bf48023a3fec748d42f3844/</guid><description>&lt;h1 id="firmware-reverse-engineering-and-analysis-of-router-devices">Firmware reverse engineering and analysis of router devices&lt;/h1>
&lt;h2 id="intro">Intro&lt;/h2>
&lt;p>First of all, hello everyone. We&amp;rsquo;re here to discuss routers, which are essential devices in our lives. Probably, more people don’t even know what it is. I have always been interested in security. How secure are they? In this post, I will discuss the feasibility of extracting the firmware and attempting to reverse it. Believe me, it is more interesting. In the market, there are routers from high-profile enterprises like Fortinet to budget home brands like TP-Link and Tenda, as well as other Chinese brands.&lt;/p></description></item><item><title>Exploring Integer Overflow: libxml2 Integer Overflow, which leads to OOB</title><link>https://arzedlab.github.io/posts/exploring-integer-overflow-libxml2-integer-overflo-2573648c0bf48058ace1d536b4a81251/</link><pubDate>Fri, 22 Aug 2025 00:00:00 +0000</pubDate><guid>https://arzedlab.github.io/posts/exploring-integer-overflow-libxml2-integer-overflo-2573648c0bf48058ace1d536b4a81251/</guid><description>&lt;h1 id="exploring-integer-overflow-libxml2-integer-overflow-oob">Exploring Integer Overflow: libxml2 Integer Overflow OOB&lt;/h1>
&lt;p>In everyday life, numbers feel endless. You can always count one higher, or subtract one more. But computers don’t work like that. Inside your machine, numbers are stored in &lt;strong>fixed-sized containers&lt;/strong> and when you push them past their limits, strange things happen. When a calculation produces a value that’s too large or too small for its container, we get integer overflow or integer underflow.&lt;/p></description></item><item><title>Linux Kernel Exploitation Part 1: ret2usr</title><link>https://arzedlab.github.io/posts/kernel-exploitation-ret2usr-part-1-2063648c0bf4802299a9f392ff3c809b/</link><pubDate>Thu, 05 Jun 2025 00:00:00 +0000</pubDate><guid>https://arzedlab.github.io/posts/kernel-exploitation-ret2usr-part-1-2063648c0bf4802299a9f392ff3c809b/</guid><description>&lt;h1 id="kernel-exploitation-ret2usr-part-1">Kernel Exploitation ret2usr Part 1&lt;/h1>
&lt;p>&lt;strong>&lt;code>compress.sh&lt;/code> - To extract compressed image from linux&lt;/strong>&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ff79c6">#!/bin/sh
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ff79c6">&lt;/span>gcc -o exploit -static &lt;span style="color:#8be9fd;font-style:italic">$1&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>mv ./exploit ./initramfs
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8be9fd;font-style:italic">cd&lt;/span> initramfs
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>find . -print0 &lt;span style="color:#f1fa8c">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f1fa8c">&lt;/span>| cpio --null -ov --format&lt;span style="color:#ff79c6">=&lt;/span>newc &lt;span style="color:#f1fa8c">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f1fa8c">&lt;/span>| gzip -9 &amp;gt; initramfs.cpio.gz
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>mv ./initramfs.cpio.gz ../
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;strong>&lt;code>run.sh&lt;/code> - Run qemu configuration&lt;/strong>&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ff79c6">#!/bin/sh
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ff79c6">&lt;/span>qemu-system-x86_64 &lt;span style="color:#f1fa8c">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f1fa8c">&lt;/span> -s &lt;span style="color:#f1fa8c">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f1fa8c">&lt;/span> -m 128M &lt;span style="color:#f1fa8c">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f1fa8c">&lt;/span> -cpu kvm64,+smep,+smap &lt;span style="color:#f1fa8c">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f1fa8c">&lt;/span> -kernel vmlinuz &lt;span style="color:#f1fa8c">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f1fa8c">&lt;/span> -initrd initramfs.cpio.gz &lt;span style="color:#f1fa8c">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f1fa8c">&lt;/span> -hdb flag.txt &lt;span style="color:#f1fa8c">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f1fa8c">&lt;/span> -snapshot &lt;span style="color:#f1fa8c">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f1fa8c">&lt;/span> -nographic &lt;span style="color:#f1fa8c">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f1fa8c">&lt;/span> -monitor /dev/null &lt;span style="color:#f1fa8c">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f1fa8c">&lt;/span> -no-reboot &lt;span style="color:#f1fa8c">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f1fa8c">&lt;/span> -append &lt;span style="color:#f1fa8c">&amp;#34;console=ttyS0 quiet panic=1 nosmep nosmap nopti nokaslr&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>As you can see all security mitigations are turned off. &lt;code>-s&lt;/code> flag set for debugging the linux kernel.&lt;/p></description></item><item><title>Linux Kernel Exploitation Part 2: Adding Mitigitions</title><link>https://arzedlab.github.io/posts/kernel-2-adding-mitigitions-2063648c0bf4808c81cec3f938783649/</link><pubDate>Thu, 05 Jun 2025 00:00:00 +0000</pubDate><guid>https://arzedlab.github.io/posts/kernel-2-adding-mitigitions-2063648c0bf4808c81cec3f938783649/</guid><description>&lt;h1 id="kernel-2-adding-mitigitions">Kernel 2: Adding Mitigitions&lt;/h1>
&lt;h2 id="adding-smep">&lt;strong>Adding SMEP&lt;/strong>&lt;/h2>
&lt;p>&lt;code>SMEP&lt;/code>, abbreviated for &lt;a href="https://web.archive.org/web/20160803075007/https://www.ncsi.com/nsatc11/presentations/wednesday/emerging_technologies/fischer.pdf">Supervisor mode execution protection (SMEP)&lt;/a>, is a feature that marks all the userland pages in the page table as non-executable when the process is exectuting in &lt;code>kernel-mode&lt;/code>. In the kernel, this is enabled by setting the &lt;code>20th bit&lt;/code> of Control Register &lt;code>CR4&lt;/code>.&lt;/p>
&lt;p>&lt;img src="image.png" alt="image.png">&lt;/p>
&lt;p>&lt;img src="image%201.png" alt="image.png">&lt;/p>
&lt;h3 id="check-its-in-gdb">Check it&amp;rsquo;s in gdb&lt;/h3>
&lt;p>Run the qemu with &lt;code>-s&lt;/code> and on qemu boot, it can be enabled by adding &lt;code>+smep&lt;/code> to &lt;code>-cpu&lt;/code>, and disabled by adding &lt;code>nosmep&lt;/code> to &lt;code>-append&lt;/code>.&lt;/p></description></item><item><title>EXIM: CVE-2020-28025: Heap out-of-bounds read in pdkim_finish_bodyhash()</title><link>https://arzedlab.github.io/posts/exim-analysis-4-92-1-r-1fc3648c0bf4804d9828e1aa08614f70/</link><pubDate>Mon, 26 May 2025 00:00:00 +0000</pubDate><guid>https://arzedlab.github.io/posts/exim-analysis-4-92-1-r-1fc3648c0bf4804d9828e1aa08614f70/</guid><description>&lt;h1 id="exim-analysis-4921-r">EXIM: Analysis 4.92.1-R&lt;/h1>
&lt;p>This is just as re-analysis to better understand, the reporter and author of there vulnerabileties is company Qualys official link: &lt;a href="https://www.qualys.com/2021/05/04/21nails/21nails.txt">https://www.qualys.com/2021/05/04/21nails/21nails.txt&lt;/a>&lt;/p>
&lt;h2 id="cve-2020-28025-heap-out-of-bounds-read-in-pdkim_finish_bodyhash">CVE-2020-28025: Heap out-of-bounds read in pdkim_finish_bodyhash()&lt;/h2>
&lt;ol>
&lt;li>Callers of &lt;code>pdkim_finish_bodyhash()&lt;/code>&lt;/li>
&lt;/ol>
&lt;p>&lt;code>main()&lt;/code> → &lt;code>receive_msg()&lt;/code> → &lt;code>dkim_exim_verify_finish()&lt;/code>&lt;/p>
&lt;p>&lt;code>dkim_exim_verify_finish()&lt;/code> be called to verify DKIM (DomainKeys Identified Mail)
signature, then calls &lt;code>pdkim_feed_finish()&lt;/code> &lt;strong>, which calls&lt;/strong> &lt;code>pdkim_finish_bodyhash()&lt;/code>&lt;/p>
&lt;ol>
&lt;li>DKIM (DomainKeys Identified Mail) looks like this.&lt;/li>
&lt;/ol>
&lt;p>&lt;img src="image.png" alt="image.png">&lt;/p>
&lt;p>Code of the function &lt;code>pdkim_finish_bodyhash()&lt;/code>&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>...
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> /* VERIFICATION --------------------------------------------------------- */
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> /* Be careful that the header sig included a bodyash */
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">if&lt;/span> &lt;span style="color:#ff79c6">(&lt;/span> sig-&amp;gt;bodyhash.data
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">&amp;amp;&amp;amp;&lt;/span> memcmp&lt;span style="color:#ff79c6">(&lt;/span>b-&amp;gt;bh.data, sig-&amp;gt;bodyhash.data, b-&amp;gt;bh.len&lt;span style="color:#ff79c6">)&lt;/span> &lt;span style="color:#ff79c6">==&lt;/span> 0&lt;span style="color:#ff79c6">)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">{&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> DEBUG&lt;span style="color:#ff79c6">(&lt;/span>D_acl&lt;span style="color:#ff79c6">)&lt;/span> debug_printf&lt;span style="color:#ff79c6">(&lt;/span>&lt;span style="color:#f1fa8c">&amp;#34;PDKIM [%s] Body hash compared OK\n&amp;#34;&lt;/span>, sig-&amp;gt;domain&lt;span style="color:#ff79c6">)&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">}&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">else&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">{&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> DEBUG&lt;span style="color:#ff79c6">(&lt;/span>D_acl&lt;span style="color:#ff79c6">)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">{&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>	debug_printf&lt;span style="color:#ff79c6">(&lt;/span>&lt;span style="color:#f1fa8c">&amp;#34;PDKIM [%s] Body hash signature from headers: &amp;#34;&lt;/span>, sig-&amp;gt;domain&lt;span style="color:#ff79c6">)&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>	pdkim_hexprint&lt;span style="color:#ff79c6">(&lt;/span>sig-&amp;gt;bodyhash.data, sig-&amp;gt;bodyhash.len&lt;span style="color:#ff79c6">)&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>	debug_printf&lt;span style="color:#ff79c6">(&lt;/span>&lt;span style="color:#f1fa8c">&amp;#34;PDKIM [%s] Body hash did NOT verify\n&amp;#34;&lt;/span>, sig-&amp;gt;domain&lt;span style="color:#ff79c6">)&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>	&lt;span style="color:#ff79c6">}&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> sig-&amp;gt;verify_status &lt;span style="color:#ff79c6">=&lt;/span> PDKIM_VERIFY_FAIL;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> sig-&amp;gt;verify_ext_status &lt;span style="color:#ff79c6">=&lt;/span> PDKIM_VERIFY_FAIL_BODY;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">}&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>...
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Unfortunately, at line 826, &lt;code>sig-&amp;gt;bodyhash.data&lt;/code> is attacker-controlled (through a &amp;ldquo;DKIM-Signature:&amp;rdquo; mail header) and &lt;code>memcmp()&lt;/code> is called without checking first that &lt;code>sig-&amp;gt;bodyhash.len&lt;/code> is equal to &lt;code>b-&amp;gt;bh.len&lt;/code>: &lt;code>memcmp()&lt;/code> can read &lt;code>sig-&amp;gt;bodyhash.data&lt;/code> out-of-bounds. If the &lt;code>acl_smtp_dkim&lt;/code> is set (it is unset by default), an unauthenticated remote attacker may transform this vulnerability into an information disclosure; we have not fully explored this possibility.&lt;/p></description></item><item><title>Android Cheatsheet</title><link>https://arzedlab.github.io/posts/android-cheatsheet-1c03648c0bf480faa82cfb135d983ae5/</link><pubDate>Fri, 17 Jan 2025 11:13:32 +0500</pubDate><guid>https://arzedlab.github.io/posts/android-cheatsheet-1c03648c0bf480faa82cfb135d983ae5/</guid><description>&lt;h3 id="android-root-in-genymotion">Android root in Genymotion&lt;/h3>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>adb shell setprop persist.sys.root_access &lt;span style="color:#bd93f9">3&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="setting-up-your-android-device">&lt;strong>Setting up your Android device&lt;/strong>&lt;/h3>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>$ adb shell getprop ro.product.cpu.abilist &lt;span style="color:#6272a4"># check your device cpu type&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>$ unxz frida-server.xz
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>$ adb root &lt;span style="color:#6272a4"># might be required&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>$ adb push frida-server /data/local/tmp/
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>$ adb shell &lt;span style="color:#f1fa8c">&amp;#34;chmod 755 /data/local/tmp/frida-server&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>$ adb shell &lt;span style="color:#f1fa8c">&amp;#34;/data/local/tmp/frida-server &amp;amp;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>$ frida-ps -U
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>frida -U -l multi-bypass.js -f uz.paynet.flagship_mobile
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="downloading-and-merging-apks">Downloading And Merging APKs&lt;/h3>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-java" data-lang="java">&lt;span style="display:flex;">&lt;span>adb shell pm list packages &lt;span style="color:#ff79c6">-&lt;/span>3 &lt;span style="color:#ff79c6">|&lt;/span> grep telegram
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>$ adb
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>One command&lt;/p></description></item><item><title>Linux Heap Exploitation internals</title><link>https://arzedlab.github.io/posts/linux-heap-exploitation-internals-17a3648c0bf480eda8dcc5f521e1351b/</link><pubDate>Tue, 14 Jan 2025 00:00:00 +0000</pubDate><guid>https://arzedlab.github.io/posts/linux-heap-exploitation-internals-17a3648c0bf480eda8dcc5f521e1351b/</guid><description>&lt;h2 id="lifo-and-fifo">LIFO AND FIFO&lt;/h2>
&lt;p>&lt;img src="image.png" alt="image.png">&lt;/p>
&lt;p>LIFO (Last-In, First-Out) and FIFO (First-In, First-Out) are two fundamental methods for managing data structures, each with distinct characteristics and applications.&lt;/p>
&lt;p>&lt;strong>LIFO (Last-In, First-Out):&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Structure:&lt;/strong> Commonly implemented using a stack, where the most recently added item is the first to be removed.&lt;/li>
&lt;li>&lt;strong>Analogy:&lt;/strong> Think of a stack of plates; you add and remove plates from the top.&lt;/li>
&lt;li>&lt;strong>Applications:&lt;/strong>
&lt;ul>
&lt;li>&lt;strong>Memory Management:&lt;/strong> Utilized in function call management and recursive processes, where the last called function is the first to return.&lt;/li>
&lt;li>&lt;strong>Undo Functionality:&lt;/strong> In applications like text editors, the last action performed is the first to be undone.&lt;/li>
&lt;li>&lt;strong>Browser History:&lt;/strong> The most recently visited page is the first to be revisited when navigating backward.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>FIFO (First-In, First-Out):&lt;/strong>&lt;/p></description></item><item><title>Linux Heap Exploitation: Unsafe Unlink</title><link>https://arzedlab.github.io/posts/unsafe-unlink-1483648c0bf48032a944dc2bc36b5207/</link><pubDate>Tue, 14 Jan 2025 00:00:00 +0000</pubDate><guid>https://arzedlab.github.io/posts/unsafe-unlink-1483648c0bf48032a944dc2bc36b5207/</guid><description>&lt;h1 id="unsafe-unlink">Unsafe Unlink&lt;/h1>
&lt;h1 id="introduction">Introduction&lt;/h1>
&lt;p>The &amp;ldquo;Unsafe Unlink&amp;rdquo; technique is a heap exploitation attack that was once quite common. It involves manipulating the unlink macro in &lt;code>malloc.c&lt;/code> to remove a chunk from a bin. This attack exploits the pointer manipulation done in the unlink macro, which can lead to arbitrary code execution or other malicious activities.&lt;/p>
&lt;p>When we free allocated unsorted bin, it will be freed from a doubly linked list.&lt;/p>
&lt;p>A doubly linked list is a type of data structure that consists of a sequence of elements, where each element (or node) contains three parts:&lt;/p></description></item><item><title>write4 | ROPEmporium [4]</title><link>https://arzedlab.github.io/posts/ropemporium_write4/</link><pubDate>Tue, 12 Nov 2024 15:45:36 +0500</pubDate><guid>https://arzedlab.github.io/posts/ropemporium_write4/</guid><description>Functions themselves are in an external library we should call it from there. Imported files proves the command &lt;code>rabin2 -i &amp;lt;binary&amp;gt;&lt;/code></description></item><item><title>callme | ROPEmporium [3]</title><link>https://arzedlab.github.io/posts/ropemporium_callme/</link><pubDate>Tue, 12 Nov 2024 15:19:36 +0500</pubDate><guid>https://arzedlab.github.io/posts/ropemporium_callme/</guid><description>Ok we have three functions, and we should call them with arguments, which are given, there are &lt;code>0xdeadbeef&lt;/code>, &lt;code>0xcafebabe&lt;/code>, &lt;code>0xd00df00d&lt;/code> . Functions itself are in external library we should call them one by one. Buffer overflow offset is the same, and &lt;code>checksec&lt;/code></description></item><item><title>split | ROPEmporium [2]</title><link>https://arzedlab.github.io/posts/ropemporium-split/</link><pubDate>Tue, 12 Nov 2024 14:20:25 +0500</pubDate><guid>https://arzedlab.github.io/posts/ropemporium-split/</guid><description>In this challenge, we should run system() function with argument &lt;code>/bin/cat flag.txt&lt;/code></description></item><item><title>ret2win | ROPEmporium [1]</title><link>https://arzedlab.github.io/posts/ropemporium-ret2win/</link><pubDate>Mon, 11 Nov 2024 11:41:24 +0500</pubDate><guid>https://arzedlab.github.io/posts/ropemporium-ret2win/</guid><description>One common introductory ROP challenge is known as &lt;strong>ret2win&lt;/strong>. The goal is to call a specific function in the program called &lt;code>ret2win&lt;/code>, which prints a success message and reveal a flag.txt</description></item><item><title>Full-Technical Analysis of DcRAT: Dissecting the Stealth, Persistence, and Power of DarkCrystal RAT</title><link>https://arzedlab.github.io/posts/full-technical-analysis-of-dcrat-dissecting-the-st-3a62fe4b93c34c30974b500a24fc7483/</link><pubDate>Sat, 31 Aug 2024 00:00:00 +0000</pubDate><guid>https://arzedlab.github.io/posts/full-technical-analysis-of-dcrat-dissecting-the-st-3a62fe4b93c34c30974b500a24fc7483/</guid><description>&lt;h1 id="ioc">IOC&lt;/h1>
&lt;p>Malicious file: “Огохланитриш_хати06.08.2024.pdf.exe_”&lt;/p>
&lt;p>Hashes&lt;/p>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>&lt;strong>Тип&lt;/strong>&lt;/th>
 &lt;th>&lt;strong>Значения&lt;/strong>&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>MD5&lt;/td>
 &lt;td>2cdb1d87940645acadcec093307b91dd&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>SHA1&lt;/td>
 &lt;td>fb16cec8b295ad76ff7ecbc1aa769e6553c7e5ba&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>SHA256&lt;/td>
 &lt;td>e6e93d2ec20e1aec2db995ae2a98eb35231d0b80564d257e4d9b87b0cbfc95af&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;p>&lt;strong>Загруженные исполняемые файлы&lt;/strong>&lt;/p>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>&lt;strong>Путь&lt;/strong>&lt;/th>
 &lt;th>&lt;strong>SHA256 Hash&lt;/strong>&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>C:\Users\username\AppData\Roaming\2ZbCeAH0wY.exe&lt;/td>
 &lt;td>caf29650446db3842e1c1e8e5e1bafadaf90fc82c5c37b9e2c75a089b7476131&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>C:\Users\username\AppData\Roaming\NjcXx3wcvK.exe&lt;/td>
 &lt;td>7526e43bb967b29c8a3afbb4ae23a86184f5eadf4279dace89c18946b2e63a9e&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>C:\Users\username\Desktop\RgkotKHZ.log&lt;/td>
 &lt;td>aab95596475ca74cede5ba50f642d92fa029f6f74f6faeae82a9a07285a5fb97&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>C:\Users\usernam\Desktop\MliXleSf.log&lt;/td>
 &lt;td>1f02230a8536adb1d6f8dadfd7ca8ca66b5528ec98b15693e3e2f118a29d49d8&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;h3 id="dns-requests">&lt;strong>DNS requests&lt;/strong>&lt;/h3>
&lt;p>&lt;strong>Domain&lt;/strong>&lt;/p>
&lt;hr>
&lt;p>476072cm[.]nyashsens[.]top&lt;/p>
&lt;hr>
&lt;h2 id="ip-addresses">IP addresses&lt;/h2>
&lt;hr>
&lt;p>20.166.126.56&lt;/p>
&lt;hr>
&lt;p>95.101.149.131&lt;/p>
&lt;hr>
&lt;p>80.211.144.156&lt;/p>
&lt;hr>
&lt;h3 id="httphttps-requests">&lt;strong>HTTP/HTTPS requests&lt;/strong>&lt;/h3>
&lt;p>&lt;strong>URL&lt;/strong>&lt;/p>
&lt;hr>
&lt;p>hxxp[://]476072cm[.]nyashsens[.]top/ExternalRequestUpdateMultiuniversallocal[.]php&lt;/p>
&lt;hr>
&lt;p>hxxp[://]ocsp[.]digicert[.]com/MFEwTzBNMEswSTAJBgUrDgMCGgUABBSAUQYBMq2awn1Rh6Doh%2FsBYgFV7gQUA95QNVbRTLtm8KPiGxvDl7I90VUCEAJ0LqoXyo4hxxe7H%2Fz9DKA%3D&lt;/p>
&lt;hr>
&lt;p>hxxp[://]www[.]microsoft[.]com/pkiops/crl/Microsoft%20ECC%20Product%20Root%20Certificate%20Authority%202018[.]crl&lt;/p>
&lt;hr>
&lt;p>hxxp[://]www[.]microsoft[.]com/pkiops/crl/Microsoft%20ECC%20Update%20Secure%20Server%20CA%202[.]1[.]crl&lt;/p>
&lt;hr>
&lt;h1 id="introduction">Introduction&lt;/h1>
&lt;p>DCrat (Dark Crystal RAT) is an advanced remote access trojan that first appeared in 2018 and has since been used by threat actors in a variety of cyberattacks. DCrat is notable for its modular architecture, which lets attackers enable or disable features according to the goals of a campaign.&lt;/p></description></item><item><title>How to catch smart hackers? Honeypots</title><link>https://arzedlab.github.io/posts/how-catch-smart-hackers-honeypots-7e5ba95f6f814015be907b6dc22f3476/</link><pubDate>Thu, 20 Jun 2024 00:00:00 +0000</pubDate><guid>https://arzedlab.github.io/posts/how-catch-smart-hackers-honeypots-7e5ba95f6f814015be907b6dc22f3476/</guid><description>&lt;h1 id="honeypot-an-advanced-cybersecurity-strategy-understanding-the-concept-of-a-honeypot">Honeypot: An Advanced Cybersecurity Strategy, understanding the Concept of a Honeypot&lt;/h1>
&lt;p>In the vast landscape of cybersecurity, the term &lt;strong>&amp;ldquo;honeypot&amp;rdquo;&lt;/strong> often crops up. But what exactly is a honeypot, and why is it so vital in the world of computer security? Let’s dive into this intriguing concept, breaking it down into easily digestible pieces.&lt;/p>
&lt;h2 id="the-lure-of-the-honeypot">The Lure of the Honeypot&lt;/h2>
&lt;p>Imagine a jar of honey left out in the open. It’s sweet, tempting, and irresistible to anyone who happens to stumble upon it. In the digital world, a honeypot works similarly. It’s a system or a network deliberately set up to attract cyber attackers, just like the honey attracts bees. However, unlike the real honey which is meant to be consumed, a honeypot is there to watch, learn, and trap malicious actors.&lt;/p></description></item><item><title>Heap Overflow in assimp</title><link>https://arzedlab.github.io/posts/heap-overflow-%236019-1cc3648c0bf480caa958ecd9ef36c0f4/</link><pubDate>Fri, 05 Apr 2024 00:00:00 +0000</pubDate><guid>https://arzedlab.github.io/posts/heap-overflow-%236019-1cc3648c0bf480caa958ecd9ef36c0f4/</guid><description>&lt;h1 id="heap-overflow-6019">Heap Overflow #6019&lt;/h1>
&lt;h2 id="bug-heap-based-buffer-overflow-in-ai_md5_parse_string_in_quotation">&lt;strong>Bug: Heap-based Buffer Overflow in AI_MD5_PARSE_STRING_IN_QUOTATION&lt;/strong>&lt;/h2>
&lt;p>Source: &lt;a href="https://github.com/assimp/assimp/issues/6019">https://github.com/assimp/assimp/issues/6019&lt;/a>&lt;/p>
&lt;h3 id="summary">Summary&lt;/h3>
&lt;p>heap buffer overflow in &lt;code>AI_MD5_PARSE_STRING_IN_QUOTATION&lt;/code>. An attacker could potentially exploit the vulnerability to cause a remote code execution, if they can trick the victim into running assimp on a malformed MD5 file.&lt;/p>
&lt;p>Heap Overflow was caused by function &lt;code>memcpy&lt;/code>&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-diff" data-lang="diff">&lt;span style="display:flex;">&lt;span>MEMCPY(3) Linux Programmer&amp;#39;s Manual MEMCPY(3)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>NAME
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> memcpy - copy memory area
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>SYNOPSIS
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> #include &amp;lt;string.h&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> void *memcpy(void *dest, const void *src, size_t n);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>DESCRIPTION
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> The memcpy() function copies n bytes from memory area src to memory area dest. The memory areas must not overlap. Use memmove(3) if the memory areas do overlap.
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>RETURN VALUE
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> The memcpy() function returns a pointer to dest.
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>ATTRIBUTES
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> For an explanation of the terms used in this section, see attributes(7).
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="acid-flow">ACID FLOW&lt;/h3>
&lt;p>ASAN giving heap overflow error in fucntion AI_MD5_PARSE_STRING_IN_QUOTATION&lt;/p></description></item><item><title>CVE-2021-38003 The Hole Leak to RCE</title><link>https://arzedlab.github.io/posts/cve-2021-38003-the-hole-leak-to-rce-ed84a7ccd2664916bb597042d3423439/</link><pubDate>Sat, 30 Mar 2024 00:00:00 +0000</pubDate><guid>https://arzedlab.github.io/posts/cve-2021-38003-the-hole-leak-to-rce-ed84a7ccd2664916bb597042d3423439/</guid><description>&lt;h1 id="cve-2021-38003--the-hole-leak-to-rce">CVE-2021-38003 | The Hole Leak to RCE&lt;/h1>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>&lt;strong>Type Of Vulnerability&lt;/strong>&lt;/th>
 &lt;th>The Hole Leak&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>&lt;strong>Security Severity&lt;/strong>&lt;/td>
 &lt;td>&lt;strong>High&lt;/strong>&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;strong>Effected Components&lt;/strong>&lt;/td>
 &lt;td>&lt;strong>Javascript, Turbofan&lt;/strong>&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;strong>Issue Source&lt;/strong>&lt;/td>
 &lt;td>&lt;a href="https://issues.chromium.org/issues/40057710">https://issues.chromium.org/issues/40057710&lt;/a>&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;strong>Writeup Source(s)&lt;/strong>&lt;/td>
 &lt;td>None&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;strong>Tested Version&lt;/strong>&lt;/td>
 &lt;td>Google Chrome 95.0.4638.54 (Official Build) (x86_64)&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;strong>Vulnerable commit&lt;/strong>&lt;/td>
 &lt;td>a4252db3228433fed5c2bdb0fdff9a6b7b638f3b&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;h1 id="deep-dive-into-vulnerability">Deep Dive Into Vulnerability&lt;/h1>
&lt;p>[1] The vulnerability arises as V8 attempts to handle exceptions in &lt;code>JSON.stringify()&lt;/code>. If a exception appears in the built-in function, &lt;code>pending_exception_&lt;/code> is set by the &lt;code>Isolate::set_pending_exception()&lt;/code> method. The calling code then moves to the V8 exception handling mechanism, where the &lt;code>Isolate::pending_exception()&lt;/code> member is fetched from the active isolate and the currently active JavaScript exception handler is invoked using it.&lt;/p></description></item><item><title>CVE-2020-6418 Type Confusion V8</title><link>https://arzedlab.github.io/posts/cve-2020-6418-incorrect-optimization-52d04cb78c1e47608e7874b83db5dcce/</link><pubDate>Fri, 02 Feb 2024 13:13:13 +0500</pubDate><guid>https://arzedlab.github.io/posts/cve-2020-6418-incorrect-optimization-52d04cb78c1e47608e7874b83db5dcce/</guid><description>&lt;h1 id="cve-2020-6418--incorrect-optimization">CVE-2020-6418 | Incorrect Optimization&lt;/h1>
&lt;h2 id="research-done-by-ravshan-rikhsiev-2023">&lt;strong>Research Done By Ravshan Rikhsiev (2023)&lt;/strong>&lt;/h2>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>&lt;strong>Type Of Vulnerability&lt;/strong>&lt;/th>
 &lt;th>Type Confusion&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>&lt;strong>Security Severity&lt;/strong>&lt;/td>
 &lt;td>&lt;strong>High&lt;/strong>&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;strong>Effected Components&lt;/strong>&lt;/td>
 &lt;td>&lt;strong>Javascript, Turbofan, Optimizer&lt;/strong>&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;strong>Issue Source&lt;/strong>&lt;/td>
 &lt;td>&lt;a href="https://issues.chromium.org/issues/40051542">https://issues.chromium.org/issues/40051542&lt;/a>&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;strong>Writeup Source(s)&lt;/strong>&lt;/td>
 &lt;td>Later&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;strong>Tested Version&lt;/strong>&lt;/td>
 &lt;td>V8 8.2.0&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;strong>Vulnerable commit&lt;/strong>&lt;/td>
 &lt;td>bdaa7d66a37adcc1f1d81c9b0f834327a74ffe07&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;p>&lt;strong>CVE-2020-6418&lt;/strong> is a security vulnerability that was identified in the V8 JavaScript engine, which is used in various web browsers including Google Chrome. This vulnerability was &lt;em>reported by Clement Lecigne of Google&amp;rsquo;s Threat Analysis Group on 2020-02-18&lt;/em> [1] and assigned CVE-2020-6418. It was classified as a type confusion bug in the V8 engine.&lt;/p></description></item><item><title>CVE-2019-5782 Out-Of-Bounds V8</title><link>https://arzedlab.github.io/posts/cve-2019-5782-oob-v8-f710491993d8478483ca99402710ec07/</link><pubDate>Fri, 01 Dec 2023 13:13:13 +0500</pubDate><guid>https://arzedlab.github.io/posts/cve-2019-5782-oob-v8-f710491993d8478483ca99402710ec07/</guid><description>&lt;h1 id="cve-2019-5782--oob-v8">CVE-2019-5782 | OOB V8&lt;/h1>
&lt;h1 id="research-done-by-ravshan-rikhsiev-2023">Research Done By &lt;strong>Ravshan Rikhsiev&lt;/strong> (2023)&lt;/h1>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>&lt;strong>Type Of Vulnerability&lt;/strong>&lt;/th>
 &lt;th>&lt;strong>Out-Of-Bounds&lt;/strong>&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>&lt;strong>Security Severity&lt;/strong>&lt;/td>
 &lt;td>&lt;strong>High&lt;/strong>&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;strong>Effected Components&lt;/strong>&lt;/td>
 &lt;td>&lt;strong>Javascript, Turbofan, Compiler&lt;/strong>&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;strong>Issue Source&lt;/strong>&lt;/td>
 &lt;td>&lt;a href="https://bugs.chromium.org/p/chromium/issues/detail?id=906043">https://bugs.chromium.org/p/chromium/issues/detail?id=906043&lt;/a>&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;strong>Writeup Source(s)&lt;/strong>&lt;/td>
 &lt;td>None&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;strong>Tested Version&lt;/strong>&lt;/td>
 &lt;td>V8 7.3.0&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;strong>Vulnerable commit&lt;/strong>&lt;/td>
 &lt;td>18b28402118b7918512c3e5b6bc5c6f348d43564&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;h1 id="building">Building&lt;/h1>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>mkdir v8
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8be9fd;font-style:italic">cd&lt;/span> v8
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>fetch v8
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8be9fd;font-style:italic">cd&lt;/span> v8
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#6272a4"># Moving into vulnerable commit&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>git checkout 18b28402118b7918512c3e5b6bc5c6f348d43564
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#6272a4"># Sync depot tools&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>gclient sync -D
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#6272a4"># Installing dependencies &lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>build/install-build-deps.sh
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#6272a4"># Installing ninja to build&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>sudo apt install -y ninja-build
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#6272a4"># Release and Debug versions of V8&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>tools/dev/gm.py x64.release; tools/dev/gm.py x64.debug
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h1 id="incorrect-optimization-assumptions-in-v8">&lt;strong>Incorrect optimization assumptions in V8&lt;/strong>&lt;/h1>
&lt;p>&lt;strong>Turbofan&lt;/strong> is an optimizing compiler in the &lt;strong>V8&lt;/strong> JavaScript engine. It translates JavaScript code into highly optimized machine code for better performance. It uses various techniques, such as inlining functions, optimizing data types, and eliminating unnecessary operations, to generate efficient code. This helps improve the execution speed of JavaScript programs running in V8.&lt;/p></description></item><item><title>V8 Internals: Tree</title><link>https://arzedlab.github.io/posts/v8-internals-ebdb3b1b2bdd4cc58f6f1d68382360b6/</link><pubDate>Sat, 05 Aug 2023 00:00:00 +0000</pubDate><guid>https://arzedlab.github.io/posts/v8-internals-ebdb3b1b2bdd4cc58f6f1d68382360b6/</guid><description>&lt;h1 id="v8-source-tree">V8 source tree&lt;/h1>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-cpp" data-lang="cpp">&lt;span style="display:flex;">&lt;span>v8&lt;span style="color:#ff79c6">/&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>├─ src&lt;span style="color:#ff79c6">/&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>│ ├─ [api]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>│ ├─ [asmjs]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>│ ├─ [ast]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>│ ├─ [base]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>│ ├─ [baseline]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>│ ├─ [bigint]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>│ ├─ [builtins]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>│ ├─ [codegen]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>│ ├─ [common]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>│ ├─ [compiler&lt;span style="color:#ff79c6">-&lt;/span>dispatcher]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>│ ├─ [compiler]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>│ ├─ [d8]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>│ ├─ [date]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>│ ├─ [debug]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>│ ├─ [deoptimizer]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>│ ├─ [diagnostics]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>│ ├─ [execution]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>│ ├─ [extensions]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>│ ├─ [flags]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>│ ├─ [fuzzilli]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>│ ├─ [handles]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>│ ├─ [heap]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>│ ├─ [ic]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>│ ├─ [init]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>│ ├─ [inspector]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>│ ├─ [interpreter]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>│ ├─ [json]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>│ ├─ [libplatform]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>│ ├─ [libsampler]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>│ ├─ [logging]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>│ ├─ [maglev]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>│ ├─ [numbers]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>│ ├─ [objects]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>│ ├─ [parsing]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>│ ├─ [profiler]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>│ ├─ [protobuf]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>│ ├─ [regexp]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>│ ├─ [roots]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>│ ├─ [runtime]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>│ ├─ [sandbox]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>│ ├─ [snapshot]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>│ ├─ [strings]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>│ ├─ [tasks]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>│ ├─ [temporal]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>│ ├─ [third_party]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>│ ├─ [torque]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>│ ├─ [tracing]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>│ ├─ [trap&lt;span style="color:#ff79c6">-&lt;/span>handler]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>│ ├─ [utils]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>│ ├─ [wasm]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>│ ├─ [zone]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>├─ third_party&lt;span style="color:#ff79c6">/&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="v8srcapi">&lt;code>v8/src/api&lt;/code>&lt;/h2>
&lt;p>The &lt;code>v8/src/api&lt;/code> directory in the V8 codebase is part of the V8 API. The V8 API provides functions for compiling and executing scripts, accessing C++ methods and data structures, handling errors, and enabling security checks¹.&lt;/p></description></item><item><title>Getting Started with Embedding V8</title><link>https://arzedlab.github.io/posts/getting-started-with-embedding-v8-a91a35cbf98c46c08dde76f3f5958406/</link><pubDate>Thu, 06 Jul 2023 00:00:00 +0000</pubDate><guid>https://arzedlab.github.io/posts/getting-started-with-embedding-v8-a91a35cbf98c46c08dde76f3f5958406/</guid><description>&lt;h1 id="getting-started-with-embedding-v8">Getting Started with Embedding V8&lt;/h1>
&lt;h2 id="installing--testing-standalone-v8-application">Installing &amp;amp; Testing Standalone V8 application&lt;/h2>
&lt;ol>
&lt;li>Download the V8 source code&lt;/li>
&lt;li>Create a build configuration using the helper script:&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>tools/dev/v8gen.py x64.release.sample
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ol>
&lt;li>You can inspect and manually edit the build configuration by running:&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>gn args out.gn/x64.release.sample 
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ol>
&lt;li>Build the static library on a Linux 64 system:&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>ninja -C out.gn/x64.release.sample v8_monolith
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ol>
&lt;li>Compile &lt;code>hello-world.cc&lt;/code>, linking to the static library created in the build process. For example, on 64bit Linux using the GNU compiler:&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>g++ -I. -Iinclude samples/hello-world.cc -o hello_world -fno-rtti -lv8_monolith -lv8_libbase -lv8_libplatform -ldl -Lout.gn/x64.release.sample/obj/ -pthread -std&lt;span style="color:#ff79c6">=&lt;/span>c++17 -DV8_COMPRESS_POINTERS -DV8_ENABLE_SANDBOX
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ol>
&lt;li>For more complex code, V8 fails without an ICU data file. Copy this file to where your binary is stored:&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>cp out.gn/x64.release.sample/icudtl.dat .
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ol>
&lt;li>Run the &lt;code>hello_world&lt;/code> executable file at the command line. e.g. On Linux, in the V8 directory, run:&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>./hello_world
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>V8 as a standalone virtual machine has some key V8 concepts such as &lt;strong>handles&lt;/strong>, &lt;strong>scopes&lt;/strong>, and &lt;strong>contexts.&lt;/strong> The V8 API provides functions for compiling and executing scripts, accessing C++ methods and data structures, handling errors, and enabling security checks. Your application can use V8 just like any other C++ library. Your C++ code accesses V8 through the V8 API by including the header &lt;code>include/v8.h&lt;/code>.&lt;/p></description></item><item><title>CVE-2021-36414: heap-buffer-overflow MP4Box</title><link>https://arzedlab.github.io/posts/cve-2021-36414-1cb3648c0bf480a3b897cfdfea0a9efc/</link><pubDate>Tue, 04 Apr 2023 00:00:00 +0000</pubDate><guid>https://arzedlab.github.io/posts/cve-2021-36414-1cb3648c0bf480a3b897cfdfea0a9efc/</guid><description>&lt;h1 id="cve-2021-36414">CVE-2021-36414&lt;/h1>
&lt;p>A heap-buffer-overflow has occurred when running program MP4Box,which leads to a Deny of Service caused by dividing zero without sanity check,this can reproduce on the lattest commit.&lt;/p>
&lt;p>Here: the main problem is dividing into zero&lt;/p>
&lt;p>&lt;img src="image.png" alt="image.png">&lt;/p>
&lt;p>&lt;strong>Assigning &lt;code>block_size&lt;/code>:&lt;/strong>&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-c" data-lang="c">&lt;span style="display:flex;">&lt;span>block_size &lt;span style="color:#ff79c6">=&lt;/span> ent &lt;span style="color:#ff79c6">?&lt;/span> ent&lt;span style="color:#ff79c6">-&amp;gt;&lt;/span>&lt;span style="color:#8be9fd;font-style:italic">sampleDelta&lt;/span> : &lt;span style="color:#bd93f9">160&lt;/span>;
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ul>
&lt;li>This line uses the conditional (ternary) operator to assign a value to &lt;code>block_size&lt;/code>.&lt;/li>
&lt;li>It checks if &lt;code>ent&lt;/code> is not &lt;code>NULL&lt;/code>.
&lt;ul>
&lt;li>If &lt;code>ent&lt;/code> is valid (i.e., not &lt;code>NULL&lt;/code>), &lt;code>block_size&lt;/code> is assigned the value of &lt;code>ent-&amp;gt;sampleDelta&lt;/code>.&lt;/li>
&lt;li>If &lt;code>ent&lt;/code> is &lt;code>NULL&lt;/code>, &lt;code>block_size&lt;/code> is assigned a default value of &lt;code>160&lt;/code>.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;h2 id="fix">Fix&lt;/h2>
&lt;p>&lt;img src="image%201.png" alt="image.png">&lt;/p></description></item><item><title/><link>https://arzedlab.github.io/archives/</link><pubDate>Tue, 28 May 2019 00:00:00 +0000</pubDate><guid>https://arzedlab.github.io/archives/</guid><description/></item></channel></rss>