Security researcher uncovered a critical remote code execution vulnerability in OpenWrt operating system that allows attackers to inject the malicious payload on the vulnerable systems.
OpenWrt is a Linux based operating system that is mainly used in embedded devices and network routers to route the network traffic and is installed on millions of devices around the globe.
The RCE bug addressed in the package list parse the logic of OpenWrt’s opkg (Opkg Package Manager) fork let package manager ignore the SHA-256 checksums embedded in the signed repository index which allows an attacker to bypass the integrity checking of downloaded .ipk artifacts.
Guido Vranken, a researcher explained that he found this vulnerability initially by chance when he was preparing a Mayhem task for opkg. Mayhem can serve data either from a file or from a network socket.
” I set up a Mayhem task for opkg install attr (attr is a small OpenWRT package), and implicitly, Mayhem was able to find the remote code execution bug, by detecting the memory bugs in the package unpacker. If OpenWRT’s SHA256 verification had worked as intended, opkg would simply discard the package and not process it, and no segmentation faults would transpire,” researcher said.
OpenWRT RCE Vulnerability Exploitation Process
To exploit this RCE vulnerability, the attacker needs to serve compromised packages from a web server and need to intercept communication between the device and downloads.openwrt.org or the ability to control the DNS server that used by the device to make downloads.openwrt.org point to a web server controlled by the attacker.
In fact, opkg on OpenWrt running as root that allows attackers to gain the write access to the entire file systems and inject the arbitrary code remotely by forged .ipk packages with a malicious payload.
According to OpenWRT bug fix report “During the attack, a malicious actor needs to pose as MITM, serving a valid and signed package index – e.g. one obtained from downloads.openwrt.org – and one or more forged .ipk packages having the same size as specified in the repository index while an `opkg install` command is invoked on the victim system.”
You can also read the complete technical analysis of this vulnerability here.
The vulnerability has been fixed and assigned CVE-2020-7982 and the users are urged to upgrade to the latest OpenWrt version.
How to Update:
The following commands may be used once all repositories have been updated:
cd /tmp opkg update opkg download opkg zcat ./opkg-lists/openwrt_base | grep -A10 "Package: opkg" | grep SHA256sum sha256sum ./opkg_2020-01-25-c09fe209-1_*.ipk