Utilize este identificador para referenciar este registo: http://hdl.handle.net/10451/30815
Título: Non-intrusive observation and runtime verificication of cyber-physical systems
Autor: Gouveia, Inês Pinto
Orientador: Rufino, José Manuel de Sousa de Matos
Palavras-chave: Verificação em Tempo de Execução
Sistemas Ciber-Físicos
Segurança
Proteção de Memória
SPARC V8
Teses de mestrado - 2017
Data de Defesa: 2017
Resumo: O recente desenvolvimento dos Sistemas Ciber-Físicos (SCF) e o aumento na utilização de veículos autónomos em diversos domínios (e.g., espaço, aéreo, aquático, automóvel) levou ao surgimento de novas preocupações, nomeadamente no que diz respeito a propriedades de segurança e confiabilidade e a restrições temporais. Durante décadas, numerosas vulnerabilidades tem posto em risco diversas aplicações e sistemas e, como tal, os Sistemas Ciber-Físicos não são excepção à regra. Tais acontecimentos resultaram numa tendência para a adopção de técnicas de Verificação em Tempo de Execução (VTE) para sistemas embebidos quando a respectiva criticalidade dita a necessidade de garantir operação correcta no domínio dos valores e no domínio do tempo. A VTE é baseada em infraestruturas de monitorização de eventos e na posterior verificação de correcção desses eventos de acordo com a especificação do sistema, tanto online (on-the-fly) como offline (onde primeiro os eventos são guardados em estruturas de memória e só depois analisados). Este tipo de detecção de erros vem contrastar com técnicas de verificação e de teste em fase de desenvolvimento onde são usados casos de teste estáticos, antes do sistema ser instalado e posto a funcionar normalmente no seu ambiente de execução. Embora essenciais, estas técnicas não estudam todos os casos ou problemas inerentes do sistema, que podem ser causados por factores imprevisíveis. A VTE pode ser usada na fase de desenvolvimento de forma a aperfeiçoar os casos de teste e em tempo de execução pós-desenvolvimento com o intuito de garantir bom funcionamento durante todo o período de vida do sistema. No entanto, metodologias de VTE convencionais, como a instrumentação de código, impõem penalizações no desempenho e na pontualidade, sendo inapropriadas para sistemas críticos. Em Sistemas Ciber-Físicos com requesitos de tempo-real, estas perturbações podem ser devastadoras dada a escassez de recursos computacionais disponíveis, por um lado, as perturbações que podem originar no escalonamento das acções a realizar em tempo-real, por outro, e também o compromisso em realizar as metas temporais impostas pela especificação funcional do sistema. O objectivo desta tese é conceber uma solução para lidar com faltas acidentais e ataques intencionais que afectem a memória dos SCFs e a informação nela contida por meio de Verificação Não-Intrusiva em Tempo de Execução (VNITE), a ser realizada através do desenho de um observador e entidade de monitorização de caixa preta. A razão inerente a escolha da implementação do observador como uma caixa preta, isto é, de ser visto em função das suas entradas e saídas e não do seu funcionamento interno, advém do facto de um observador transparente poder ser facilmente atacado e modificado de forma a afectar negativamente a sua operação, com o objectivo de providenciar dados erróneos ou mesmo de influênciar indirectamente o sistema a ser monitorizado. Uma abordagem inovadora para a problemática da monitorização é materializada através da projecção das acções de monitorização diretamente em mecanismos existentes na infraestrutura de processamento, como os barramentos de sistema e de cache. Uma tal abordagem permite a monitorização de um sistema sem qualquer impacto na execução, sendo adequada para o presente e futuro dos SCF e capaz de ser implementada sem insersão de código ou qualquer alteração na arquitectura do sistema base, ou seja, ligando apenas um componente de observação e monitorização diretamente aos referidos barramentos, sem a modificação de componentes já existentes no sistema. A inserção do observador dentro do processador é indesejável uma vez que iria requerer a sua modificação, não só no momento de implementação mas também sempre que a arquitectura do processador fosse modificada. Ao inserir uma entidade observadora num sistema, há que ter em conta determinados factores. Dado que a forma de observação depende do tipo de arquitectura do processador, do seu modelo de programação, do seu repositório de instruções e da convenção de chamada a funções, conclui-se que a entidade de monitorização será dependente de todos estes factores. O combate a problemas de segurança em memória pode ser realizado a diferentes níveis ou granularidades, dependendo de quão detalhado é o nosso conhecimento do funcionamento do sistema e das aplicações a correr no mesmo. Neste trabalho serão introduzidas soluções para a detecção e resolução parcial ou completa de faltas acidentais e ataques intencionais, focadas na compreensão limitada das especificidades do ambiente analisado, usando uma granularidade de monitorização ao nível da função. Acesso ao código fonte nem sempre é possível, tanto por uma questão de protecção da lógica e engenharia usada por parte das empresas que desenham as aplicações, como para esconder software malicioso, por exemplo, em plugins. Da mesma forma, os ficheiros binários são normalmente disprovidos de símbolos (stripped) pelas mesmas razões, impedindo a inversão da engenharia e ainda reduzindo os requesitos de utilização de espaço de memória em disco, dado que as informações adicionais em ficheiros não desprovidos de símbolos ocupam consideravelmente mais espaço. Em tal ambiente, além de ser impossível ou demasiado difícil a instrumentação de código (que já por si é intrusiva e indesejável), é também difícil a monitorização a um nível de granularidade fina. Assim, o observador necessita de estar preparado para interceptar apenas eventos menos específicos, como a utilização incorrecta de alguns espaços de memória ou o mau uso de endereços de retorno. Para a concepção da entidade observadora e de monitorização, é assumido que a maioria das aplicações (senão todas) são constituídas por chamadas a funções. A partir desta hipótese elaboramos um esquema que verifica se cada função está a executar correctamente, não havendo corrupção do espaço de endereçamento atribuído à mesma, nomeadamente secções de memória específicas com limites bem definidos, como é o caso de: quadros de memória reservados para uma função (e de algumas das subsecções em que se divide); zonas de memória alocadas dinamicamente e registos críticos do processador, como, por exemplo, o registo que guarda o endereço de retorno de uma função. Secções de dados de ficheiros binários do tipo ELF são também exemplos de zonas de memória bem delimitadas. Um observador não-intrusivo responsável pela detecção de eventos e comportamentos maliciosos e pela tomada de acções de acordo com o que é observado, interno ao sistema a observar, irá tirar então partido das instruções e dados que circulam no baramento de sistema e nos barramentos de cache, analisando-os total ou parcialmente de forma a compreender se algum comportamento erróneo/não autorizado está a ser efectuado que poderá por em causa a integridade de diversas zonas de memória. Esta abordagem é inserida no campo de lógica reconfigurável, tirando partido de arquitecturas System-on-a-Chip (SoC) de forma a realizar observação diretamente na maquinaria (hardware), em baixo nível e de forma eficaz. O conceito de VNITE pode também ser adaptado a sistemas Compartimentados no Espaço e no Tempo (CET), cada vez mais utilizados devido à crescente complexidade dos sistemas num vasto domínio de aplicações. Para além das limitações inerentes de pontualidade, problemas acrescidos no domínio da segurança da operação (safety) e da informação (security) estão também presentes em sistemas CET, maioritariamente devido ao uso de sistemas operativos genéricos, sendo já histórica a sua suscetibilidade a problemas comuns e a vulnerabilidades conhecidas que nunca foram cabalmente resolvidas, como por exemplo transbordos de buffer (buffer overflows). O objectivo deste trabalho é, então, a análise de requesitos para a construção de um observador não intrusivo, nomeadamente a nível dos factores em que depende e das possíveis vulnerabilidades que o observador será capaz de proteger, tendo em consideração vulnerabilidades comuns em sistemas operativos, e o desenho/concepção de um observador capaz de fornecer protecção contra as falhas de segurança analisadas, garantindo propriedades de segurança e confiabilidade e respeitando restrições temporais. Após concretização, concluiu-se que ainda muito trabalho necessita de ser feito nesta vertente de forma a ter uma solução viável que vá completamente de acordo à ideia inicial. No entanto, é uma solução fazível e necessária.
The recent extensive development in Cyber-Physical Systems (CPS) and the increase in usage of autonomous vehicles throughout several domains (spacial, avionic, terrestrial and aquatic) has lead to the emergence of new concerns regarding safety, security and timeliness properties. This has resulted in a tendency to adopt Runtime Verification (RV) techniques for embedded systems, when their criticality dictates the need to guarantee correct operation in the time and values domain. RV is based on event observation and monitoring infrastructures and on-the-fly or posterior event correction verification against a given system specification. However, conventional RV methodologies, such as source code instrumentation, impose performance and timeliness penalties due to their intrusive nature, being inappropriate for (real-time) critical systems. In CPSs with real-time requirements these disturbances can be devastating given the lack of computational resources and the necessity to fulfil temporal goals due to their functional specification. For decades, numerous vulnerabilities have put systems and applications at risk and CPSs are no exception. We intent to deal with accidental faults and intended attacks that compromise the integrity of data stored on memory by means of Non-Intrusive RV, to be accomplished through the design of a black-box observer and monitoring entity. This is materialized through the introduction of monitoring actions directly in existing resources present in the processing infrastructure. Such an approach allows for system monitoring with no impact on execution, being adequate for CPSs. A non-intrusive observer entity that is responsible for detecting malicious events and act accordingly, while taking into consideration common operating system vulnerabilities is in order. Thus, the goal of this thesis is to design such an observer, capable of performing function-level memory protection on well-delimited memory zones. For this purpose we perform a requirements analysis on relevant architectural characteristics and from that devise an on-chip online solution of our own. After completion, it was concluded that much work still needs to be done in order to have a viable solution that goes completely towards the initial idea. However, it is a feasible and necessary solution.
Descrição: Tese de mestrado, Engenharia Informática (Arquitectura, Sistemas e Redes de Computadores), Universidade de Lisboa, Faculdade de Ciências, 2017
URI: http://hdl.handle.net/10451/30815
Designação: Mestrado em Engenharia Informática (Arquitectura, Sistemas e Redes de Computadores)
Aparece nas colecções:FC-DI - Master Thesis (dissertation)

Ficheiros deste registo:
Ficheiro Descrição TamanhoFormato 
ulfc123940_tm_Inês_Gouveia.pdf481,43 kBAdobe PDFVer/Abrir


FacebookTwitterDeliciousLinkedInDiggGoogle BookmarksMySpace
Formato BibTex MendeleyEndnote 

Todos os registos no repositório estão protegidos por leis de copyright, com todos os direitos reservados.