네 마치기 전에 글리벡 내부 변화에 대해 짧게 말씀드리고 싶은데요
강의 중에 적당한 장소를 못 찾겠더군요 가장 중요한 건 글립코 2호부터 말똥가리를
바꾸는 겁니다 말록 바늘은 34개 자동으로 해제됩니다
여전히 존재하지만 프로그램 개발자가 명시적으로 허용하지 않는 한 무시당해요
하지만 libc-dso에는 여전히 보호되지 않은 기능 포인트가 있습니다 하지만 포크_핸들러의
child_핸들러 포인터가 있죠 프로세스가 하나 이상일 때 그렇게 부릅니다
맞아요 물론 집행의 흐름을 장악할 방법은 많습니다 PTR_맹글
마크로스가 보호하는 포인터는 빼고요 민감한 데이터를 저장하는 이름하여 서비스 스위치 혹은 NSS
기능도 있습니다
스도 스도 뿌리 셸을 이용한 NSS를 이용할 수 있는 방법이 하나 있습니다 이 아웃로 자원에 연결돼
있는 거죠
프로그램을 이용했어요 곳 3과목의 plt 섹션에 훈련소가
있고 dso에도 훈련소가 있습니다 곳 네 plt plt는 렐로의 일부가 저장된다는 점에서 개발자들을
착취하기 더 수월합니다
네 네 파일스트림 착취를 작성할 때 눈치챘겠지만 글립벡의 현대 버전에는 버그가
포함돼 있어요 _libc_IO_vtables 섹션이죠 모든 stdio vtables이
쓰임블로 포함돼 있어요
네 네 파일 스트림 vtable 포인터는 _libc_IO_tvtables를
가리켜야 해요 , 구역 자체도 손상될 수 있어요
다른 Linux 디스트로스에서요
놀라실 수도 있지만 생각보다 자주 있는 일입니다
이 버그가 어디서 왔는지 추적해서 보고해 봤지만 안타깝게도 응답이 없습니다
글리벡 2를 완화한 또 다른 조치가 있습니다 34는 더블 프리 감지용 프리 tcache
덩어리 키 필드가 처리되는 방식의 변화입니다
네 전에는 tcache에 표시했지만 안전 연결 완화라는 걸 만든 사람이 완화를 하지
않으면 안전한 연결 실패로 이어질 수 있다는 걸 지적하자 그냥 두는 쪽으로
방향을 바꿨습니다
대신 임의 값이 됐죠
바로 CET로 불리는 통제 흐름 감시 기술로 인텔 혼합물로 섀도 스택과 간접
브랜치 트래킹을 구현합니다 ???? 기록 당시 일부 인텔 프로세서는 이를 지원하고 일부는
아닙니다
하지만 간접 지주에는 영향을 미칩니다 말록 갈고리를 작동시킨 지주처럼요 합법적인
지주 대상에게 리다이렉팅하지 않으면 공격에 영향을 미칩니다 가령, 가젯을 사용할
때요 하지만 목표인 글리벡 버전이 IBT 설명서로 컴파일되고 하드웨어가 CET를 지원할
때만 해당합니다
메모리 태깅 확장, 혹은 MTE도 언급하고 싶어요
머로더즈 mmap 강연에서 잠깐 언급했었죠
과잉 방지를 위해 계획된 완화 조치예요 네 기록할 때는 두어 개의 ARM 프로세서에서만
지원됐거든요 MPX 쪽으로 갔다가 더 넓은 시장으로 가기 전에 사라질 수도
있어요 ? 네
하지만 규모에 구현될 경우 정렬 요구 사항이 있어 말로크가 할당하는 덩어리의
크기를 바꿀 수 있거든요
넘칠 수도 있지만 두고 봐야죠
제 Linux 힙 개발 코스를 들어주셔서 감사합니다
선생님 수업 내용을 거의 다 이해하셨다면 엄청난 착취에 대해 저만큼 아실 테고 더는
가르칠 게 없어요
당신이 공격성 개발자라면 레드팀이나 ctf 선수라면 내가 당신 실력을 향상시켰길 바라요
혹은 개발자라면 힙 버그의 심각성과 피해야 할 방법을 더 잘 알고 있을 것입니다
네 무엇보다 수업 잘 들었고 시간 있으면 솔직한 평 써 주면 고맙겠어요
지구를 해킹해요