Запис звернень до кешу пристроєм управління пам'яттю (MMU) в процесорі по мірі виклику сторінок по особливому паттерну, розробленим для виявлення відмінностей між різними рівнями ієрархії таблиць. Наприклад, патерн «драбинки» (зліва) вказує на перший рівень ієрархії, тобто PTL1, при виклику сторінок за 32K. Для інших рівнів ієрархії теж є методи виявлення

П'ятеро дослідників з Амстердамського вільного університету (Нідерланди) довели фундаментальну вразливість техніки захисту пам'яті ASLR на сучасних процесорах. Вони виклали исходники скриптів JavaScript і докладний опис атаки AnC (ASLR⊕Cache), до якої схильні практично всі процесори.

Дослідники перевірили AnC на 22 процесорах різних архітектур — і не знайшли жодного, який був би захищений від такого роду атаки по сторонньому каналу. Це і зрозуміло, адже у всіх процесорах використовується буфер динамічної трансляції для кешування адрес пам'яті, які транслюються у віртуальні адреси. Захиститися від цієї атаки можна тільки відключивши кеш процесора.

Читати далі →

Організація віртуальної пам'яті


Привіт, Хабрахабр!
попередній статті я розповів про vfork() і пообіцяв розповісти про реалізацію виклику fork() як з підтримкою MMU, так і без неї (остання, само собою, зі значними обмеженнями). Але перш, ніж перейти до подробиць, буде логічніше почати з пристрою віртуальної пам'яті.

Звичайно, багато чули про MMU, сторінкові таблиці і TLB. На жаль, матеріали на цю тему зазвичай розглядають апаратну бік цього механізму, згадуючи механізми ОС тільки в загальних рисах. Я ж хочу розібрати конкретну програмну реалізацію в проекті Embox. Це лише один з можливих підходів, і він досить легкий для розуміння. Крім того, це не музейний експонат, і при бажанні можна залізти під капот" ОС і спробувати що-небудь змінити.

Читати далі →