Firmware kamery IP Amcrest IPM-721S zawiera podatność typu buffer overflow w obsłudze nagłówka HTTP Authorization, umożliwiającą zdalne uszkodzenie pamięci bez żadnego uwierzytelnienia. Podatność pozwala atakującemu na obejście mechanizmu ochrony konta i przeprowadzenie ataku brute force na dane uwierzytelniające.
▸ Pokaż oryginał (EN)
The Amcrest IPM-721S Amcrest_IPC-AWXX_Eng_N_V2.420.AC00.17.R.20170322 allows HTTP requests that permit enabling various functionalities of the camera by using HTTP APIs, instead of the web management interface that is provided by the application. This HTTP API receives the credentials as base64 encoded in the Authorization HTTP header. However, a missing length check in the code allows an attacker to send a string of 1024 characters in the password field, and allows an attacker to exploit a memory corruption issue. This can allow an attacker to circumvent the account protection mechanism and brute force the credentials. If the firmware version Amcrest_IPC-AWXX_Eng_N_V2.420.AC00.17.R.20170322 is dissected using the binwalk tool, one obtains a _user-x.squashfs.img.extracted archive which contains the filesystem set up on the device that has many of the binaries in the /usr folder. The binary "sonia" is the one that has the vulnerable function that performs the credential check in the binary for the HTTP API specification. If we open this binary in IDA Pro we will notice that this follows an ARM little-endian format. The function at address 00415364 in IDA Pro starts the HTTP authentication process. This function calls another function at sub_ 0042CCA0 at address 0041549C. This function performs a strchr operation after base64 decoding the credentials, and stores the result on the stack, which results in a stack-based buffer overflow.
HTTP API kamery przyjmuje dane logowania zakodowane w Base64 w nagłówku Authorization. W binarnym pliku 'sonia' odpowiedzialnym za obsługę uwierzytelnienia HTTP brakuje weryfikacji długości danych wejściowych. Po zdekodowaniu Base64 wykonywana jest operacja strchr, a wynik zapisywany jest na stosie bez sprawdzenia rozmiaru — wysłanie ciągu 1024 znaków w polu hasła powoduje stack-based buffer overflow. Podatna funkcja zlokalizowana jest pod adresem 0x00415364 w binarnym pliku skompilowanym w formacie ARM little-endian.
Atakujący zdalnie, bez uwierzytelnienia, może spowodować uszkodzenie pamięci urządzenia, obejść mechanizm blokady konta i przeprowadzić skuteczny atak brute force na dane logowania, potencjalnie uzyskując pełną kontrolę nad kamerą.
Należy zastosować patche dostępne u producenta zgodnie z referencjami. Dodatkowo zaleca się izolację urządzeń IP w dedykowanej sieci VLAN bez bezpośredniego dostępu z Internetu oraz blokadę dostępu do HTTP API za pomocą firewall.
Amcrest IPM-721S z wersją firmware Amcrest_IPC-AWXX_Eng_N_V2.420.AC00.17.R.20170322
Szczegółowy opis techniczny podatności, w tym analiza binarna w IDA Pro i ścieżka do podatnej funkcji, został opublikowany przez badacza w repozytorium GitHub (ethanhunnt/IoT_vulnerabilities). Podatność ujawniona publicznie w czerwcu 2019 r. pomimo daty firmware z marca 2017 r.
CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:HAmcrest Ipm 721s
HWAmcrestwszystkie wersjeAmcrest Ipm 721s Firmware
OSAmcrestamcrest_ipc-awxx_eng_n_v2.420.ac00.17.r.20170322
Powiązane podatności
Amcrest IPM-721S — zakodowane na stałe domyślne poświadczenia w firmware
Amcrest IPM-721S — brak blokady konta dla interfejsu ONVIF umożliwia brute force
Amcrest IPM-721S — nieuwierzytelnione pobieranie danych logowania administratora
Amcrest IPM-721S V2.420.AC00.16.R.20160909 devices mishandle reboots within the past two hours. Amcrest cloud ...
On Amcrest IPM-721S V2.420.AC00.16.R.20160909 devices, the users on the device are divided into 2 groups "admi...