19 research outputs found

    КомплСксная систСма Π·Π°Ρ‰ΠΈΡ‚Ρ‹ ΠΎΡ‚ уязвимостСй, основанных Π½Π° Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ

    Get PDF
    It is difficult or impossible to develop software without included errors. Errors can lead to an abnormal order of machine code execution during data transmission to a program. Program splitting into routines causes possible attacks by using return instructions from these routines. Most of existing security tools need to apply program source codes to protect against such attacks. The proposed defensive method is intended to a comprehensive solution to the problem. Firstly, it makes it difficult for an attacker to gain control over program execution, and secondly, the number of program routines, which can be used during the attack, decreases. Specific security code insertion is used at the beginning and end of the routines to make it complicated to gain control over the program execution. The return address is kept secure during a call of the protected routine, and the protected routine is restored after its execution if it was damaged by the attacker. To reduce the number of suitable routines for attacks, it was suggested to use synonymous substitutions of instructions that contain dangerous values. It should be mentioned that proposed defensive measures do not affect the original application`s algorithm. To confirm the effectiveness of the described defensive method, software implementation and its testing were accomplished. Acknowledging controls were conducted using synthetic tests, performance tests and real programs. Results of testing have demonstrated the reliability of the proposed measures. It ensures the elimination of program routines suitable for attacks and ensures the impossibility of using standard return instructions for conducting attacks. Performance tests have shown a 14 % drop in the operating speed, which approximately matches the level of the nearest analogues. The application of the proposed solution declines the number of possible attack scenarios, and its applicability level is higher in comparison with analogues.Π—Π°Ρ‚Ρ€ΡƒΠ΄Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈΠ»ΠΈ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ обСспСчСниС, Π½Π΅ содСрТащСС ошибок. Ошибки ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½Ρ‹Π΅ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π΄Π°Π½Π½Ρ‹Π΅ Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‚ Π½Π΅ΡˆΡ‚Π°Ρ‚Π½Ρ‹ΠΉ порядок выполнСния Π΅Π΅ машинного ΠΊΠΎΠ΄Π°. Π Π°Π·Π±ΠΈΠ΅Π½ΠΈΠ΅ Π½Π° ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ инструкции Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π° ΠΈΠ· ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для провСдСния Π°Ρ‚Π°ΠΊΠΈ. Π‘ΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ срСдства Π·Π°Ρ‰ΠΈΡ‚Ρ‹ Π² основном Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ наличия исходных тСкстов для прСдотвращСния Ρ‚Π°ΠΊΠΈΡ… Π°Ρ‚Π°ΠΊ. ΠŸΡ€Π΅Π΄Π»Π°Π³Π°Π΅ΠΌΠ°Ρ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈΠΊΠ° Π·Π°Ρ‰ΠΈΡ‚Ρ‹ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½Π° Π½Π° комплСксноС Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹. Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, затрудняСтся ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ Π°Ρ‚Π°ΠΊΡƒΡŽΡ‰ΠΈΠΌ контроля Π½Π°Π΄ исполнСниСм ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π° Π²ΠΎ-Π²Ρ‚ΠΎΡ€Ρ‹Ρ…, сниТаСтся количСство участков ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Ρ‹ Π² Ρ…ΠΎΠ΄Π΅ Π°Ρ‚Π°ΠΊΠΈ. Для затруднСния получСния контроля Π½Π°Π΄ исполнСниСм примСняСтся вставка Π·Π°Ρ‰ΠΈΡ‚Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Π² Π½Π°Ρ‡Π°Π»ΠΎ ΠΈ ΠΊΠΎΠ½Π΅Ρ† ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ. ΠŸΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ Π·Π°Ρ‰ΠΈΡ‰Π΅Π½Π½ΠΎΠΉ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ производится Π·Π°Ρ‰ΠΈΡ‚Π° адрСса Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π°, Π° ΠΏΡ€ΠΈ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠΈ – восстановлСниС – ΠΏΡ€ΠΈ условии отсутствия поврСТдСния Π΅Π³ΠΎ Π°Ρ‚Π°ΠΊΡƒΡŽΡ‰ΠΈΠΌ. Для сниТСния количСства ΠΏΡ€ΠΈΠ³ΠΎΠ΄Π½Ρ‹Ρ… для Π°Ρ‚Π°ΠΊ участков ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ синонимичныС Π·Π°ΠΌΠ΅Π½Ρ‹ инструкций, содСрТащиС опасныС значСния. ΠŸΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ ΠΌΠ΅Ρ€Ρ‹ Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΡΡŽΡ‚ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Ρ€Π°Π±ΠΎΡ‚Ρ‹ исходного прилоТСния. Для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ описанных Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ Π±Ρ‹Π»Π° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π° программная рСализация ΠΈ ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅Π½ΠΎ Π΅Π΅ тСстированиС с использованиСм синтСтичСских тСстов, тСстов ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΈ Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ. ВСстированиС ΠΏΠΎΠΊΠ°Π·Π°Π»ΠΎ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΡŒ принятых Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ, Ρ‡Ρ‚ΠΎ обСспСчиваСт устранСниС ΠΏΡ€ΠΈΠ³ΠΎΠ΄Π½Ρ‹Ρ… для Π°Ρ‚Π°ΠΊ участков ΠΈ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ использования ΡˆΡ‚Π°Ρ‚Π½Ρ‹Ρ… инструкций Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π° для провСдСния Π°Ρ‚Π°ΠΊ. ВСстированиС ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΏΠΎΠΊΠ°Π·Π°Π»ΠΎ 14 % падСния скорости Ρ€Π°Π±ΠΎΡ‚Ρ‹, Ρ‡Ρ‚ΠΎ находится Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ Π±Π»ΠΈΠΆΠ°ΠΉΡˆΠΈΡ… Π°Π½Π°Π»ΠΎΠ³ΠΎΠ². Π‘Ρ€Π°Π²Π½Π΅Π½ΠΈΠ΅ с Π°Π½Π°Π»ΠΎΠ³Π°ΠΌΠΈ ΠΏΠΎΠΊΠ°Π·Π°Π»ΠΎ, Ρ‡Ρ‚ΠΎ количСство Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅ΠΌΡ‹Ρ… сцСнариСв Π°Ρ‚Π°ΠΊΠΈ для ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ мСньшС, Π° ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌΠΎΡΡ‚ΡŒ Π²Ρ‹ΡˆΠ΅

    КомплСксная систСма Π·Π°Ρ‰ΠΈΡ‚Ρ‹ ΠΎΡ‚ уязвимостСй, основанных Π½Π° Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ

    Get PDF
    Π—Π°Ρ‚Ρ€ΡƒΠ΄Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈΠ»ΠΈ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ обСспСчСниС, Π½Π΅ содСрТащСС ошибок. Ошибки ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½Ρ‹Π΅ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π΄Π°Π½Π½Ρ‹Π΅ Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‚ Π½Π΅ΡˆΡ‚Π°Ρ‚Π½Ρ‹ΠΉ порядок выполнСния Π΅Π΅ машинного ΠΊΠΎΠ΄Π°. Π Π°Π·Π±ΠΈΠ΅Π½ΠΈΠ΅ Π½Π° ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ инструкции Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π° ΠΈΠ· ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для провСдСния Π°Ρ‚Π°ΠΊΠΈ. Π‘ΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ срСдства Π·Π°Ρ‰ΠΈΡ‚Ρ‹ Π² основном Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ наличия исходных тСкстов для прСдотвращСния Ρ‚Π°ΠΊΠΈΡ… Π°Ρ‚Π°ΠΊ. ΠŸΡ€Π΅Π΄Π»Π°Π³Π°Π΅ΠΌΠ°Ρ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈΠΊΠ° Π·Π°Ρ‰ΠΈΡ‚Ρ‹ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½Π° Π½Π° комплСксноС Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹. Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, затрудняСтся ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ Π°Ρ‚Π°ΠΊΡƒΡŽΡ‰ΠΈΠΌ контроля Π½Π°Π΄ исполнСниСм ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π° Π²ΠΎ-Π²Ρ‚ΠΎΡ€Ρ‹Ρ…, сниТаСтся количСство участков ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Ρ‹ Π² Ρ…ΠΎΠ΄Π΅ Π°Ρ‚Π°ΠΊΠΈ. Для затруднСния получСния контроля Π½Π°Π΄ исполнСниСм примСняСтся вставка Π·Π°Ρ‰ΠΈΡ‚Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Π² Π½Π°Ρ‡Π°Π»ΠΎ ΠΈ ΠΊΠΎΠ½Π΅Ρ† ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ. ΠŸΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ Π·Π°Ρ‰ΠΈΡ‰Π΅Π½Π½ΠΎΠΉ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ производится Π·Π°Ρ‰ΠΈΡ‚Π° адрСса Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π°, Π° ΠΏΡ€ΠΈ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠΈ – восстановлСниС – ΠΏΡ€ΠΈ условии отсутствия поврСТдСния Π΅Π³ΠΎ Π°Ρ‚Π°ΠΊΡƒΡŽΡ‰ΠΈΠΌ. Для сниТСния количСства ΠΏΡ€ΠΈΠ³ΠΎΠ΄Π½Ρ‹Ρ… для Π°Ρ‚Π°ΠΊ участков ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ синонимичныС Π·Π°ΠΌΠ΅Π½Ρ‹ инструкций, содСрТащиС опасныС значСния. ΠŸΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ ΠΌΠ΅Ρ€Ρ‹ Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΡΡŽΡ‚ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Ρ€Π°Π±ΠΎΡ‚Ρ‹ исходного прилоТСния. Для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ описанных Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ Π±Ρ‹Π»Π° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π° программная рСализация ΠΈ ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅Π½ΠΎ Π΅Π΅ тСстированиС с использованиСм синтСтичСских тСстов, тСстов ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΈ Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ. ВСстированиС ΠΏΠΎΠΊΠ°Π·Π°Π»ΠΎ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΡŒ принятых Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ, Ρ‡Ρ‚ΠΎ обСспСчиваСт устранСниС ΠΏΡ€ΠΈΠ³ΠΎΠ΄Π½Ρ‹Ρ… для Π°Ρ‚Π°ΠΊ участков ΠΈ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ использования ΡˆΡ‚Π°Ρ‚Π½Ρ‹Ρ… инструкций Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π° для провСдСния Π°Ρ‚Π°ΠΊ. ВСстированиС ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΏΠΎΠΊΠ°Π·Π°Π»ΠΎ 14 % падСния скорости Ρ€Π°Π±ΠΎΡ‚Ρ‹, Ρ‡Ρ‚ΠΎ находится Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ Π±Π»ΠΈΠΆΠ°ΠΉΡˆΠΈΡ… Π°Π½Π°Π»ΠΎΠ³ΠΎΠ². Π‘Ρ€Π°Π²Π½Π΅Π½ΠΈΠ΅ с Π°Π½Π°Π»ΠΎΠ³Π°ΠΌΠΈ ΠΏΠΎΠΊΠ°Π·Π°Π»ΠΎ, Ρ‡Ρ‚ΠΎ количСство Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅ΠΌΡ‹Ρ… сцСнариСв Π°Ρ‚Π°ΠΊΠΈ для ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ мСньшС, Π° ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌΠΎΡΡ‚ΡŒ Π²Ρ‹ΡˆΠ΅

    Sprobes: Enforcing Kernel Code Integrity on the TrustZone Architecture

    Full text link
    Many smartphones now deploy conventional operating systems, so the rootkit attacks so prevalent on desktop and server systems are now a threat to smartphones. While researchers have advocated using virtualization to detect and prevent attacks on operating systems (e.g., VM introspection and trusted virtual domains), virtualization is not practical on smartphone systems due to the lack of virtualization support and/or the expense of virtualization. Current smartphone processors do have hardware support for running a protected environment, such as the ARM TrustZone extensions, but such hardware does not control the operating system operations sufficiently to enable VM introspection. In particular, a conventional operating system running with TrustZone still retains full control of memory management, which a rootkit can use to prevent traps on sensitive instructions or memory accesses necessary for effective introspection. In this paper, we present SPROBES, a novel primitive that enables introspection of operating systems running on ARM TrustZone hardware. Using SPROBES, an introspection mechanism protected by TrustZone can instrument individual operating system instructions of its choice, receiving an unforgeable trap whenever any SPROBE is executed. The key challenge in designing SPROBES is preventing the rootkit from removing them, but we identify a set of five invariants whose enforcement is sufficient to restrict rootkits to execute only approved, SPROBE-injected kernel code. We implemented a proof-of-concept version of SPROBES for the ARM Fast Models emulator, demonstrating that in Linux kernel 2.6.38, only 12 SPROBES are sufficient to enforce all five of these invariants. With SPROBES we show that it is possible to leverage the limited TrustZone extensions to limit conventional kernel execution to approved code comprehensively.Comment: In Proceedings of the Third Workshop on Mobile Security Technologies (MoST) 2014 (http://arxiv.org/abs/1410.6674

    Signature-Based Protection from Code Reuse Attacks

    Full text link
    Abstractβ€”Code Reuse Attacks (CRAs) recently emerged as a new class of security exploits. CRAs construct malicious programs out of small fragments (gadgets) of existing code, thus eliminating the need for code injection. Existing defenses against CRAs often incur large performance overheads or require extensive binary rewriting and other changes to the system software. In this paper, we examine a signature-based detection of CRAs, where the attack is detected by observing the behavior of programs and detecting the gadget execution patterns. We first demonstrate that naive signature-based defenses can be defeated by introducing special β€œdelay gadgets ” as part of the attack. We then show how a software-configurable signature-based approach can be designed to defend against such stealth CRAs, including the attacks that manage to use longer-length gadgets. The proposed defense (called SCRAP) can be implemented entirely in hardware using simple logic at the commit stage of the pipeline. SCRAP is realized with minimal performance cost, no changes to the software layers and no implications on binary compatibility. Finally, we show that SCRAP generates no false alarms on a wide range of applications.

    Out Of Control: Overcoming Control-Flow Integrity

    Get PDF
    As existing defenses like ASLR, DEP, and stack cookies are not sufficient to stop determined attackers from exploiting our software, interest in Control Flow Integrity (CFI) is growing. In its ideal form, CFI prevents flows of control that were not intended by the original program, effectively putting a stop to exploitation based on return oriented programming (and many other attacks besides). Two main problems have prevented CFI from being deployed in practice. First, many CFI implementations require source code or debug information that is typically not available for commercial software. Second, in its ideal form, the technique is very expensive. It is for this reason that current research efforts focus on making CFI fast and practical. Specifically, much of the work on practical CFI is applicable to binaries, and improves performance by enforcing a looser notion of control flow integrity. In this paper, we examine the security implications of such looser notions of CFI: are they still able to prevent code reuse attacks, and if not, how hard is it to bypass its protection? Specifically, we show that with two new types of gadgets, return oriented programming is still possible. We assess the availability of our gadget sets, and demonstrate the practicality of these results with a practical exploit against Internet Explorer that bypasses modern CFI implementations

    G-free: Defeating return-oriented programming through gadget-less binaries

    Get PDF
    Despite the numerous prevention and protection mechanisms that have been introduced into modern operating systems, the exploitation of memory corruption vulnerabilities still represents a serious threat to the security of software systems and networks. A recent exploitation technique, called Return-Oriented Programming (ROP), has lately attracted a considerable attention from academia. Past research on the topic has mostly focused on refining the original attack technique, or on proposing partial solutions that target only particular variants of the attack. In this paper, we present G-Free, a compiler-based approach that represents the first practical solution against any possible form of ROP. Our solution is able to eliminate all unaligned free-branch instructions inside a binary executable, and to protect the aligned free-branch instructions to prevent them from being misused by an attacker. We developed a prototype based on our approach, and evaluated it by compiling GNU libc and a number of real-world applications. The results of the experiments show that our solution is able to prevent any form of return-oriented programming. Β© 2010 ACM

    ROPecker: A Generic and Practical Approach For Defending Against ROP Attack

    Get PDF
    Abstractβ€”Return-Oriented Programming (ROP) is a sophis-ticated exploitation technique that is able to drive target applica-tions to perform arbitrary unintended operations by constructing a gadget chain reusing existing small code sequences (gadgets). Existing defense mechanisms either only handle specific types of gadgets, require access to source code and/or a customized compiler, break the integrity of application binary, or suffer from high performance overhead. In this paper, we present a novel system, ROPecker, to efficiently and effectively defend against ROP attacks withou
    corecore