난 당신이 뭘 하려는지 이해 주셔서 감사합니다,하지만 난이 당신에게 이유없이 따뜻하고 퍼지 느낌을 제공하는 보안 기능이 될 수 있다는 것을 정말 걱정; 그것들은 가장 위험한 종류의 보안 기능입니다. (이것에 대한 또 다른 예는 당신의 옆에 앉아있는 LSM 일 수도 있지만, 나는이 의견에 소수에 속한다고 생각한다.)
프로세스의 프로그램 데이터 만이 영향을 미치는 것은 아니다 그것의 행동. 스택 오버플로는 악의적 인 코드가 스택에 쓰여지고 점프하여 원본 프로그램 텍스트를 무결성 검사합니다. 공격자가 원래의 변경되지 않은 프로그램 텍스트 to his advantage을 사용할 수 있다는 사실은 말할 필요도 없습니다.
또한 커널 내부에서 지속적으로 DSA를 계산할 경우 성능 문제가 발생할 수 있습니다. 그리고 나중에 더 많은 권한을 가진 커널 코드 목록에 추가 할 것입니다.
어떤 경우 든 질문에 답할 수 있습니다. 타이머를 사용하여 각 프로세스를 홉핑하고 무결성을 검사하는 커널 스레드를 인스턴스화하는 커널 모듈을 작성할 수 있습니다. 이는 각 프로세스의 페이지 테이블을 사용하고, 읽기 전용 페이지에 매핑하고, 무결성 검사를 통해 수행 할 수 있습니다. 하지만 각각의 메모리 페이지가 아마도 자체 서명을 가질 필요가 있기 때문에이 방법을 모두 연결하지 않으면 작동하지 않을 수 있습니다.
주의 할 점은 공유 라이브러리는 스윕 당 한 번만 무결성 검사를 받아야한다는 것입니다. 스니핑 당 하나의 라이브러리가 사용되는 모든 프로세스에서 다시 매핑되기 때문입니다. 이 기능을 구현하려면 세련미가 필요합니다. 따라서 디자인의이 "멋지는"섹션에서이 기능을 사용할 수도 있습니다.
이것이 좋은 생각이 아닐 수도 있다는 나의 논리에 동의하지 않는다면, 나는 당신의 생각에 매우 흥미가있을 것입니다. 나는 얼마 전 직장에서이 생각을 접했고 우리의 토론에 신선한 아이디어를 가져다주는 것이 좋을 것입니다.
힙, 스택 공간, malloc의 메모리 등에 변수를 만들고 저장하는 응용 프로그램을 어떻게 처리 할 것을 제안합니까? – fpmurphy1
메모리의이 부분은 동적이기 때문에 일단 프로그램이 실행되면이 부분을 확인하는 좋은 방법이 없다고 가정합니다. 아마 고정 된 부분을 고수하고 침입자가 그곳에서 아무 것도 변경하지 않았는지 확인해야합니다. – Chris
보안 모듈이 HLOS 또는 커널에 있습니까? 커널의 경우 vmalloc 대신 kmalloc을 사용하여 주소가 연속적인지 확인하십시오. –