Skip to content
WrinkleFree edited this page Feb 24, 2015 · 6 revisions

RECFI Wiki

Unhardened code interfacing

Approaches taken by existing projects

As of now the hardened code aborts when called from an unhardened function (such as a library), because the check code looks for an id that does not exist.

We need to find a way to determine if the caller is an external or internal call, if it's a valid external call, we can skip the abort.

  • Maintain state, disable all checks if execution starts in shared library (non-hardened function).
  • Function pointers, it may be possible to differentiate function pointers in LLVM. If we can identify function pointers, we can replace all function pointers by a wrapper that has the right ID but returns anyway, since it might be called by an external function. For this to work, the assumption that the only way an external library can call a hardened function is if we give it a function pointer.

Interesting Ideas or Papers (Subject to further inquiry)

Open Issues

  • longjmp