본문 바로가기

소프트웨어3

[소프트웨어보안] 프로그래밍 관점에서의 소프트웨어 보안 프로그래머의 잘못된 가정 프로그래머가 갖는 잘못된 신뢰 가정 1. 운영체제는 안전하고, 방화벽은 트랙픽을 필터링한다. 2. 네트워크에서 오는 입력은 안전할 것이다. 3. 컴파일된 프로그램은 읽을 수 없다. - 단지 읽기 어려운 것일 뿐 - 모호하지만, 감추지 않음(난독화의 경우라도) - 리버싱도구의 진화 • 코드에 담겨진 비밀 내용이 나타남 • 클라이언트/서버의 통신이 악용될 수 있음 4. 나의 웹페이지는 입력을 점검할 것이 다. 따라서 프로그램에 데이터가 도착할 때 적정한 포멧을 가질 것이다. - 직접 http 요청을 제작 - 요청을 보내기 직전에 변경 - 모든 입력은 서버 측에서 재검증해야함 - 특별한 인코딩이 포함되어 있을 수 있음 Memory corruption attacks memory corr.. 2022. 12. 6.
[소프트웨어보안] Set-UID 권한 프로그램과 공격 기법 권한 있는 프로그램의 필요성 Linux 환경 - /etc/shadow에 password를 저장 - 사용자가 자신의 비밀번호를 수정하고자 할 때 해당 파일 사용 - Only Writable to the owner, Owner만 사용 가능! - 파일의 정보를 보려면 root로 접근하거나 sudo를 사용 일반 사용자가 패스워드 파일을 볼 수 있게 하는 방법 - 패스워드의 변경을 위해서 shadow 파일에 대한 변경 필요 - 일반 사용자는 shadow 파일을 변경하지 못한다. (root만 변경 가능) - 운영체제가 세밀한 접근통제를 수행하도록 하는 방법 1) 현재는 파일 단위로 접근 통제를 수행 2) 파일 내의 특정 영역까지 접근 통제 규칙을 적용 (현재 불가능) Set-UID 메커니즘 shadow 파일의 구성.. 2022. 11. 16.
[소프트웨어보안] SW 보안의 5 요소 1. 소프트웨어보안 실무와 이론의 차이점 실무 - 안전하게 프로그래밍, 보안 이슈 진단 - 언어 사용의 실수, API 내 문제, 암호기술 및 통신 방법의 문제 - 매우 실무적이고 자세히 기술해야 하는 문제 이론 - 프로그램 실행 중단의 이유와 이의 해결 방법의 이해 - 자동화 도구를 포함한 최신 기술의 이해 - 개념과 방법론 2. 소프트웨어 보안의 일반적인 요소들 1) 위협 (Threats) - 공격자가 원하고 할 수 있는 것 - 악성코드의 종류: malware, spyware, worm - 어떻게 악성코드의 감염이 발생하나? (-> 접촉이 있어야 감염 발생!) - 취약점과 약점(weaknesses)의 분류 필요 (CVE and CWEs) 2) 취약점 (Vulnerabilities) - Overflows.. 2022. 9. 28.