약한 해싱 알고리즘을 사용하는 것은 보안에 취약할 수 있습니다.

MD2, MD4, MD5, MD6, HAVAL-128, HMAC-MD5, DSA (which uses SHA-1), RIPEMD, RIPEMD-128, RIPEMD-160, HMACRIPEMD160 그리고 SHA-1 과 같은 암호화 해시 알고리즘은 더 이상 안전하다고 여겨지지 않습니다. 이러한 알고리즘은 충돌(적은 컴퓨터 연산으로도 충분히 다른 두 개의 인풋에 대해 같은 해시값을 가질 수 있는)이 발생할 수 있기 때문입니다. 스스로에게 물어보십시오 해시된 값은 다음과 같은 보안 상황에서 사용됩니다. 유저의 비밀번호 저장 보안 토큰 생성(웹사이트에 회원 가입 시 이메일을 확인할 때, 패스워드를 초기화할...

더보기

CSRF 보호를 비활성화 하는 것은 보안에 취약할 수 있습니다.

CSRF(Cross-Site Request Forgery) 공격은 웹 애플리케이션의 신뢰할 수 있는 사용자가 공격자에 의해 의도하지 않은 프로필 업데이트나 메시지 전송과 같은 민감한 작업을 포함해 응용 프로그램의 상태를 변경할 수 있는 모든 행위를 수행하도록 강제할 수 있을 때 발생합니다. 공격자는 사용자/피해자가 권한 있는 작업에 해당하는 링크를 클릭하도록 속이거나 숨겨진 웹 요청이 포함된 악의적인 웹 사이트를 방문하도록 속일 수 있으며 웹 브라우저에는 자동으로 쿠키가 포함되므로 작업이 인증되고 취약할 수 있습니다. 스스로에게 물어보십시오 웹 애플리케이션이 유저를 인증할 때 쿠키를 사용합니다. 웹 ...

더보기

Functional Interfaces는 대체 가능한 전문화된 인터페이스를 사용해야 합니다.

java.util.function 패키지에서는 람다 표현식이나 메서드 참조에 사용할 수 있는 다양한 Functional Interfaces을 제공합니다. 일반적으로 auto-boxing을 피하기 위해 전문화된 인터페이스를 사용하는 것이 좋습니다. 예를 들어 Function<Integer, Foo>보다 IntFunction<Foo>를 사용하는 게 좋습니다. (^역: auto-boxing - primitive 타입을 boxed type으로 변환해주는 것) 이 규칙은 대안이 존재하는 아래와 같은 인터페이스들을 이용할 때 알림을 울립니다. 현재 인터페이스 더 ...

더보기

내부 클래스를 소유하고 있는 클래스를 참조하지 않는 클래스는 "static"으로 선언되어야 합니다

static으로 선언되지 않는 내부 클래스에는 외부 클래스에 대한 참조가 있으며 외부 클래스의 필드 및 메서드에 대한 액세스 권한을 갖는다는 특징이 있습니다. 이런 타입의 클래스 참조는 내부 클래스의 덩치를 키우고, 외부 클래스 인스턴스가 필요 이상으로 메모리에 오래 저장되게 만들 수 있습니다. 외부 클래스에 대한 참조가 사용되지 않는 경우, static 내부 클래스로 (nested(중첩)이라고도 불림) 만드는 것이 더 효율적입니다. 참조가 클래스 생성자에서만 사용된다면 클래스 참조를 명시적으로 생성자에게 전달합니다. 내부 클래스가 익명인 경우 이름을 지정하는 것이 좋습니다. 이렇게 말하면 항상 nested/s...

더보기

"String", "BigInteger", "BigDecimal" 같은 기본 자료형의 래퍼 클래스 생성자를 사용하지 말아야합니다.

String, BigInteger, BigDecimal 같은 기본 자료형의 래퍼 클래스 생성자를 사용하지 말아야합니다. 이렇게 사용하는 것은 valurOf를 사용하는 것보다 의도가 불분명하고, 메모리를 더 많이 사용합니다. 규칙을 어긴 코드 String empty = new String(); // 규칙을 어긴 코드; ""을 반환하므로 그냥 ""을 사용하는게 낫습니다. String nonempty = new String("Hello world"); // 규칙을 어긴 코드 Double myDouble = new Double(1.1); // 규칙을 어긴 코드; valueOf를 사용하세요 Integer integer ...

더보기

호스트 운영 체제 네임스페이스 사용은 보안에 민감합니다.

호스트 운영 체제 네임스페이스를 사용하면 호스트 시스템이 손상될 수 있습니다. 공격 대상이 되는 부분 호스트 프로세스 호스트 프로세스 간 통신(IPC) 메커니즘 로컬 호스트 시스템의 네트워크 서비스 이 세 가지 항목에는 Kubernetes 클러스터의 내부 운영 시스템 또는 엔터프라이즈의 내부 인프라를 지원하는 시스템이 포함될 수 있습니다. 컨테이너의 이런 부분을 개방하 것은 컨테이너에 의해 노출된 서비스를 이미 성공적으로 악용한 공격자에게 새로운 공격 표면이 열리게됩니다. 클러스터의 복원력에 따라서, 공격자는 클러스터가 프로세스를 시작한 노드를 손상시켜 공격을 클러스터로 확장할 수 있습니다. 호...

더보기

프로세스 권한 상승을 허용하는 것은 보안에 민감합니다.

프로세스 권한 상승을 허용하면 POD가 setuid 바이너리를 악용하는 공격에 노출됩니다. 이 필드는 컨테이너 프로세스에 no_new_privs 플래그가 설정되어 있는지 여부를 직접 제어합니다. 이 플래그가 활성화되면 setuid 또는 setgid 비트로 구성된 바이너리는 런타임 uid 또는 gid를 변경할 수 없습니다: 잠재적인 공격자는 POD에서 성공적으로 Root로 작동하기 위해 다른 권한 상승 기술에 의존해야 합니다. Kubernetes 클러스터와 POD의 복원력에 따라 공격자는 클러스터가 포드를 시작한 노드를 손상시켜 클러스터에 대한 공격을 확장할 수 있습니다. setuid 또는 setgid 비트와 ...

더보기

Docker 소켓 노출은 민감합니다.

Docker 소켓을 노출하면 호스트 시스템이 손상될 수 있습니다. Docker 데몬은 예를 들어 UNIX 도메인 소켓을 통해 해당 기능에 접근할 수 있는 API를 제공합니다. Docker 소켓을 컨테이너에 마운트하면 컨테이너가 호스트 시스템의 Docker 데몬을 제어할 수 있으므로 전체 시스템에 대한 완전한 접근 가능합니다. Docker 소켓에 접할 수 있는 손상된 컨테이너 또는 악성 컨테이너는 전체 Kubernetes 클러스터의 무결성을 위험에 빠뜨릴 수 있습니다. 다음 질문을 확인하세요 POD를 신뢰할 수 없거나, 취약점이 포함되어 있을 수 있습니다. 만약 상위 질문에 해당된다면 위험이 있을 수 ...

더보기