看到「Rowhammer Resistant Coding in Sudo (github.com/sudo-project)」這邊的討論,提到了 sudo 專案 (變成 root 那個 sudo 軟體) 怎麼緩解 ROWHAMMER 攻擊的實作,原連結是去年九月時 GitHub 上的 commit:「Try to make sudo less vulnerable to ROWHAMMER attacks.」。
從 commit 裡面可以看到這個:
- #define AUTH_SUCCESS 0 - #define AUTH_FAILURE 1 - #define AUTH_INTR 2 - #define AUTH_ERROR 3 - #define AUTH_NONINTERACTIVE 4 + #define AUTH_SUCCESS 0x52a2925 /* 0101001010100010100100100101 */ + #define AUTH_FAILURE 0xad5d6da /* 1010110101011101011011011010 */ + #define AUTH_INTR 0x69d61fc8 /* 1101001110101100001111111001000 */ + #define AUTH_ERROR 0x1629e037 /* 0010110001010011110000000110111 */ + #define AUTH_NONINTERACTIVE 0x1fc8d3ac /* 11111110010001101001110101100 */
可以看到想法上是讓要攻擊時需要改變的 bit 數量大幅增加?尤其是對 AUTH_SUCCESS
的 hamming distance?
另外這段也是類似的設計:
+ /* Allowed by policy (rowhammer resistent). */ + #undef ALLOW + #define ALLOW 0x52a2925 /* 0101001010100010100100100101 */ + + /* Denied by policy (rowhammer resistent). */ + #undef DENY + #define DENY 0xad5d6da /* 1010110101011101011011011010 */
這邊 ALLOW
與 DENY
這邊也是把 hamming distance 設計到最大,兩個 XOR 後剛好是 0xffffffff
。
會不會變成安全相關軟體實作上的 practice?