목록Secure Coding (3)
#dokydoky
팀내부에서 발표했던 자료중 Smart pointer관련 PPT.
IntroductionSUID, GUID, 특정 Supplemental Group가 설정되어 있는 바이너리라면 Code audit할 때 최소한의 권한이 설정되어 있는지 잘 확인해야 한다.권한 설정에 오류가 있으면 임의의 코드가 실행한 바이너리의 경우 쉽게 상위 권한을 얻을 수 있게 된다.OS의 종류와 버전에 따라 그리고 root권한의 유무에 따라 API의 동작이 다르므로 주의해야 한다. User IDTypes Real user ID, Saved set-user-ID, Effective user IDFunctionsint setuid(uid_t uid); int seteuid(uid_t euid); int setreuid(uid_t ruid, uid_t euid); int setresuid(uid_t ru..
Double free 취약코드 struct P {}; class C { P *p; public: C(P *p) : p(p) {} ~C() { delete p; } void f() {} }; void g(C c) { c.f(); } void main() { P *p = new P; C c(p); g(c); } g()의 매개변수 타입을 reference로 변경해주면 되지만, 근본적으로 이런 실수가 발생하지 않게 복사 생성자와 대입 연산자를 삭제한다. 이 경우 g()함수의 매개변수가 reference 타입이 아니면 컴파일 에러가 발생하여 컴파일 타임에 오류를 확인할 수 있다. struct P {}; class C { P *p; public: C(P *p) : p(p) {} C(const C&) = delete..