티스토리 뷰
0. SpringBoot 진단
마이크로서비스의 발전에 따라 기존의 Spring Java개발에서 SpringBoot + JPA + Template을 통한 개발이 많아지고 있는 것 같다. 특히 AWS와 함께 사용이 더더욱 증가되고 있는 것으로 보인다. 우선 SpringBoot를 진단하게 될 경우, SpringBoot뿐만 아니라, JPA, Template에서의 키워드도 함께 검색해야 정적진단을 수행할 수 있을 것으로 보인다.
( 아직 AWS와 연관된 소스코드 취약점은 많이 알지 못하니, 이 부분은 향후 추가해야 겠다. )
1. 파일 검색
build.gradle : 어플리케이션에서 사용하는 라이브러리 등을 확인
*properties : 각 설정값이 존재함, 불필요 설정존재 여부 확인, OAuth 인증값 등이 평문노출되는지 확인 필요
*Controller*java : 외부에 오픈되는 URI에 대한 처리 Controller 클래스 확인 => 로직검토
*Repository*java : JPA에서 Bean클래스를 DBMS오 접근하게 하는 Repository 클래스 확인 => 쿼리함수정보 및 네이티브 쿼리 사용여부 확인
*Test*java : 모듈 테스트 클래스 확인 => 테스트 함수 내 불필요한 중요정보가 존재하는지 확인
*mustache : Mustache Template 파일 => 어떤 데이터를 출력하는지 확인, 사용하는 URI 확인
*hbs : Handlebar Template 파일 => 어떤 데이터를 출력하는지 확인, 사용하는 URI 확인
2. 데이터 검색
@RestController : JSON을 반환하는 컨트롤러 설정 어노테이션 → RestAPI로 제공하는 URI 확인
@Controller : 컨트롤러 설정 어노테이션 → 서비스에 제공하는 URI 확인
@GetMapping : Get 메서드로 연결시키는 어노테이션 → URI에 연결되는 함수정보 확인 가능
@PostMapping : Post 메서드를 연결시키는 어노테이션 → URI에 연결되는 함수정보 확인 가능
@PutMapping : Put 메서드를 연결시키는 어노테이션 → URI에 연결되는 함수정보 확인 가능
@DeleteMapping : Delete 메서드를 연결시키는 어노테이션 → URI에 연결되는 함수정보 확인 가능
@RequestParam : 외부에서 전달받는 파라미터 값을 가져오는 어노테이션 → 외부 입력값 확인
@PathVariable : URI 경로정보에서 입력값을 가져오는 어노테이션 → 외부 입력값 확인
@Entity : JPA에서 테이블과 링크될 클래스를 나타내는 어노테이션 → 네이티브 쿼리 존재여부 확인
@SpringBootTest : 모듈 테스트 함수를 나타내는 어노테이션 → 테스트 함수 내 불필요 정보가 노출되는지 확인
@Test : 모듈 테스트 함수를 나타내는 어노테이션 → 테스트 함수 내 불필요 정보가 노출되는지 확인
@Query.+nativeQuery : 직접 정의한 네이티브 쿼리정보 확인 → SQL Injection 공격 가능성 확인
@.+NativeQuery : 연결된 네이티브 쿼리정보 확인 → SQL Injection 공격 가능성 확인
createNativeQuery : JPA 네이티브 쿼리 사용 → SQL Injection 공격 가능성 확인
spring.h2.console.+true : 메모리형 RDBMS 사용하는 Properties 설정 → /h2-console 으로 접속 가능 (동적확인)
addAttribute : View로 데이터를 전달 → 출력 데이터 종류 확인 / View에서 실제 출력하는지 크로스 체크 필요
{{{ : 출력값에 이스케이프를 수행하지 않아, XSS 유도 가능 → 출력값 검증여부 확인
{{.+json : {{를 사용 시 JSON 타입일 경우 이스케이프를 수행하지 않음 → 출력값 검증여부 확인
ConfigurationProperties : 클래스 파일로 프로퍼티를 생성 및 관리할 수 있는 어노테이션
'Security > Spring' 카테고리의 다른 글
Spring Security 보호기능 (0) | 2023.04.17 |
---|---|
Spring Security Summary (0) | 2023.04.16 |
SpringBoot 기초 (0) | 2020.05.08 |
- Total
- Today
- Yesterday