본문 바로가기

보안/시큐어코딩

[CERT C 시큐어코딩표준-01] 전처리기(PRE)

제안(Recommendations)


PRE00-C. 함수형의 매크로보다는 인라인이나 정적 함수를 사용한다.

PRE01-C. 매크로에서는 매개변수에 괄호를 사용한다.

PRE02-C. 매크로로 치환될 영역은 반드시 괄호로 둘러싸야 한다.

PRE03-C. 타입 인코딩시 매크로 정의 대신 타입 정의를 사용한다.

PRE04-C. 표준 헤더 파일 이름을 재사용하지 않는다.

PRE05-C. 토큰들을 연결하거나 문자열 변환을 할때 매크로 치환을 고려한다.

PRE06-C. 헤더 파일에 항상 일클루전 가드를 둔다.

PRE07-C. 연속되는 물음표(?)를 사용하지 않는다.

PRE08-C. 중복된 헤더 파일 이름이 없는지가 보장되어야 한다.

PRE09-C. 안전한 함수를 덜 안전한 함수로 바꾸지 않는다.

PRE10-C. 복수 구문 매크로를 do-while 루프로 감싼다.

PRE11-C. 세미콜론으로 매크로 정의를 종료하지 않는다.

PRE12-C. 안전하지 않은 매크로를 정의하지 않는다.

PRE13-C. 버전 및 기능을 테스트하기 위해 표준 사전 정의 된 매크로를 사용한다.


규칙(Rules)


PRE30-C. 유니버셜 문자열 이름을 여러 문자열을 붙여서 만들지 않는다.

PRE31-C. 불안전한 매크로를 할당, 증가, 감소, 메모리 변수 접근, 함수 호출과 함께 사용하지 않는다.

PRE32-C. 매크로 인수에 내부 처리기 지시문을 사용하지 않는다.


위험평가요약


Rule

Severity

Likelihood

Remediation Cost

Priority

Level

PRE00-C

Medium

Unlikely

Medium

P4

L3

PRE01-C

Medium

Probable

Low

P12

L1

PRE02-C

Medium

Probable

Low

P12

L1

PRE03-C

Low

Unlikely

Medium

P2

L3

PRE04-C

Low

Unlikely

Medium

P2

L3

PRE05-C

Low

Unlikely

Medium

P2

L3

PRE06-C

Low

Unlikely

Low

P3

L3

PRE07-C

Low

Unlikely

Medium

P2

L3

PRE08-C

Low

Unlikely

Medium

P2

L3

PRE09-C

High

Likely

Medium

P18

L1

PRE10-C

Medium

Probable

Low

P12

L1

PRE11-C

Medium

Probable

Low

P12

L1

PRE12-C

Low

Probable

Low

P6

L2

PRE13-C

Low

Probable

Low

P6

L2

PRE30-C

Low

Unlikely

Medium

P2

L3

PRE31-C

Low

Unlikely

Low

P3

L3

PRE32-C

Low

Unlikely

Medium

P2

L3


출처: https://www.securecoding.cert.org/confluence/pages/viewpage.action?pageId=1064