This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Pointer Authentication of ARM

Hello,
I am a student of Master’s Degree in Embedded Computing Systems offered by Sant’Anna School of Advanced Studies and the University of Pisa. I am carrying out a cyber security thesis project focusing in particular on Pointer Authentication of ARM. I have some questions:
1) why do you need XPAC * instruction? Is not it a problem for security in case of an attack? If so, is it possible to trap only the use of this instruction for a certain
exception level?
2) When an authentication fails, a translation faults occurs. Is it possible to know, from the values of registers, that this is given by a failed authentication and not for another reason?
3) What types of attacks PAC can block and which ones do not?
4) Which ARM processors implement PAC?

Parents
  • 1) why do you need XPAC * instruction? Is not it a problem for security in case of an attack? If so, is it possible to trap only the use of this instruction for a certain
    exception level?
    The ARMv8.3 pointer authentication extension adds functionality to detect modification of pointer values, mitigating certain 
    classes of attack such as stack smashing, Return-Orientated-Programming (ROP) and Jump-Orientated-Programming (JOP).
    System register HCR_EL2/SCR_EL3 controls that trap accesses to Pointer authentication functionality: Traps to EL2/3 any use of an enabled Pointer
    authentication instruction
    2) When an authentication fails, a translation faults occurs. Is it possible to know, from the values of registers, that this is given by a failed authentication and not for another reason?
    New instructions are added which can be used to:
    
    * Insert a PAC into a pointer
    * Strip a PAC from a pointer
    * Authenticate strip a PAC from a pointer
    
    If authentication succeeds, the code is removed, yielding the original pointer.
    If authentication fails, bits are set in the pointer such that it is guaranteed
    to cause a fault if used.
    
    3) What types of attacks PAC can block and which ones do not?
    making stack smashing, Return-Orientated-Programming (ROP) and Jump-Orientated-Programming (JOP) hard
    4) Which ARM processors implement PAC?
    Next generation processor that support armv8.3, PAuth, currently there's no such processor.
Reply
  • 1) why do you need XPAC * instruction? Is not it a problem for security in case of an attack? If so, is it possible to trap only the use of this instruction for a certain
    exception level?
    The ARMv8.3 pointer authentication extension adds functionality to detect modification of pointer values, mitigating certain 
    classes of attack such as stack smashing, Return-Orientated-Programming (ROP) and Jump-Orientated-Programming (JOP).
    System register HCR_EL2/SCR_EL3 controls that trap accesses to Pointer authentication functionality: Traps to EL2/3 any use of an enabled Pointer
    authentication instruction
    2) When an authentication fails, a translation faults occurs. Is it possible to know, from the values of registers, that this is given by a failed authentication and not for another reason?
    New instructions are added which can be used to:
    
    * Insert a PAC into a pointer
    * Strip a PAC from a pointer
    * Authenticate strip a PAC from a pointer
    
    If authentication succeeds, the code is removed, yielding the original pointer.
    If authentication fails, bits are set in the pointer such that it is guaranteed
    to cause a fault if used.
    
    3) What types of attacks PAC can block and which ones do not?
    making stack smashing, Return-Orientated-Programming (ROP) and Jump-Orientated-Programming (JOP) hard
    4) Which ARM processors implement PAC?
    Next generation processor that support armv8.3, PAuth, currently there's no such processor.
Children