본문 바로가기
Integration & Python

Semgrep와 보안 이슈

by 누워서 코딩 2022. 9. 5.

Semgrep 강력한 보안 기능

이전 포스팅에서 Semgrep을 다루면서 보안 기능(Security Function)이 중점을 두고 있다고 설명했었는데요. Semgrep의 레지스트리를 찾아보면 Security-audit(보안 감사)라는 보안만 중점으로 모아둔 규칙이 있습니다.

 

security-audit
security-audit

Security와 관련해서 총 253개의 규칙들을 모아둔 규칙 집합입니다. 여기에서는 중요도가 높은 Error 관련된 규칙만 필터링해보면 54개가 나열됩니다. 현재 진행 중인 저장소에 이 Error 관련 규칙들만이라도 보안 검사해서 실제 코드를 적용해봐도 보안 관련 취약점들은 꽤 많은 개선이 될 것으로 보이는데요.

 

security audit
security audit

한 예로 다음은  "system call" 함수가 사용된 경우로 Error(오류)로 필터링된 예제입니다. 

semgrep --config="r/python.lang.security.audit.dangerous-system-call.dangerous-system-call"

 

dangerous-system-call
dangerous-system-call

이 system call 오류는 "위의 security-audit"의 규칙 집합에 포함된 규칙들 중 하나입니다. 설명에 나와 있듯 system call 사용 시 "악의적인 행위자가 명령을 실행할 수 있으므로 외부 데이터가 이 함수 호출에 도달할 수 있는 경우 위험" 할 수 있다는 내용이 담겨있습니다. 이 경우 system call 대신 'subprocess' 모듈을 대신 사용할 것을 제안하고 있습니다.

 

이해가 되시나요? 저는 잘 이해가 되지 않습니다. 그래서 조금 더 자세한 설명을 보기 위해 Rule에서 링크된 URL로 들어가보면 좀 더 자세한 설명을 보실 수 있는데요.

 

...
 
관련해서 참조할만한 문서도 링크되어 있습니다.
 
 

CWE - CWE-78: Improper Neutralization of Special Elements used in an OS Command ('OS Command Injection') (4.8)

div.collapseblock { display:inline} CWE-78: Improper Neutralization of Special Elements used in an OS Command ('OS Command Injection')Weakness ID: 78Abstraction: BaseStructure: Simple The software constructs all or part of an OS command using externally-in

cwe.mitre.org

 

이중 CWE-78 문서가 제일 자세한 설명이 담겨 있었습니다. 그래서 확인해 보면 확장 설명으로 다음의 솔루션들이 있습니다.

CWE-78
CWE-78

 

 

댓글