Ataques Cross Site Scripting (XSS)

Esquemas / exemplos de Cross Site Scripting (XSS)

Há (pelo menos) 3 tipos:

1. XSS Reflectido:














2. XSS Armazenado













3. XSS baseado em DOM

• An HTML or XML page is represented by a DOM object (Document Object Model, W3C)
• HTML can contain references to attributes of that object, which are interpreted in the browser: F document.URL, document.location, document.referer,…
• Vulnerability: site with HTML page with JS script that does client-side logic with document.URL or another attribute

Federal Information Security Management Act (FISMA)

Um artigo de introdução ao Federal Information Security Management Act (FISMA) americano:
http://www.informit.com/articles/article.aspx?p=1187853

Excertos:
"FISMA provides a set of specific guidelines for federal agencies on how to plan for, budget, implement, and maintain secure systems. These new, stricter security guidelines replaced an expired set of rules under the Government Information Security Reform Act (GISRA)."

"NIST has several security programs in place with this goal in mind, such as the following:

Vulnerabilidade XSS no Google

A descrição da vulnerabilidade, já corrigida, está no blog Billy (BK) Rios.

Diversos aspectos interessantes:
-- se surge uma vulnerabilidade destas no Google que tem uma grande preocupação com a segurança, quanto mais não acontecerá com inúmeros sites feitos por curiosos por todo o mundo.
-- a vulnerabilidade é bastante sofisticada, não o típico XSS no qual é citado o nome do utilizador (o blog recomenda a leitura deste artigo)
-- a vulnerabilidade XSS está associada a um problema na gestão das sessões no Google, já que ao ser apanhado um cookie o atacante fica com acesso às demais aplicações do Google que a vítima use

(com agradecimentos ao Ricardo Oliveira que me enviou a notícia)

Ainda a Insegurança no Parlamento

Não teci comentários mas a questão é muito interessante: dada uma entidade com diversos "grupos de utilizadores" que desconfiam uns dos outros como conseguir confidencialidade e integridade da respectiva informação sem confiar na administração dos sistemas.

Recentemente eu e alguns colegas publicámos um trabalho sobre um serviço --que talvez pudesse ser instanciado como um servidor de email-- que garante a confidencialidade da informação mesmo que alguns servidores sejam atacados com sucesso. No entanto o problema de um administrador que não seja de confiança não foi abordado. Interessante...

Entretanto a administração da AR assegurou que "não há mínima possibilidade de aceder ao conteúdo dos ‘e-mails’" e que o sistema informático da Assembleia da República "está bem" e a preservação da confidencialidade dos dados garantida", "existindo sistemas de segurança, como "firewalls"". Não estou a ver como é que as firewalls resolvem o problema, mas acho que isto de trabalhar em segurança cria um certo cepticismo...

P.S.
O artigo:
Alysson Bessani, Eduardo Alchieri, Miguel Correia and Joni Fraga.
"A Byzantine Fault-Tolerant Coordination Service."
Proceedings of the European Conference on Computer Systems (EuroSys 2008). April 2008. (pdf) (software)


Insegurança no Parlamento

Um excerto do Público online hoje (aliás, "última hora"). Só não percebi como é que os emails chegam abertos.

Deputados queixam-se de violação de “e-mails” no Parlamento

11.04.2008 - 10h21 PÚBLICO

Deputados de todos os partidos queixam-se da violação de correio electrónico ("e-mail") no sistema da Assembleia da República.

O vice-presidente do Grupo Parlamentar do PS, António Galamba, diz mesmo que “existem e-mails que chegam abertos e outros que não chegam”, segundo noticia o “Diário Económico” de hoje.

António Galamba conta também que já não é o único deputado que utiliza um disco rígido portátil para trabalhar os documentos mais importantes, pois tem “dúvidas sobre a segurança do sistema informático” do Parlamento.
...

Na mais recente reunião da Comissão de Ética do Parlamento, terá mesmo sido unânime o sentimento de insegurança relativamente à utilização do sistema, mesmo da parte do seu presidente, o social-democrata Luís Marques Guedes.
...

Mestrado em Segurança Informática com CMU

O Expresso online publicou há dias um artigo intitulado "Carnegie Mellon investe 600 mil euros no ensino à distância", "Quatro universidades portuguesas vão ter aulas em tempo real directamente de Pittsburgh, nos EUA". Não "vão ter", já têm, mas não é por isso que chamo a atenção para o artigo, mas porque a fotografia é da sala de videconferência aqui da FCUL. Esta é a sala usada para as aulas do referido mestrado (cerca de metade das disciplinas são leccionadas a partir de Pittsburgh).

