정적 검색에서 오류 발견:암호 관리

코드 라이브러리를 다가오는 배치에서 최상의 상태로 만들기 위해 정적 스캔을 하고 있다면, 가능한 한 빨리 해결해야 할 진정한 문제에 관심을 가져야 한다는 것을 알고 있습니다.Fortify 또는 다른 프로그램을 사용하여 코드 라이브러리의 잠재적인 문제를 표시하고 식별하는 데 도움을 줄 수 있습니다.
암호 관리 범주에 문제가 있는 정적 검색 보고서가 표시될 수 있습니다.만약에 사이트가 내부 인증 기능을 가지고 있다면 (예를 들어 사용자가github 계정이나 gmail 계정을 통해 로그인하도록 하는 것이 아니라) 특히 그렇습니다.
암호 보안은 매우 중요하지만, 많은 정적 스캔 문제가 키워드를 통해 표시되기 때문에, 내부 인증은 대량의 오보와 진정한 잠재적인 위협이 있음을 의미할 수 있습니다.

암호 관리 하위 범주 문제의 유형


fortify는 암호 관리 문제의 몇 가지 다른 하위 분류를 개술할 수 있습니다.스캔 결과에서 이런 방식으로 분해하는 것은 매우 편리하다. 왜냐하면 이렇게 하면 이러한 잠재적인 문제를 더욱 빠르고 쉽게 내비게이션하고 해결할 수 있기 때문이다.

암호 관리:빈 암호


이것은 무엇을 의미하는가


이것은 로그인과 인증에 사용할 수 있는 암호가 하드코딩되어 비어 있음을 의미합니다.몇 가지 이유로 빈 암호의 안전 문제는 위협이다.첫째, 생산 현장에 들어가면 복잡한 비밀번호에 비해 신분 검증이 쉽게 추측된다.또한 빈 암호로 "보호된"계정이 유출되면 해당 계정의 사용자는 새 코드를 생산 사이트에 발표하지 않은 상태에서 이 암호를 업데이트하거나 변경할 수 없습니다. 빈 암호는 하드코딩이기 때문입니다.인증에 사용할 암호는 비어 있지 않아야 하며 일반적으로 외부 원본에서 모호/암호화 및 관리해야 한다.

가양성의 예


빈 암호가 오보의 한 예일 수도 있습니다. 입력한 폼이 지워졌는지 여부입니다.다음 코드에서 스캔의 각도에서 변수 vm를 보십시오.사용자 패스워드에 인증을 위한 빈 문자열이 할당되었습니다.실제로, 이 함수는 단지 폼을 리셋하는 데 쓰일 뿐이다.
function resetFormInputErrors() {
    vm.inputFormZip  = vm.inputFormUsername = vm.touched = [];
    vm.user.postalZip = vm.accUsername = vm.userPassword = '';
  }

암호 관리: 하드 인코딩 암호


이것은 무엇을 의미하는가


빈 암호 보안 위협과 유사하게 하드코딩 암호도 문제입니다. 업데이트 코드를 발표하지 않은 상태에서 이 암호를 변경할 수 없기 때문입니다.이는 비밀번호가 누설되거나 잊어버린 사람이 있다면 비밀번호를 해결하고 리셋하는 데 추가 시간이 필요하다는 뜻이다.이 시간이 지나면 해커는 이 계정에 더 많은 정보를 접근할 수 있고 중요한 개인이나 안전 정보를 훔칠 수도 있다.암호는 외부 원본에서 모호/암호화하고 관리해야 한다.

가양성의 예


검색에서 키워드를 픽업하고 있으므로 vm.password, this.p_word, vm.Pwd 또는 $scope.pass_w 등의 문자열이 포함된 변수는 추가로 검사됩니다.이러한 추가 심사는 프로그램의 비밀번호 생성, 비밀번호 재설정, 비밀번호 재발송 사용자 흐름에 관련된 모든 내용이 용량으로 표시될 수 있음을 의미한다.
다음 코드는 링크 재설정이 사용자에게 전송되는 미디어를 잊어버리도록 설정하는 것뿐입니다.
vm.passwordRecovery.medium = 'email';
vm.passwordRecovery.sendEmail = 'true';
다음은 노선의 예이다.js 파일이 암호 키워드로 표시된 보안 위협:
"App.resetPassword.invalid": "/invalidPassword",
또는 가짜 양성은 키워드에 암호 강도 요구 사항이 지정되어 있을 수 있습니다.
vm.passwordPattern = "^[a-zA-Z0-9]+$";

암호 관리: 커밋이 안전하지 않습니다.


이것은 무엇을 의미하는가


이 범주는 검색에서 인증/계정 생성/암호 재설정을 커밋하는 방법에 문제가 있음을 나타냅니다.스캔은 제출이 HTTP get 요청을 통해 이루어진 것으로 간주되며, 웹 서버는 이 요청을 기록할 수 있고, 에이전트는 그것들을 캐시할 수 있습니다.HTTP GET를 사용하여 암호나 기타 중요한 정보를 보내면 공격자가 데이터를 잘못 처리하거나 발견할 수 있습니다.민감한 데이터를 보내려면 HTTP Post를 사용하는 것이 좋습니다.

가양성의 예


다음 예제에서 입력한 컨트롤러 ID "CurrentPassword"는 안전하지 않은 커밋으로 표시됩니다.그러나 이것은 컨트롤러에서 인용할 html에 ID를 추가하고 비밀번호를 제출할 때 GET 요청을 사용하지 않았기 때문에 오판이다.
 <input id="CurrentPassword"
        name="passwordConfirm"              
        type="password"
        maxlength="32"
        data-ng-pattern="Pattern"
        required
        ng-blur="selected = false" />
정적 스캔의 암호 관리 유형은 오보일 가능성이 많지만, 보안 위협이 없도록 이중과 삼중 검사를 하는 것을 권장한다.특히 비밀번호에 있어서는 추가 보안 빈틈을 초래할 수 있기 때문이다.

좋은 웹페이지 즐겨찾기