와는 별개로"S" 옵션malloc.conf그리고 계속 증가해kern.stackgap_random삭제하고허용된마운트 옵션, 그 밖의 사항기억 관련OpenBSD의 강화는 켤 수 있지만 기본적으로는 켤 수 없습니까?
커널을 다시 컴파일해야 하고 최소한의 소스 코드 수정이 필요한 경우에도 옵션이 유용할 것입니다.
일반적으로 코딩 오류로 인해 많은 응용 프로그램(예: 포트의 응용 프로그램)이 충돌하기 때문에 이를 활성화하지 않습니다.
grsecurity에서 목록/아이디어를 얻으십시오(있는 경우 아직 OpenBSD에서는 사용되지 않습니다). 그러나 프로그래머가 아닌 경우에는 어렵습니다.https://grsecurity.net/features.php
답변1
“...OpenBSD에는 켤 수 있지만 기본적으로 활성화되지 않는 다른 메모리 관련 강화 메커니즘이 있습니까?
커널(또는 내가 사용한 프로그램)을 다시 컴파일해야 하고 최소한의 소스 코드 수정이 필요한 경우에도 이 옵션이 유용할 것입니다. ".
내가 지금까지 알아낸 것:
항상 커널의 최신 안정 버전으로 업데이트하십시오. 또한 시청하세요http://www.trustedbsd.org/. 참고자료를 읽어보세요.Wikipedia의 OpenBSD 보안 기능 페이지.
오픈BSD기억 관련보안 기능:
주소 공간 레이아웃 무작위화(ASLR): sysctl 설정vm.randomize_mmap도착하다1(기본적으로 켜져 있어야 하지만 DragonflyBSD에서는 꺼져 있고 FreeBSD에서는 구현되지 않은 것 같습니다.)
사용타이밍 보안_bmp(3) 및 bcmp(3) 또는 memcmp(3) 대신 timingsafe_memcmp(3).
사용명시적_bzero(3)민감한 메모리(예: 비밀번호 변수)를 지우는 bzero(3) 대신 변형입니다.
위치 독립적 실행 파일(PIE):다음으로 연결-파이또는--이미지 실행 파일
위치 독립적 실행 파일을 만듭니다. 이는 현재ELF에서만 지원됩니다.플랫폼. 위치 독립적 실행 파일은 동적 링커에 의해 운영 체제가 선택한 가상 주소(호출마다 다를 수 있음)로 재배치된다는 점에서 공유 라이브러리와 유사합니다. 일반적인 동적으로 링크된 실행 파일과 마찬가지로 실행될 수 있으며 실행 파일에 정의된 기호는 공유 라이브러리에 의해 재정의될 수 없습니다.
무작위화매핑(2): MAP_FIXED를 사용하지 마세요. mquery를 사용하여 확인하세요.
사용을 고려해보세요배열 재할당(3)민감한 데이터의 경우 malloc(3), calloc(3) 또는 realloc(3) 대신callocarray(3) 및 Freezero(3)를 사용하십시오.
스택 충돌 방지(SSP): GCC + Propolice(SSP)가 기본적으로 활성화되어 모든 라이브러리와 애플리케이션을 빌드합니다.
KERN_STACKGAPRANDOM(kern.stackgap_random)는 프로그램이 실행될 때마다 스택 포인터에 추가되는 임의의 값의 범위를 설정합니다. 버퍼 오버플로 악용을 더욱 어렵게 만들기 위해 임의의 값이 추가됩니다. 이것숫자가 클수록 어렵다이러한 추가 보호를 무차별 대입으로 수행하지만 이는 더 큰 메모리 낭비를 의미하기도 합니다. 기본:262144.
새로운 것을 사용하다구조 py(3)strcpy(3), strcat(3), strncpy(3) 또는 strncat(3) 대신 strlcat(3)을 사용하면 안전한 문자열 복사가 가능합니다.
사용스테튼햄(3)atoi(3) 및 strtol(3) 인터페이스 계열 대신 함수를 사용합니다.
W^X 정책: 페이지는 쓰기 및 실행이 가능하지만 동시에 쓰기 및 실행이 가능하지는 않습니다. 그러므로 W^X. 아이디어는.rodata세그먼트에는 PROT_READ 속성만 있으므로 PROT_EXEC 속성이 손실됩니다.