딸려 있는 답글을 모두 읽어 보면 glibc는 GNU C를 사용하여 구현되어 있으며, gcc를 제외한 컴파일러는 GNU C 확장을 전부 지원하지는 않습니다. glibc 역시 gcc가 아닌 다른 컴파일러를 사용하는 건 공식적으로 지원하지 않습니다. 그런데 glibc가 아닌 다른 C 라이브러리를 사용하면 안 되는 이유는 혹시 소스 코드 문제인가요?
C/C++ 코드상에서 코드포인터를 =(assignment)로 읽고 쓸때마다
인텔의 AES 암호화/복호화 인스트럭션을 중간에 삽입하여서
공격자가 중간에 buffer overflow 공격을 하여 코드포인터 값을 변조할 수 없도록 하는
Cryptographic CFI (CCFI)라는 컴파일러로 프로그램들을 컴파일하려고 하는데
CCFI는 Clang 기반으로 제작된 컴파일러입니다.
CCFI는 현재 FreeBSD에서만 지원되는데, 그 이유는
해당 프로그램이 의존하는 모든 동적/정적 라이브러리들 또한 CCFI로 컴파일하여야 하는데
리눅스의 glibc는 Clang으로 직접 컴파일이 되지 않기 때문에
현재 리눅스에서는 사용할 수가 없는 상태입니다.
하지만 리눅스에서 꼭 사용해야만 하는 일이 있어서
튜닝을 해서라도 glibc를 clang으로 컴파일하는 방법을 찾고 있습니다.
https://sourceware.org/ml
https://sourceware.org/ml/libc-alpha/2014-05/msg00400.html
딸려 있는 답글을 모두 읽어 보면 glibc는 GNU C를 사용하여 구현되어 있으며, gcc를 제외한 컴파일러는 GNU C 확장을 전부 지원하지는 않습니다. glibc 역시 gcc가 아닌 다른 컴파일러를 사용하는 건 공식적으로 지원하지 않습니다. 그런데 glibc가 아닌 다른 C 라이브러리를 사용하면 안 되는 이유는 혹시 소스 코드 문제인가요?
Clang 기반의 ROP 공격방지용 보안 컴파일러로 glibc를 컴파일해야 하기 때문입니다
C/C++ 코드상에서 코드포인터를 =(assignment)로 읽고 쓸때마다
인텔의 AES 암호화/복호화 인스트럭션을 중간에 삽입하여서
공격자가 중간에 buffer overflow 공격을 하여 코드포인터 값을 변조할 수 없도록 하는
Cryptographic CFI (CCFI)라는 컴파일러로 프로그램들을 컴파일하려고 하는데
CCFI는 Clang 기반으로 제작된 컴파일러입니다.
CCFI는 현재 FreeBSD에서만 지원되는데, 그 이유는
해당 프로그램이 의존하는 모든 동적/정적 라이브러리들 또한 CCFI로 컴파일하여야 하는데
리눅스의 glibc는 Clang으로 직접 컴파일이 되지 않기 때문에
현재 리눅스에서는 사용할 수가 없는 상태입니다.
하지만 리눅스에서 꼭 사용해야만 하는 일이 있어서
튜닝을 해서라도 glibc를 clang으로 컴파일하는 방법을 찾고 있습니다.
댓글 달기