-
SQL 삽입
- FindBugs
- CUSTOM_INJECTION [1]
- SQL_INJECTION [2]
- SQL_INJECTION_TURBINE [3]
- SQL_INJECTION_HIBERNATE [4]
- SQL_INJECTION_JDO [5]
- SQL_INJECTION_JPA [6]
- SQL_INJECTION_SPRING_JDBC [7]
- SQL_INJECTION_JDBC [8]
- SCALA_SQL_INJECTION_SLICK [9]
- SCALA_SQL_INJECTION_ANORM [10]
- SQL_INJECTION_ANDROID [11]
- AWS_QUERY_INJECTION [12]
- SQL_NONCONSTANT_STRING_PASSED_TO_EXECUTE [13]
- SQL_PREPARED_STATEMENT_GENERATED_FROM_NONCONSTANT_STRING [14]
- LAPSE+
- SonarQube
- FindBugs
-
경로조작 및 자원삽입
- FindBugs
- LAPSE+
-
크로스사이트 스크립트
- FindBugs
- XSS_REQUEST_WRAPPER [1]
- JSP_JSTL_OUT [2]
- XSS_JSP_PRINT [3]
- XSS_SERVLET [4]
- ANDROID_GEOLOCATION [5]
- ANDROID_WEB_VIEW_JAVASCRIPT [6]
- ANDROID_WEB_VIEW_JAVASCRIPT_INTERFACE [7]
- HTTPONLY_COOKIE [8]
- SCALA_XSS_TWIRL [9]
- SCALA_XSS_MVC_API [10]
- XSS_REQUEST_PARAMETER_TO_JSP_WRITER [11]
- XSS_REQUEST_PARAMETER_TO_SEND_ERROR [12]
- XSS_REQUEST_PARAMETER_TO_SERVLET_WRITER [13]
- LAPSE+
- FindBugs
-
운영체제 명령어 삽입
-
위험한 형식 파일 업로드
-
신뢰되지 않는 URL 주소로 자동접속 연결
-
XQuery 삽입
-
XPath 삽입
- FindBugs
- LAPSE+
-
LDAP 삽입
-
크로스사이트 요청 위조 [Extended]
-
HTTP 응답분할
-
정수형 오버플로우 [Extended]
- FindBugs
- PMD
- SonarQube
-
보안기능 결정에 사용되는 부적절한 입력값 [Extended]
- FindBugs
- LAPSE+
- SonarQube
-
포멧 스트링 삽입
- FindBugs
-
적절한 인증 없는 중요기능 허용
-
부적절한 인가
-
중요한 자원에 대한 잘못된 권한 설정
-
취약한 암호화 알고리즘 사용 [Extended]
- FindBugs
- SonarQube
- Neither DES (Data Encryption Standard) nor DESede (3DES) should be used [7]
- Cryptographic RSA algorithms should always incorporate OAEP (Optimal Asymmetric Encryption Padding) [13]
- "javax.crypto.NullCipher" should not be used for anything other than testing [6]
- Only standard cryptographic algorithms should be used [4]
- Pseudorandom number generators (PRNGs) should not be used in secure contexts [14]
- SHA-1 and Message-Digest hash algorithms should not be used [2]
-
중요정보 평문 저장
-
중요정보 평문 전송 [Extended]
-
하드코드된 비밀번호
-
충분하지 않은 키 길이 사용
- FindBugs
-
적절하지 않은 난수값 사용
-
취약한 비밀번호 사용
-
하드코드된 암호화 키 [Extended]
- FindBugs
- SonarQube
-
사용자 하드디스크에 저장되는 쿠키를 통한 정보노출
-
주석문 안에 포함된 시스템 주요정보
-
솔트 없이 일방향 해쉬함수 사용
-
무결성 검사 없는 코드 다운로드
- FindBugs
- SonarQube
-
반복된 인증시도 제한 기능 부재
-
경쟁조건: 검사 시점과 사용 시점(TOCTOU)
- FindBugs
- AT_OPERATION_SEQUENCE_ON_CONCURRENT_ABSTRACTION [1]
- DC_DOUBLECHECK [2]
- DC_PARTIALLY_CONSTRUCTED [3]
- DL_SYNCHRONIZATION_ON_BOOLEAN [4]
- DL_SYNCHRONIZATION_ON_UNSHARED_BOXED_PRIMITIVE [5]
- DL_SYNCHRONIZATION_ON_SHARED_CONSTANT [6]
- DL_SYNCHRONIZATION_ON_UNSHARED_BOXED_PRIMITIVE [7]
- DM_MONITOR_WAIT_ON_CONDITION [8]
- DM_USELESS_THREAD [9]
- ESync_EMPTY_SYNC [10]
- IS2_INCONSISTENT_SYNC [11]
- IS_FIELD_NOT_GUARDED [12]
- JLM_JSR166_LOCK_MONITORENTER [13]
- JLM_JSR166_UTILCONCURRENT_MONITORENTER [14]
- JML_JSR166_CALLING_WAIT_RATHER_THAN_AWAIT [15]
- LI_LAZY_INIT_STATIC [16]
- LI_LAZY_INIT_UPDATE_STATIC [17]
- ML_SYNC_ON_FIELD_TO_GUARD_CHANGING_THAT_FIELD [18]
- ML_SYNC_ON_UPDATED_FIELD [19]
- MWN_MISMATCHED_NOTIFY [20]
- MWN_MISMATCHED_WAIT [21]
- NN_NAKED_NOTIFY [22]
- NO_NOTIFY_NOT_NOTIFYALL [23]
- RS_READOBJECT_SYNC [24]
- RV_RETURN_VALUE_OF_PUTIFABSENT_IGNORED [25]
- RU_INVOKE_RUN [26]
- SC_START_IN_CTOR [27]
- SP_SPIN_ON_FIELD [28]
- STCAL_INVOKE_ON_STATIC_CALENDAR_INSTANCE [29]
- STCAL_INVOKE_ON_STATIC_DATE_FORMAT_INSTANCE [30]
- STCAL_STATIC_CALENDAR_INSTANCE [31]
- STCAL_STATIC_SIMPLE_DATE_FORMAT_INSTANCE [32]
- SWL_SLEEP_WITH_LOCK_HELD [33]
- TLW_TWO_LOCK_WAIT [34]
- UG_SYNC_SET_UNSYNC_GET [35]
- UL_UNRELEASED_LOCK [36]
- UL_UNRELEASED_LOCK_EXCEPTION_PATH [37]
- UW_UNCOND_WAIT [38]
- VO_VOLATILE_INCREMENT [39]
- VO_VOLATILE_REFERENCE_TO_ARRAY [40]
- WL_USING_GETCLASS_RATHER_THANODR_OPEN_DATABASE_RESOURCE_EXCEPTION_PATH_CLASS_LITERAL [41]
- WS_WRITEOBJECT_SYNC [42]
- WA_AWAIT_NOT_IN_LOOP [43]
- WA_NOT_IN_LOOP [44]
- PMD
- SonarQube
- "wait" should not be called when multiple locks are held [34]
- Value-based classes should not be used for locking [50]
- "getClass" should not be used for synchronization [51]
- Getters and setters should be synchronized in pairs [52]
- Non-thread-safe fields should not be static [53]
- Blocks should be synchronized on "private final" fields [54]
- ".equals()" should not be used to test the values of "Atomic" classes [55]
- Synchronization should not be based on Strings or boxed primitives [56]
- FindBugs
-
종료되지 않은 반복문 또는 재귀함수
-
오류메시지를 통한 정보노출
-
오류 상황 대응 부재
- PMD
- SonarQube
- Exceptions should not be thrown from servlet methods [7]
- "SingleConnectionFactory" instances should be set to "reconnectOnException" [8]
- "Iterator.next()" methods should throw "NoSuchElementException" [9]
- Return values should not be ignored when they contain the operation status code [10]
- Exception should not be created without being thrown [11]
-
부적절한 예외 처리
-
잘못된 세션에 의한 데이터 정보노출
-
제거되지 않고 남은 디버그 코드
-
시스템 데이터 정보노출
-
Public 메서드로부터 반환된 Private 배열
-
Private 배열에 Public 데이터 할당
- FindBugs
-
DNS lookup에 의존한 보안결정
-
취약한 API
- FindBugs
- PMD
- SonarQube
- 암호화 방식의 잘못된 사용
- 프레임워크의 고유한 프로그래밍 규칙 위반
- FindBugs
- JAXWS_ENDPOINT [1]
- JAXRS_ENDPOINT [2]
- TAPESTRY_ENDPOINT [3]
- WICKET_ENDPOINT [4]
- STRUTS1_ENDPOINT [5]
- STRUTS2_ENDPOINT [6]
- SPRING_ENDPOINT [7]
- STRUTS_FORM_VALIDATION [8]
- ANDROID_BROADCAST [9]
- ANDROID_WORLD_WRITABLE [10]
- PERMISSIVE_CORS [11]
- ANDROID_EXTERNAL_FILE_ACCESS [12]
- SCALA_SENSITIVE_DATA_EXPOSURE [13]
- SonarQube
- Default EJB interceptors should be declared in "ejb-jar.xml [14]
- Defined filters should be used [15]
- "@RequestMapping" methods should be "public" [16]
- Struts validation forms should have unique names [17]
- Security constraints should be defined [18]
- Non-public methods should not be "@Transactional" [19]
- FindBugs
- 자원부족을 일으킬 수 있는 명령 허용
- 코드 삽입
- 로그 삽입