>Java >'힙 검사' 취약점

'힙 검사' 취약점

WBOY
WBOY앞으로
2024-02-22 12:46:06473검색

PHP 편집자 Yuzai는 오늘 "힙 검사" 취약점에 대한 Java Q&A를 제공합니다. 소프트웨어 개발 과정에서 힙 검사는 해커가 악의적인 공격을 위해 쉽게 악용할 수 있는 일반적인 보안 취약점입니다. 이 글의 Q&A 형식을 통해 힙 검사 취약점의 정의, 원리, 예방 방법에 대한 심층적인 이해를 제공하여 소프트웨어 시스템의 보안을 더욱 효과적으로 보호할 수 있도록 도와드립니다.

질문 내용

통화 시 비밀번호를 전달해야 합니다. 만약 내가

으아악

Fortify가 이 코드를 스캔했을 때 문자열에 비밀번호 할당으로 인해 코드에 "힙 검사" 취약점이 있는 것으로 보고되었습니다.

fortify는 원본 코드에 대해 불평하지 않습니다:

으아악

env.getproperty()가 문자열을 반환하더라도 말이죠.

fortify 추천:

으아악

하지만 함수에 문자열이 필요한 경우 char[]를 비밀번호로 사용하는 방법은 무엇입니까?

해결 방법

예... 비밀번호를 Base64로 인코딩하는 것은 전혀 보호되지 않습니다. 두뇌가 절반인 해커라면 누구나 base64를 식별하고 디코딩하는 방법을 알고 있습니다. 따라서 "이상한 base64 항목"은 도움이 되지 않습니다.

그러나 반면에 귀하의 취약성 스캐너는 상대적으로 악용하기 어렵고 어쨌든 해결될 수 없는 문제를 지적했습니다.

애플리케이션의 특정 시점(종속성 또는 어딘가)에서 비밀번호는 Java로 변환됩니다. String ...因为某些 API 需要 String。此时,无论扫描器是否告诉您,您都存在“堆检查”漏洞。例如,如果数据源使用 JDBC,则需要将该密码作为参数传递给 DriverManager.connect 调用。 connect 3가지 오버로드가 있지만... 모두 비밀번호를 일반 텍스트 문자열로 전달해야 합니다. 이 문제를 해결하는 것은 비현실적입니다.

(분명히 Fortify에서 제안한 소위 수정 사항은 작동하지 않습니다. 그리고 setPassword(env.getProperty("spring.datasource.password"))에 대한 호출이 현재 수행 중인 작업에 대해 단지 "나쁜" 것임을 인식하지 못합니다. 그것은 "성능 안전"입니다.. .)

가장 실용적인 해결책은 스캐너에 이것이 "오탐지"임을 알리는 것입니다. 그런 다음 해커가 디버거를 연결하고 RAM, 코어 덤프, 디스크 교체 등을 확인하고 힙에서 비밀번호를 나타낼 수 있는 문자열 개체를 검색하는 것을 방지하기 위한 조치를 취하세요.

또한 String객체의 유형 추상화를 통해 분쇄 하고 해당 백업 배열을 재정의해야 하는 "불쾌한" 솔루션도 있습니다. 그러나 이 접근 방식은 취약합니다.

  • String 的表示形式在 Java 的生命周期中已更改多次,每次更改都可能会破坏您的 String 표현은 Java 수명 동안 여러 번 변경되었으며 각 변경으로 인해
  • 적용 범위 코드가 손상될 수 있습니다.
  • String 的后备数组会与其他 String어떤 경우에는
  • 의 백업 배열이 다른
  • 객체와 공유되며, 백업 배열을 파괴하면 해당 객체가 손상됩니다. String可能已被复制或插入到其他 String
  • 비밀번호

복사되었거나 다른 개체에 삽입된 경우를 모두 찾는 데 문제가 있습니다.

🎜 🎜🎜기밀 정보🎜를 다루지 않는 한 이것은 (IMO) 최고입니다. 기밀 정보를 처리하는 경우 다음 단계를 수행하기 전에 플랫폼을 보호하십시오. (그리고 보안 감사를 위해 어리석은 보안 검색 소프트웨어에 의존하지 마십시오!) 🎜

위 내용은 '힙 검사' 취약점의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 stackoverflow.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제