Artigo do Expresso: http://aeiou.expresso.pt/gen.pl?p=stories&op=view&fokey=ex.stories/284972
Site do Mestrado:
http://cmuportugal.di.fc.ul.pt/?MSc_in_Information_Security

"Prémio Nobel da Informática" para Universidade de Carnegie Mellon

O Prémio Turing, conhecido por "Prémio Nobel da Informática", foi este ano atribuído ao prof. Edmund Clarke da Universidade de Carnegie Mellon. Esta universidade lecciona em conjunto com a FCUL o Mestrado em Segurança Informática e Doutoramentos em Informática e Matemática. O prémio foi atribuído "For his role in developing Model-Checking into a highly effective verification technology, widely adopted in the hardware and software industries."

Mais informação sobre o Mestrado em Segurança Informática:
http://cmuportugal.di.fc.ul.pt/?MSc_in_Information_Security

Livros



Com o aproximar do fim de mais um semestre a ensinar segurança de software, vale a pena pôr aqui um grande livro (no duplo sentido do termo):

The Art of Software Security Assessment: Identifying and Preventing Software Vulnerabilities
Mark Dowd, John McDonald, Justin Schuh
Addison-Wesley Professional; 1 edition (November 30, 2006)


Outro sem nada a ver mas que li recentemente com gosto:

Geekonomics: The Real Cost of Insecure Software
David Rice
Addison-Wesley Professional; 1 edition (December 9, 2007)

O livro é uma crítica ao estado da segurança do software comercial e ao papel desempenhado pela indústria que o produz. Interessante.

Ferramentas de segurança de software

uma entrada em estilo logbook sobre ferramentas para segurança de software:

1- Static Analysis For safe Execution of Code

SAFECode project aims at providing memory safety guarantees to programs written in unsafe languages like C and C++.

As a part of this project, we developed a relatively simple compilation strategy that for standard C programs guarantees sound semantics for an aggressive interprocedural pointer analysis (or simpler ones), a call graph, and type information for a subset of memory. These provide the foundation for sophisticated static analyses to be applied to such programs with a guarantee of soundness. Our work builds on a previously published transformation called Automatic Pool Allocation to ensure that hard-to-detect memory errors (dangling pointer references and certain array bounds errors) cannot invalidate the call graph, points-to information or type information. A technical report on this work is available from here

Second, we developed a backwards-compatible run-time array bounds checking solution that has very low overhead. More information on this work is available from here

Finally, we also developed a novel technique that can detect dangling pointer errors (accesses to freed memory) with low over head in some applications. More information on this work is available here

2- Improving Program Robustness via Static and Dynamic Analysis

Our research project aims to help programmers in writing more reliable programs, detecting errors in their programs and diagnosing errors. Our project includes fundamental research to improve our ability to analyze programs, such as pointer alias analysis, and applying static and dynamic techniques to address specific kinds of errors such as buffer overruns and memory leaks. Our emphasis is to develop techniques that can handle large real-life programs without imposing an onerous burden on the users. Here are a list of publications and an overview of the research results:

* Integrated Static and Dynamic Analyses for User-Defined Error and Security Flaw Detectors
* Static Tools
o An unsound path-sensitive pointer alias analysis for C.
o Clouseau: Detecting memory leaks in C++ programs automatically by static analysis.
o Metacompilation: Detecting critical errors in system software by static analysis
+ Using redundancy to find errors.
+ RacerX: static detection of race conditions and deadlocks
* Dynamic Tools
o DIDUCE: Tracking down software errors using dynamic anomaly detection.
o CRED: A Practical Dynamic Overflow Detector.
* Static and Dynamic Analysis:
o Automatic extraction of object-oriented component interfaces using static and dynamic techniques.
* Architecture
o Speculative threads: Architectural support to improve software reliability.

3- CCured

CCured is a source-to-source translator for C. It analyzes the C program to determine the smallest number of run-time checks that must be inserted in the program to prevent all memory safety violations. The resulting program is memory safe, meaning that it will stop rather than overrun a buffer or scribble over memory that it shouldn't touch. Many programs can be made memory-safe this way while losing only 10–60% run-time performance (the performance cost is smaller for cleaner programs, and can be improved further by holding CCured's hand on the parts of the program that it does not understand by itself). Using CCured we have found bugs that Purify misses with an order of magnitude smaller run-time cost.

Fuzzing / Injecção de ataques

Os testes de fuzzing -- injecção de input aleatório para descobrir vulnerabilidades -- foi muito destacado na Conferência RSA, esta semana em San Francisco. Um artigo interessante:

http://www.regdeveloper.co.uk/2008/04/07/fuzzing_advice/