KISA ISMS-P 인증[가이드] JavaScript 시큐어코딩 가이드 : VanillaJS , ReactJS , ExpressJS 예시 수록

2024-03-18
조회수 3416

게시일 : 2022-12-30

많은 기업이 JavaScript를 Backend로 사용하면서(Node.js)
ISMS 인증 심사 시 해당 언어에 대한 SecureCoding 에 대한 가이드 및 보안 취약점 조치 방법 관련문서가 마련되지 않은 경우
결함으로 지적하는 사례가 많이 늘고 있습니다.

이에 참고할 만한 가이드가(JavaScript 시큐어코딩 가이드) KISA에 누리집에 안내되어 있어 해당 가이드를 공유합니다.
해당 가이드에는 VanillaJS , ReactJS  , ExpressJS 개발 시 에 대한 안전한 시큐어 코딩 예시가 명시되어 있습니다.

관련자 분들께서는 업무에 참고하시어 SecureCoding 적용 시 도움이 되셨으면 좋겠습니다.


[목차]

PART 제1장 개요

  제1절 배경 ············································2

  제2절 왜 자바스크립트인가 ································4

  제3절 가이드 목적 및 구성 ·································6


PART 제2장 시큐어코딩 가이드

  제1절 입력데이터 검증 및 표현 ······························10

    1. SQL 삽입 ··········································10

    2. 코드 삽입 ··········································16

    3. 경로 조작 및 자원 삽입 ·································19

    4. 크로스사이트 스크립트(XSS) ····························23

    5. 운영체제 명령어 삽입 ··································32

    6. 위험한 형식 파일 업로드 ································35

    7. 신뢰되지 않은 URL주소로 자동접속 연결 ····················38

    8. 부적절한 XML 외부 개체 참조 ····························40

    9. XML 삽입 ··········································43

    10. LDAP 삽입 ········································46

    11. 크로스사이트 요청 위조(CSRF) ·························50

    12. 서버사이드 요청 위조 ································56

    13. 보안기능 결정에 사용되는 부적절한 입력값 ················59

  제2절 보안기능 ········································62

    1. 적절한 인증 없는 중요 기능 허용 ·························62

    2. 부적절한 인가 ······································65

    3. 중요한 자원에 대한 잘못된 권한 설정 ······················67

    4. 취약한 암호화 알고리즘 사용 ····························69

    5. 암호화되지 않은 중요정보 ······························73

    6. 하드코드된 중요정보 ··································77

    7. 충분하지 않은 키 길이 사용 ·····························80

    8. 적절하지 않은 난수 값 사용 ·····························83

    9. 취약한 패스워드 허용 ·································85

    10. 부적절한 전자서명 확인 ······························88

    11. 부적절한 인증서 유효성 검증 ···························91

    12. 사용자 하드디스크에 저장되는 쿠키를 통한 정보 노출 ·········94

    13. 주석문 안에 포함된 시스템 주요정보 ·····················97

    14. 솔트 없이 일방향 해쉬 함수 사용 ························99

    15. 무결성 검사없는 코드 다운로드 ·························101

    16. 반복된 인증시도 제한 기능 부재 ·························104

  제3절 시간 및 상태 ······································107

    1. 종료되지 않는 반복문 또는 재귀 함수 ······················107

  제4절 에러처리 ········································109

    1. 오류 메시지 정보노출 ·································109

    2. 오류상황 대응 부재 ···································113

    3. 부적절한 예외 처리 ···································116

  제5절 코드오류 ········································119

    1. Null Pointer 역참조 ·································119

    2. 부적절한 자원 해제 ··································121

    3. 신뢰할 수 없는 데이터의 역직렬화 ·······················124

  제6절 캡슐화 ·········································127

    1. 잘못된 세션에 의한 데이터 정보 노출 ·····················127

    2. 제거되지 않고 남은 디버그 코드 ·························130

    3. Public 메소드로부터 반환된 Private 배열 ·················132

    4. Private 배열에 Public 데이터 할당 ······················134

  제7절 API 오용 ·······································136

    1. DNS lookup에 의존한 보안결정 ························136

    2. 취약한 API 사용 ····································139


PART 제3장 부록

  제1절 구현단계 보안약점 제거 기준 ·························146

    1. 입력데이터 검증 및 표현 ······························146

    2. 보안기능 ·········································147

    3. 시간 및 상태 ·······································148

    4. 에러처리 ·········································148

    5. 코드오류 ·········································148

    6. 캡슐화 ···········································148

    7. API 오용 ·········································148

  제2절 용어정리 ·······································149



ad24633415ad5.png


768224b79f8d0.png

0b39792fb06c0.png


출처 : https://www.kisa.or.kr/2060204/form?postSeq=14&page=1#fnPostAttachDownload

카카오톡 채널 채팅하기 버튼