02. 정보보안정책 및 법규
법규
- 법: 국회에서 정함. 예: 개인정보보호법
- 시행령: 상위법에 대한 구체적인 내용을 기술. 행정부에서 정하며 대통령령
- 지침, 규정: 상위 법령에 따라 구체적인 해당 기관의 내용을 반영. 예: 국가정보보안기본지침
- 가이드라인
소프트웨어 개발 보안 가이드라인
주요 내용
- 소프트웨어 개발 보안 방법론
- 분석-설계 단계 보안 강화 활동
- 입력 데이터 검증 및 표현
- 보안 기능
- 코드 오류
소프트웨어 보안 취약점
- SW 보안 취약점은 다음의 경우에 발생함.
- 보안 요구사항이 정의되지 않았거나
- 설계에 논리적인 오류가 있거나
- 보안에 취약한 코딩 규칙을 적용하였거나
- 소프트웨어 배치가 적절하지 않았거나
- 발견된 취약점에 대해 적절한 관리 또는 패치를 하지 않은 경우
소프트웨어 개발 생명 주기
- 정의단계: What (계획, 요구분석)
- 개발단계: How (설계, 개발, 테스트)
- 유지보수단계: Change (적응, 예방, 폐기)
프로세스 흐름
타당성 검토 → 개발계획 → 요구사항 분석 → 설계 → 개발 → 테스트 → 유지보수 → 폐기
소프트웨어 개발 보안 적용 효과
(Windows)
- 제품 발표 후 1년간 공격 취약점 수가 45% 감소 - Windows XP (After SDL v3.0): 119 - Windows Vista: 66
(SQL Server)
- 제품 발표 후 3년간 공격 취약점 수가 91% 감소 - SQL Server 2000 (After SDL v2.0): 34 - SQL Server 2005: 3
- 출처: Microsoft Security Blog and Microsoft TechNet Security Blog
외부환경 분석(법, 규정 등)에 따른 보안 항목 식별
| 관련항목 | 주요내용 |
|---|---|
| 내부관리계획의 수립 및 시행 | 개인정보의 안전한 처리를 위하여 내부관리계획 수립 및 시행 개인정보보호 책임자를 지정하고 역할 및 책임에 관한 사항을 규정 |
| 개인정보의 암호화 | 개인정보 암호화 적용 대상, 적용 시기 및 방법을 명확히 하여 관리 개인정보 처리 시 전송, 저장되는 개인정보의 암호화 방안 마련 |
| 개인정보처리시스템에 대한 접근통제 | 개인정보 처리시스템에 대한 접근권한을 부여, 변경, 말소에 관한 기준을 마련하여 차등 부여하고 체계적으로 관리 비밀번호 작성규칙을 수립하고 적용 |
| 개인정보의 안전한 저장, 전송 기술 적용 | 악성프로그램 등을 방지, 치료할 수 있는 백신 소프트웨어 등 보안 프로그램을 설치, 운영하고 최신 상태로 업데이트 정보통신망을 통한 개인정보 및 인증정보 송수신 시 암호화 등 안전한 전송기술 적용 개인정보처리시스템에 접속기록을 최소 1년 이상 보관, 관리하여 위변조 및 도난, 분실되지 않도록 안전하게 보관 |
설계 단계 보안 설계 기준
입력 데이터 검증 및 표현
| # | 보안약점 | 내용 |
|---|---|---|
| 1 | SQL 삽입 | 동적으로 SQL 쿼리를 생성하는 경우, 입력 값에 대한 검증 없이 쿼리문의 일부로 구성하면, 공격자가 입력 값 조작을 통해 DB 정보를 열람, 조작, 삭제 등이 가능한 취약점 |
| 2 | 경로 조작 및 자원 삽입 | 외부 입력값을 사용하여 파일 경로를 동적으로 구성할 경우, 공격자가 입력 값 조작을 통해 허가되지 않은 파일을 열람, 생성, 삭제 등이 가능한 취약점 |
| 3 | 크로스사이트 스크립트 | 웹 페이지에 악의적인 스크립트를 삽입하여 방문자들의 정보를 탈취하거나 비정상적인 기능 수행을 유발할 수 있는 취약점 |
| 4 | 운영체제 명령어 삽입 | 외부 입력값을 운영체제 명령어의 일부로 구성하여 실행하는 경우, 공격자가 입력 값 조작을 통해 시스템 내부 명령어를 실행시켜 중요정보를 열람, 조작, 삭제할 수 있는 취약점 |
| 5 | 위험한 형식 파일 업로드 | 실행 가능한 파일(exe, bat, sh)을 업로드 할 수 있는 경우, 공격자가 악성코드가 포함된 파일을 업로드하여 서버를 장악하거나, 악성코드를 유포할 수 있는 취약점 |
| 6 | 신뢰되지 않는 URL 주소로 자동 접속 연결 | 외부 입력값을 URL 주소로 사용하여 자동 접속 연결 시, 공격자가 입력 값 조작을 통해 악성 사이트로의 자동 접속 연결을 유도할 수 있는 취약점 |
| 7 | HTTP 응답 분할 | HTTP 응답 헤더를 조작할 수 있는 CRLF 문자를 필터링하지 않고 외부 입력값을 사용할 경우, 공격자가 악의적인 코드를 삽입하여 피싱 사이트로 접속을 유도하는 등의 공격이 가능한 취약점 |
| 8 | 정수 오버플로우 | 정수형 변수가 표현할 수 있는 최대/최소값을 벗어나 의도하지 않은 값으로 변하는 오버플로우 현상을 이용하여 메모리 정보 유출, 실행 흐름 변경 등을 유발하는 취약점 |
| 9 | 포맷 스트링 삽입 | 외부 입력값이 포맷 스트링으로 사용될 때, 공격자가 포맷 스트링 조작을 통해 메모리 내용을 읽거나 특정 주소에 값을 쓸 수 있어 시스템 권한 탈취 등의 공격이 가능한 취약점 |
| 10 | 자원 경쟁 | 공유 자원에 대해 여러 프로세스/스레드가 동시에 접근하여 값을 변경하는 경우, 타이밍이나 순서가 결과 값에 영향을 주어 발생하는 취약점 |
보안 기능
- 인증, 접근통제, 권한관리, 비밀번호 등의 정책이 적절하게 반영될 수 있도록 설계
| # | 점검항목 | 점검내용 |
|---|---|---|
| 1 | 인증-중요 정보 재확인 | 중요 정보(비밀번호, 계좌번호 등) 변경 시 현재 비밀번호 등을 입력받아 사용자 재확인 |
| 2 | 인증-로그인 시도 횟수 제한 | 단시간 내 일정 횟수 이상 로그인 실패 시 계정 잠금 |
| 3 | 인증-취약한 패스워드 사용 제한 | 추측하기 쉬운 패스워드(생년월일, 전화번호, 1234 등) 및 사전에 등록된 패스워드 사용 제한 |
| 4 | 접근통제-인가되지 않은 페이지 접근제한 | 세션정보, 파라미터 등을 통해 권한 없는 페이지 접근 방지 |
| 5 | 권한관리-관리자페이지 분리 | 관리자 페이지는 일반 사용자가 접근할 수 없도록 별도 경로로 분리 |
| 6 | 권한관리-권한 검증 누락 | 모든 페이지에서 권한에 맞는 기능수행 여부 검증 |
| 7 | 비밀번호-암호화 저장 | 비밀번호 등 중요정보는 암호화하여 저장 |
| 8 | 세션관리-불충분한 세션만료 | 일정 시간 이상 비활성 상태인 경우 자동 로그아웃 |
구현 단계 보안 취약점 제거
| 구분 | 입력데이터 검증 및 표현 | 보안기능 | 에러처리 | 세션통제 |
|---|---|---|---|---|
| 입력 데이터 검증 및 표현 (17개) | SQL 삽입 | 코드 삽입 | 경로 조작 및 자원 삽입 | 크로스사이트 스크립트 |
| 신뢰되지 않은 URL 주소로 자동 접속 연결 | 부적절한 XML 외부개체 참조 | XML 삽입 | LDAP 삽입 | |
| HTTP 응답 분할 | 정수형 오버플로우 | 보안기능 결정에 사용되는 부적절한 입력값 | 메모리 버퍼 오버플로우 | |
| 보안 기능 (16개) | 적절한 인증 없는 중요 기능 허용 | 부적절한 인가 | 중요한 자원에 대한 부적절한 권한 설정 | 취약한 암호화 알고리즘 사용 |
| 충분하지 않은 키 길이 사용 | 적절하지 않은 난수값 사용 | 취약한 비밀번호 허용 | 부적절한 전자서명 확인 | |
| 주석문 안에 포함된 시스템 주요정보 | 솔트 없이 일방향 해쉬 함수 사용 | 무결성 검사 없는 코드 다운로드 | 반복된 인증시도 제한 기능 부재 | |
| 시간 및 상태 (2개) | 경쟁조건: 검사 시점과 사용 시점(TOCTOU) | 종료되지 않은 반복문, 재귀함수 | ||
| 에러처리 (3개) | 오류메시지 정보 노출 | 오류 상황 대응 부재 | 부적절한 예외 처리 | |
| 코드오류 (5개) | Null Pointer 역참조 | 부적절한 자원해제 | 해제된 자원 사용 | 초기화되지 않은 변수 사용 |
| 캡슐화 (4개) | 잘못된 세션에 의한 데이터 정보노출 | 제거되지 않고 남은 디버그 코드 | Public 메소드부터 반환된 Private 배열 | private 배열에 public 데이터 할당 |
| API 오용 (2개) | DNS Lookup에 의존한 보안 결정 | 취약한 API 사용 |
SW 공급망 보안 가이드라인
필요성
- 디지털 제품 및 서비스에 포함된 악성코드 또는 보안 취약점은 사전에 탐지하기가 어렵고, 사고가 발생하면 광범위한 피해와 함께 사고가 연이어 발생하는 특징을 가짐.
- 공개 SW로 널리 활용되는
Log4j에서 초고도 보안 취약점이 발견된 사건(2021년)은 국내외에 큰 충격을 주었고, 공개 SW의 보안 강화를 추진하게 하는 계기가 됨.Log4j는 Java로 작성된 프로그램의 로그를 기록하는 라이브러리
- 미국은 바이든 행정부의 행정명령(
EO 14028, '21.5월) 이후 보안 관리 자체 증명서를 제출하도록 제도화하였음. - EU는 SW 공급망 보안을 의무화하는 Cyber Resilience Act(사이버 복원력 법) 제정 발의(‘22.9월) 후 EU 의회 및 이사회의 의결('24.3월) 등 제도화를 추진 중
SW 공급망
- 오픈소스의 사용 확대
- SW 부품 공급의 분업화
사고 사례
- 국내외 사고 사례 및 피해 규모
SW 공급망 공격 유형
- 공개 SW 보안 취약점(Vulnerabilities in OSS): 공개 SW에 취약한 코드 또는 유해한 구성요소가 포함되어 취약성이 공개 SW를 사용하는 모든 SW에 전파
- 타사 의존성(3rd Party Dependencies): 공격자가 타사 SW(상용 SDK, 라이브러리 또는 컴포넌트)에 악성코드를 삽입하여 이를 악용하는 운영 시스템을 침해
- 공용 리포지토리(Public Repositories): 공개 SW 코드를 찾는 개발자를 목표로
GitHub등 알려진 리포지토리 호스팅 서비스에 합법적인 SW 패키지와 유사한 이름을 가진 악성코드를 업로드 - 변환 시스템(Build Systems): 개발 프로세스 자동화를 위한 CI/CD 상의 중요 코드, 리포지토리, 컨테이너 및 변환 서버를 침해하여 악성코드로 교체
- 업데이트 가로채기(Hijacking Updates): 공격자가 SW 업데이트 과정을 침해하거나 업데이트 서버의 관리 권한을 가로채어 악성코드를 삽입
- 내부 리포지토리(Private Repositories): 공격자가 기업 내부에서 사용 중인 코드 저장소에 침입하여 악성코드를 삽입
- 공급사 및 협력사(Suppliers and Business Partners): SW 부품 또는 완제품 개발사, 공급사 등으로부터 외부 서비스를 제공받는 경우 관리되지 않는 타사 위험(Risk)이 내부 시스템으로 전이
SBOM
- SBOM: SW Bill of Materials
시큐어 코딩 가이드라인
행정안전부 가이드라인
- 시큐어코딩 가이드(C, Java) - 2014년
- 행정안전부 > 정책자료 > 간행물 > 간행물
- https://www.mois.go.kr/frt/bbs/type001/commonSelectBoardArticle.do?bbsId=BBSMSTR_000000000012&nttId=42152
MISRA
- 임베디드 시스템과 소프트웨어에 대한 안전한 가이드라인을 제공함.
- MISRA C 2020: https://www.misra.org.uk/misra-c/
MISRA Compliance:2020문서는 안전 및 보안이 중요한 소프트웨어 개발에서 널리 사용되는 MISRA 코딩 표준 준수 달성을 위한 가이드라인을 제공하며, 주요 내용은 다음과 같음.
목적 및 범위
- MISRA 가이드라인은 주로 C와 C++에서 안전하고 보안적인 애플리케이션 개발을 보장
- 이 문서는 MISRA 준수의 의미와 준수 프레임워크 구성 방법을 정의
소프트웨어 개발 프로세스
- 준수는 개발 시작부터 내재화되어야 함.
- 교육, 스타일 가이드, 도구 관리 및 런타임 동작 고려 사항을 포함
- 컴파일러와 정적 분석 도구의 선택 및 검증이 중요
준수의 기본 원칙
- 가이드라인은 Rules(규칙, 도구로 강제 가능) 또는 Directives(지침, 사람의 검토 필요)로 분류됨.
- 적용 범위: 일부 규칙은 파일 단위(번역 단위)로 검사되지만, 다른 규칙은 시스템 전체 분석이 필요
- Guideline Enforcement Plan(GEP, 가이드라인 시행 계획)은 체계적인 규칙 검사를 보장
편차 처리
- 준수는 모든 규칙을 엄격하게 따르는 것을 의미하지 않으며, 정당화되고 문서화된 경우 Deviations(편차)가 허용됨.
- 편차 기록 및 허가는 규칙 위반과 그 정당성을 추적
- 일반적인 편차 사유:
- 코드 품질 개선
- 하드웨어 접근 필요성
- 서드파티 코드 통합
- 레거시 코드 채택
가이드라인 재분류
- 프로젝트는 필요에 더 잘 맞도록 MISRA 규칙 범주를 조정할 수 있음.
- 범주:
- Mandatory(의무): 위반할 수 없음.
- Required(필수): 문서화된 편차가 있는 경우에만 위반 가능
- Advisory(권고): 모범 사례이지만, 위반 시 공식적인 편차 필요 없음.
- Disapplied(미적용): 프로젝트와 관련 없음.
채택된 코드 및 준수 과제
- 서드파티, 레거시, 라이브러리 코드는 완전히 준수하지 않을 수 있음.
- 바이너리 전용 코드는 MISRA 준수 여부를 확인할 수 없으므로 특별한 고려가 필요
준수 주장
- 준수는 조직 전체가 아닌 프로젝트 수준에서만 주장할 수 있음.
- 요구 사항:
- 직원 역량 및 교육
- 적절한 편차 관리
- 규칙 준수를 문서화하기 위한 Guideline Compliance Summary(GCS, 가이드라인 준수 요약)
부록: 체크리스트 및 예시
- 부록에는 준수 체크리스트, 편차 기록 예시, 편차 허가 예시가 포함됨.
결론
MISRA Compliance:2020은 체계적인 코딩 표준, 도구, 편차 관리를 통해 소프트웨어의 안전성, 보안성, 유지보수성을 보장하는 구조화된 프레임워크를 제공함. 적절한 시행은 소프트웨어 결함을 줄이고 신뢰성을 높이며, 자동차, 항공 우주, 의료 기기와 같은 산업의 규제 요구 사항을 지원.
개인정보보호 관련 법규
- 개인정보: 개인을 식별할 수 있는 정보
데이터 3법
- 개인정보보호법, 정보통신망법, 신용정보법
- 데이터 산업 활성화를 위하여 개정안이 통과되어 2020년 8월부터 시행됨.
- 핵심 내용
- 가명정보, 익명정보 개념 도입
- 가명정보를 연구 및 공익 목적으로 활용 가능하도록 함.
개인정보보호법 주요 개정 사항## 개인정보 보호법 주요 개정 사항
| 목차 | 주요 내용 |
|---|---|
| 제1장 총칙 | 목적, 정의, 보호 원칙, 정보주체의 권리 |
| 제2장 개인정보 보호정책의 수립 등 | 개인정보보호위원회의 구성, 업무 등 |
| 제3장 개인정보의 처리 | |
| 제1절 개인정보의 수집, 이용, 제공 등 | 개인정보의 수집·이용, 제공, 수집 출처 통지, 이용·제공 내역 통지, 파기, 아동의 개인정보보호 |
| 제2절 개인정보의 처리 제한 | 민감정보, 고유식별정보, 주민등록번호, [고정형, 이동형] 영상처리기기, 개인정보 처리위탁 |
| 제3절 가명정보의 처리에 관한 특례 | 가명정보 처리, 결합, 안전조치, 적용 제외 |
| 제4절 개인정보의 국외 이전 | 개인정보 국외 이전 요건, 국외 이전 중지 |
| 제4장 개인정보의 안전한 관리 | 안전조치, 개인정보 처리방침, CPO/국내대리인, ISMS-P, 영향평가, 유출통지·신고, 노출 삭제 |
| 제5장 정보주체의 권리 보장 | 열람권, 정정·삭제권, 처리정지권, 동의철회권, 전송요구권, 자동화된 의사결정에 대한 정보주체의 권리보장, 손해배상 |
| 제7장 개인정보 분쟁조정위원회 | 개인정보 분쟁조정위원회 구성, 업무, 조정 신청, 사실 조사, 분쟁 조정 |
| 제8장 개인정보 단체소송 | 단체소송의 대상, 요건, 진행 |
| 제9장 보칙 | 적용 제외, 금지행위, 사전 실태점검, 과징금, 고발 및 징계권고, 개선권고 |
| 제10장 벌칙 | 형사처벌, 과태료 |
