게시일 : 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



출처 : https://www.kisa.or.kr/2060204/form?postSeq=14&page=1#fnPostAttachDownload
게시일 : 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
출처 : https://www.kisa.or.kr/2060204/form?postSeq=14&page=1#fnPostAttachDownload