/* Title: Armadito Antivirus - Malware Detection Bypass Date: 21/02/2018 Author: Souhail Hammou Author's website: http://rce4fun.blogspot.com Vendor Homepage: http://www.teclib-edition.com/en/ Version: 0.12.7.2 CVE: CVE-2018-7289 Details: -------- An issue was discovered in armadito-windows-driver/src/communication.c affecting Armadito 0.12.7.2 and previous versions. Malware with filenames containing pure UTF-16 characters can bypass detection. The user-mode service will fail to open the file for scanning after the conversion is done from Unicode to ANSI. This happens because characters that cannot be converted from Unicode are replaced with the '?' character. The code responsible for this issue is located in armadito-windows-driver/src/communication.c ======================================================================================================== // Convert unicode string to ansi string for ring 3 process. ntStatus = RtlUnicodeStringToAnsiString(&AnsiString, (PCUNICODE_STRING)FilePath, TRUE); if(!NT_SUCCESS(ntStatus)){ DbgPrint("[-] Error :: ArmaditoGuard!SendScanOrder :: RtlUnicodeStringToAnsiString() routine failed !! \n"); __leave; } ======================================================================================================== The two examples below demonstrate the bug. In the first case, the filename is in Arabic and in the second, the filename's first letter is the greek M (U+039C). Original filename: UO+-OO"OSS.exe : 0645 0631 062d 0628 0627 002e 0065 0078 0065 Converted to ANSI by Armadito: ?????.exe : 3f 3f 3f 3f 3f 2e 65 78 65 ============================= Original filename: Ialware.exe : 039c 0061 006c 0077 0061 0072 0065 002e 0065 0078 0065 Converted to ANSI by Armadito: ?alware.exe : 3f 61 6c 77 61 72 65 2e 65 78 65 See: https://github.com/armadito/armadito-windows-driver/issues/5 */