cache storage channels alias driven attacks formally
play

Cache Storage Channels Alias-driven Attacks Formally Verified - PowerPoint PPT Presentation

Roberto Guanciale Mads Dam Hamed Nemati Christoph Baumann Cache Storage Channels Alias-driven Attacks Formally Verified Platforms Formally Verified Platforms Caches Excluded Formally Verified from the analysis Platforms Caches Excluded


  1. Roberto Guanciale Mads Dam Hamed Nemati Christoph Baumann Cache Storage Channels Alias-driven Attacks

  2. Formally Verified Platforms

  3. Formally Verified Platforms

  4. Caches Excluded Formally Verified from the analysis Platforms

  5. Caches Excluded Formally Verified from the analysis Platforms

  6. Caches Excluded Formally Verified from the analysis Platforms

  7. Caches Excluded Formally Verified from the analysis Platforms

  8. Caches Excluded Formally Verified from the analysis Platforms Models should be Sound

  9. Caches Excluded Formally Verified from the analysis Platforms Models should be Sound Storage Channels can invalidate results

  10. Cacheable (std-memory) Virtual MMU Address Non-cacheable (devices) Page T ables Incoherent Cache Behaviors

  11. Mismatched cacheability attributes

  12. Mismatched cacheability attributes do not do this

  13. Mismatched cacheability attributes Please, do not do this

  14. Mismatched cacheability attributes Please, do not do this Incoherent Cache Behaviors

  15. Mismatched cacheability attributes Please, do not do this Incoherent Cache Behaviors ARM-terminology: unexpected cache hit if the data cache reports a hit on a memory location that is marked as non- cacheable, the cache might access the memory disregarding such hit.

  16. OS OS Hypervisor Scenarios

  17. ARM OS OS OS TrustZone Service Hypervisor Scenarios

  18. ARM OS OS OS TrustZone Service Hypervisor Device User Driver Process Scenarios Kernel

  19. Attacker w r i t e ( V A _ n c , 0 ) … memory w r i t e ( V A _ n c , 1 ) VA_nc f r e e ( V A _ n c ) Victim PA cache D = a c c e s s ( V A _ c ) line dirty VA_c … D = a c c e s s ( V A _ c ) i f n o t p o l i c y ( D ) R e j e c t ( ) … u s e ( V A _ c )

  20. Attacker w r i t e ( V A _ n c , 0 ) … memory w r i t e ( V A _ n c , 1 ) VA_nc f r e e ( V A _ n c ) Victim PA cache D = a c c e s s ( V A _ c ) line dirty VA_c … D = a c c e s s ( V A _ c ) i f n o t p o l i c y ( D ) R e j e c t ( ) … u s e ( V A _ c )

  21. Attacker w r i t e ( V A _ n c , 0 ) … memory w r i t e ( V A _ n c , 1 ) VA_nc f r e e ( V A _ n c ) Victim PA cache D = a c c e s s ( V A _ c ) line dirty VA_c … D = a c c e s s ( V A _ c ) i f n o t p o l i c y ( D ) R e j e c t ( ) … u s e ( V A _ c )

  22. Attacker w r i t e ( V A _ n c , 0 ) … memory w r i t e ( V A _ n c , 1 ) VA_nc 0 f r e e ( V A _ n c ) Victim PA cache D = a c c e s s ( V A _ c ) line dirty VA_c … D = a c c e s s ( V A _ c ) i f n o t p o l i c y ( D ) R e j e c t ( ) … u s e ( V A _ c )

  23. Attacker w r i t e ( V A _ n c , 0 ) … memory w r i t e ( V A _ n c , 1 ) VA_nc 0 f r e e ( V A _ n c ) Victim PA cache D = a c c e s s ( V A _ c ) line dirty VA_c … D = a c c e s s ( V A _ c ) i f n o t p o l i c y ( D ) R e j e c t ( ) … u s e ( V A _ c )

  24. Attacker w r i t e ( V A _ n c , 0 ) … memory w r i t e ( V A _ n c , 1 ) VA_nc 0 f r e e ( V A _ n c ) Victim PA cache D = a c c e s s ( V A _ c ) line dirty VA_c … D = a c c e s s ( V A _ c ) i f n o t p o l i c y ( D ) R e j e c t ( ) … u s e ( V A _ c )

  25. Attacker w r i t e ( V A _ n c , 0 ) … memory w r i t e ( V A _ n c , 1 ) VA_nc 0 f r e e ( V A _ n c ) Victim PA cache D = a c c e s s ( V A _ c ) line dirty VA_c … D = a c c e s s ( V A _ c ) i f n o t p o l i c y ( D ) R e j e c t ( ) … u s e ( V A _ c )

  26. Attacker w r i t e ( V A _ n c , 0 ) … memory w r i t e ( V A _ n c , 1 ) VA_nc 0 f r e e ( V A _ n c ) Victim PA cache D = a c c e s s ( V A _ c ) line dirty VA_c … 0 F D = a c c e s s ( V A _ c ) i f n o t p o l i c y ( D ) R e j e c t ( ) … u s e ( V A _ c )

  27. Attacker w r i t e ( V A _ n c , 0 ) … memory w r i t e ( V A _ n c , 1 ) VA_nc 0 f r e e ( V A _ n c ) Victim PA cache D = a c c e s s ( V A _ c ) line dirty VA_c … 0 F D = a c c e s s ( V A _ c ) i f n o t p o l i c y ( D ) R e j e c t ( ) … u s e ( V A _ c )

  28. Attacker w r i t e ( V A _ n c , 0 ) … memory w r i t e ( V A _ n c , 1 ) VA_nc 1 f r e e ( V A _ n c ) Victim PA cache D = a c c e s s ( V A _ c ) line dirty VA_c … 0 F D = a c c e s s ( V A _ c ) i f n o t p o l i c y ( D ) R e j e c t ( ) … u s e ( V A _ c )

  29. Attacker w r i t e ( V A _ n c , 0 ) … memory w r i t e ( V A _ n c , 1 ) VA_nc 1 f r e e ( V A _ n c ) Victim PA cache D = a c c e s s ( V A _ c ) line dirty VA_c … 0 F D = a c c e s s ( V A _ c ) i f n o t p o l i c y ( D ) R e j e c t ( ) … u s e ( V A _ c )

  30. Attacker w r i t e ( V A _ n c , 0 ) … memory w r i t e ( V A _ n c , 1 ) VA_nc 1 f r e e ( V A _ n c ) Victim PA cache D = a c c e s s ( V A _ c ) line dirty VA_c … 0 F D = a c c e s s ( V A _ c ) i f n o t p o l i c y ( D ) R e j e c t ( ) … u s e ( V A _ c )

  31. Attacker w r i t e ( V A _ n c , 0 ) … memory w r i t e ( V A _ n c , 1 ) VA_nc 1 f r e e ( V A _ n c ) Victim PA cache D = a c c e s s ( V A _ c ) line dirty VA_c … 0 F D = a c c e s s ( V A _ c ) i f n o t p o l i c y ( D ) R e j e c t ( ) … u s e ( V A _ c )

  32. Attacker w r i t e ( V A _ n c , 0 ) … memory w r i t e ( V A _ n c , 1 ) VA_nc 1 f r e e ( V A _ n c ) Victim PA cache D = a c c e s s ( V A _ c ) line dirty VA_c … 0 F D = a c c e s s ( V A _ c ) i f n o t p o l i c y ( D ) R e j e c t ( ) … u s e ( V A _ c )

  33. Attacker w r i t e ( V A _ n c , 0 ) … memory w r i t e ( V A _ n c , 1 ) VA_nc 1 f r e e ( V A _ n c ) Victim PA cache D = a c c e s s ( V A _ c ) line dirty VA_c … 0 F D = a c c e s s ( V A _ c ) i f n o t p o l i c y ( D ) R e j e c t ( ) … u s e ( V A _ c )

  34. Attacker w r i t e ( V A _ n c , 0 ) … memory w r i t e ( V A _ n c , 1 ) VA_nc 1 f r e e ( V A _ n c ) Victim PA cache D = a c c e s s ( V A _ c ) line dirty VA_c … 0 F D = a c c e s s ( V A _ c ) i f n o t p o l i c y ( D ) R e j e c t ( ) … u s e ( V A _ c )

  35. Attacker w r i t e ( V A _ n c , 0 ) … memory w r i t e ( V A _ n c , 1 ) VA_nc 1 f r e e ( V A _ n c ) Victim PA cache D = a c c e s s ( V A _ c ) line dirty VA_c … 0 F D = a c c e s s ( V A _ c ) i f n o t p o l i c y ( D ) R e j e c t ( ) … u s e ( V A _ c )

  36. Attacker w r i t e ( V A _ n c , 0 ) … memory w r i t e ( V A _ n c , 1 ) VA_nc 1 f r e e ( V A _ n c ) Victim PA cache D = a c c e s s ( V A _ c ) line dirty VA_c … 0 F D = a c c e s s ( V A _ c ) i f n o t p o l i c y ( D ) R e j e c t ( ) … u s e ( V A _ c )

  37. Attacker w r i t e ( V A _ n c , 0 ) … memory w r i t e ( V A _ n c , 1 ) VA_nc 1 f r e e ( V A _ n c ) Victim PA cache D = a c c e s s ( V A _ c ) line dirty VA_c … 0 F D = a c c e s s ( V A _ c ) i f n o t p o l i c y ( D ) R e j e c t ( ) … D = = 0 u s e ( V A _ c )

  38. Attacker w r i t e ( V A _ n c , 0 ) … memory w r i t e ( V A _ n c , 1 ) VA_nc 1 f r e e ( V A _ n c ) Victim PA cache D = a c c e s s ( V A _ c ) line dirty VA_c … 0 F D = a c c e s s ( V A _ c ) i f n o t p o l i c y ( D ) R e j e c t ( ) … D = = 0 u s e ( V A _ c )

  39. Attacker w r i t e ( V A _ n c , 0 ) … memory w r i t e ( V A _ n c , 1 ) VA_nc 1 f r e e ( V A _ n c ) Victim PA cache D = a c c e s s ( V A _ c ) line dirty VA_c … 0 F D = a c c e s s ( V A _ c ) i f n o t p o l i c y ( D ) R e j e c t ( ) … e v i c t i o n u s e ( V A _ c )

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend