ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [2022/03/04][짤막한 이야기 - 코드 패킹과 W^X]
    짤막한 이야기 2022. 3. 4. 09:38
    728x90
    반응형

    [2022/03/04][짤막한 이야기 - 코드 패킹과 W^X]
    W^X는 대표적인 소프트웨어 보호 기술이다.
    코드 삽입(Code Injection)을 통한 공격을 가장 손쉽게 방지할 수 있는 기술이며, 코드실행 권한과 코드쓰기 권한을 동시에 부여하지 않음으로써 각 섹션의 권한을 한정할 수 있는 것이다.
    현대의 컴파일러에 의하여 컴파일되는 소스코드는 자동적으로 이 W^X가 적용되게끔 설정되어 있다.
    즉, 현대의 프로그램은 기본적으로 W^X를 포함하고 있는 것이다.
    그런데 코드 패킹(Code Packing) 기술을 기억하는가?
    코드 패킹은 미리 실행코드를 다른 값으로 변형하여 놓았다가 실행되기 직전에 이를 언패킹한다고 하였다.
    언패킹이라는 행위는 “패킹된 코드를 원본 실행코드로 복원”하는 행위이며, 이른바 코드쓰기에 해당한다.
    즉, 패킹된 프로그램은 원본 실행코드로 복원되었을 때의 코드실행 권한과 원본 실행코드로 복원하기 위한 코드쓰기 권한이 동시에 부여된다.
    현대의 컴파일러의 컴파일 정책에 위배되는 것이다.
    따라서 코드 패킹도 대표적인 소프트웨어 보호 기술이지만, 이를 적용하기 위해서는 다른 소프트웨어 보호 기술(W^X)을 자연스럽게 버려버리게 된다.
    그렇다면, 과연 이미 취약하다고 알려진 소프트웨어는 위의 둘 중 어느쪽의 보호 기술을 채용하는 것이 더 안전할까?
    [관련된 짤막한 이야기 - W^X[2022/03/03]]
    [관련된 문서 - 핀툴 프로그래밍 기본서[제3부. 핀툴로 UPX 언패킹하기]]
    #이야기 #루니프 #핀 #핀툴 #W^X #섹션 #권한 #취약점 #패킹 #언패킹 #해커 #개발자 #분석가 #코딩

    728x90
    반응형
Designed by Tistory.