Application Security 모범 사례

 

애플리케이션이 존재하는 한 라이선스를 우회하고 IP를 해제하는 위협 행위자가 있었습니다.
훔칠 데이터와 파괴할 수 있는 행위. 애플리케이션 소유자는 이러한 위협에 대한 완화책을 개발했습니다.
그러자 위협 행위자들은 완화책을 우회하기 위해 새로운 도구와 프로세스를 도입했습니다. 고양이와 쥐의 싸움이었죠.
이러한 순환은 오늘날에도 계속되고 있습니다. 일부 특정 기술은 더 이상 작동하지 않지만 일반적인 기술은 있습니다.
의도치 않은 사용으로부터 애플리케이션을 보호하기 위한 지속적인 싸움에서 여전히 유효한 원칙입니다.

우리는 2년 이상 이러한 모범 사례를 개발하고 개선해 왔습니다. 그리고
일반적으로 적용 가능한 것도 있고, 서로 상충되는 것도 있으며, 특정 상황에서만 의미가 있는 것도 있습니다.

가장 중요한 것은 위협을 고려한 다음 적용하여 의도적으로 행동하는 것입니다.
관련 완화책을 마련하세요. 그 후에는 무슨 일이 일어나는지 확인하고 변경하세요. 변동은 그 중 하나이기 때문입니다.
핵심 기본 원칙입니다. 따라서 OODA(관찰, 방향 설정, 결정, 실행)를 실행하든 PDCA를 실행하든
(계획, 실행, 확인, 조치) 보호가 정체되지 않도록 하십시오. 귀하는 귀하의
가치 있는 일을 하기 위한 신청서입니다. 운영의 무결성을 유지하는 데까지 이르지 마세요.

다음은 원칙과 아이디어 목록입니다. 자신에게 맞는 것을 선택하되 의식적으로 실천하세요. 만약
아이디어를 무시하고 싶다면 괜찮습니다. 다만 그럴 때는 타당한 이유가 있는지 확인하세요.

표준을 따르세요

첫째, OWASP MASVS(https://mas.owasp.org/MASVS/11-MASVSRESILIENCE/)와 같은 일반 표준이나 귀하의 산업 또는 배포 모델과 관련된 지침이 있는 경우 이를 사용하십시오.
위협을 구축하고 우선순위를 지정하여 실수로 체크리스트에서 무언가를 놓치지 않도록 합니다. 여기
OWASP MASVS 복원력 범주에 매핑된 몇 가지 특정 보호 유형이 있습니다.

가이드 예시

사고방식 원칙

심리학자처럼 생각하세요

다음으로, 위협 행위자는 우리 모두와 동일한 경향과 편견을 가진 인간이라는 점을 기억하세요.
귀하의 애플리케이션을 보호하는 것에 대해 생각할 때 가능한 동기, 경쟁적 욕구에 주의하십시오.
일반적인 행동과 공격하려는 사람의 욕구에 영향을 미치는 기타 인간적 특성
응용 프로그램. Maslow의 동기 모델, 인지 편향 및 기타 방법을 촉진하는 요소를 고려하십시오.
생각하고 그것을 유리하게 활용하세요.

적을 알아라

위협 행위자가 무엇을 원하는지, 왜 원하는지 아는 것은 귀하의 환경에 적합한 보호 장치를 설계하는 데 도움이 될 수 있습니다.
응용 프로그램. Maslow의 동기 모델과 관련하여 위협 행위자는 공격을 통해 수익을 창출하여
가장 기본적인 욕구를 충족합니다. 다른 위협 행위자는 "거리의 신뢰"를 원할 수 있으므로 다음을 찾을 수 있습니다.
계층 구조의 최상위에 있는 사람은 다음과 같은 경우 귀하의 지원서에 대한 공격을 중단하도록 설득될 수 있습니다.
다른 조직에서 유사한 애플리케이션을 개발했는데, 이를 성공적으로 공격하기는 더 쉽습니다. 후자의 경우
이 경우 위협 행위자는 가장 잘 알려진 문제를 공격하는 데 열중할 수 있으므로 성공할 경우
그들은 엘리트 지위를 주장할 수 있습니다. 각자는 "수익"과 "투자"에 대한 서로 다른 개념을 가지고 있습니다. 그래서,
적의 ROI 모델을 이해하면 보호 계획을 세우는 데 도움이 될 수 있습니다.

적을 좌절시키세요

일반적으로 보호 기능이 위협 행위자를 좌절시킬수록 위협 행위자가 포기할 가능성이 커집니다.
그들의 공격. 벽에 머리를 너무 많이 부딪히면 결국에는 의심하게 됩니다.
계속하는 것의 이점.

준비 원칙

위협 모델링

먼저 애플리케이션에 대한 위협을 나열한 다음 우선순위에 따라 순위를 매겨 보세요.
어떤 위협을 먼저 해결해야 할지, 두 위협이 경쟁하는 경우 어떤 완화책을 선택해야 할지 파악하기 위한 순위
완화책. 이 목록은 성능 조정이 필요한 경우에도 도움이 됩니다. 보안 강도는 다음과 같습니다.
애플리케이션 논리에 더 많은 사이클을 제공하도록 조정되었지만 가장 중요한 것을 무시하는 것은 아닙니다.
영향력 있는 위협.

공격 도구 조사

애플리케이션을 공격하는 것이 얼마나 쉬운지 알고 싶다면 다음을 살펴보세요. OWASP MASTG (이동하는
Application Security 테스트 가이드). 여기에는 여러 위협 도구와 이를 사용하여 테스트하는 방법의 예가 나열되어 있습니다.
애플리케이션 복원력. 보호 전후에 분석을 수행하면
가장 중요한 위협에 대처합니다. [참고: 탈옥, 루트킷, 공격 프레임워크 사용 시 주의하세요.]
보안 제어를 비활성화해야 하며 악성 페이로드를 포함할 수도 있기 때문입니다!]

악당이 되어라

보호 기능을 개발하기 전에 위협이 무엇인지 이해하기 위해 애플리케이션을 공격하십시오(적어도 생각 속에서).
배우가 시도해 볼 수 있습니다. 적대적인 사고방식을 개발하는 것은 효과적인 보호 장치를 만드는 데 중요합니다. 많은
공격 벡터를 이해하기 전까지는 보호장치와 방어수단이 아무런 의미가 없습니다.

보호하기 전에 당신의 역할을 하세요

애플리케이션 보호 제품은 애플리케이션의 보안을 강화할 수 있지만 보안부터 시작하세요.
코딩 관행을 검토하고 다른 적용 가능한 도구(SAST, DAST, SCA 등)를 모두 사용하여 다른 것을 찾습니다.
취약점을 조기에 자주 발견하세요. OWASP MASTG와 OWASP MASVS를 활용하세요.
안전한 코딩 관행, 올바른 플랫폼 사용 등에 대한 정보

기본 보호 원칙

옵션을 곱하세요

많은 사람들과 마찬가지로 위협 행위자는 여러 가지 상황에 직면했을 때 저항이 가장 적은 경로를 선택할 가능성이 높습니다.
가능성이 있습니다. 따라서 다양한 대응 방식을 가진 여러 경비원을 활용하여 위협 행위자를 유도하는 다양한 경로를 만드십시오.
막다른 골목이나 꿀단지 또는 "모두 똑같은 꼬불꼬불한 작은 통로의 미로"로 향합니다. 꿀을 첨가하지 않아도
항아리 등을 더 많이 쌓을수록 건초더미에 건초를 더 많이 쌓을수록 바늘을 찾기가 더 어려워집니다.

브레이크 원인과 결과

원인과 결과는 위협 행위자에게 귀중한 도구입니다. 그들이 변화를 만들고 결과를 볼 때마다
반응, 그들은 귀하의 애플리케이션이 검사를 수행하는 시점과 그것이 어떻게 응답하는지에 대해 더 많이 알게 됩니다.
보는 이벤트를 변조합니다. 원인과 결과 사이의 연결을 끊거나 적어도 약간 완화하는 것은
효과적인 대응책입니다. 따라서 즉시 충돌하거나 종료하는 것이 유혹적이고 어느 정도 타당하지만
공격이 감지되면 실행 중인 앱을 미묘하게 중단하는 것이 더 나은 방법입니다.
공격자는 탐지를 통과했지만 자신이 그랬다는 사실을 모르면 다음 단계를 시도할 가능성이 높습니다.
그들은 자신이 잡혔다는 것을 깨닫기 전에 공격을 구성하는 일련의 사건에 여러 단계를 거쳐야 합니다.
단일 실패 지점을 격리하는 작업은 훨씬 더 어렵습니다. 이로 인해 공격자가
경비원을 찾아 무력화시키세요.

단일 실패 지점 제거

단일 실패 지점으로 인해 보호가 취약해지므로 여러 보호 장치를 연결하고 설정하십시오.
변조를 나타내는 임계 수준입니다. 특히 경비원이 휴리스틱을 사용할 때 더욱 그렇습니다.
예를 들어, 가상 제어 감지는 휴리스틱 기반 기술을 사용하여 상호 작용이 있는지 식별합니다.
장치가 사람일 가능성이 있는지 여부. 모든 휴리스틱 기반 결정과 마찬가지로 가상 제어 감지는
대략적인 것이며 항상 상호작용의 실제 출처를 반영하는 것은 아닙니다. 가상 제어 결합
다른 입력을 통해 감지하여 어떻게 반응할지 결정합니다.

모기를 모방하다

더 많은 수의 작은 경비원이 더 적은 수의 큰 경비원보다 바람직합니다. 작은 경비원은
더 큰 가드보다 찾기가 더 어렵고 서로 겹쳐서 더 큰 효과를 낼 수 있는 능력도 더 큽니다.
심층 방어의 척도입니다. 또한, 누적되는 작고 숨겨진 변조 행위는
천 개의 쏘는 공격을 받다.

보안 네트워크 사용

가드 네트워크는 애플리케이션과 다른 가드를 보호하기 위해 함께 작동하는 가드 그룹입니다.
네트워크. 보호 기능을 복잡하게 만들면 단일 보안 기능을 제거하기가 매우 어려워질 수 있습니다.
가드. 이 경우, 엉킴이 클수록 더 좋으며, 추가 가드가 필요한 지점까지만 가능합니다.
성능에 부정적인 영향을 미칩니다.

타겟 가드를 사용하세요

가장 중요한 자산을 보호하기 위해 보호 장치를 적용하고 가장 위험한 공격 벡터를 고려하십시오.
위험합니다. 예를 들어, 면허 취소가 우려되는 경우 보호는 면허에 집중해야 합니다.
논리, 라이선스 코드 경로, 라이선스 인수 검증, 라이선스 루틴 반환 값.

정기적으로 변경하고 교반하십시오

보호는 코드, 가드 사양 또는 청사진, 제품 버전에 따라 반무작위로 적용됩니다.
보호 시드. 모든 릴리스에 대해 시드를 변경하고 저장하여 확신을 가질 수 있습니다.
보호 방식은 매번 다릅니다. 그렇게 하면 공격자가 처음부터 다시 시작하게 되어 공격자가 불안해할 수 있습니다.
모든 릴리스에 적용됩니다. 공격자의 작업을 필요 이상으로 쉽게 만들 이유는 없습니다.

무료품을 제공하지 마세요

가드나 다른 기능을 디버그 모드로 설정하여 애플리케이션을 프로덕션에 출시하지 마세요.
디버그 메시지는 어떤 종류의 보호가 적용되고 어디에 삽입되는지를 보여줄 수 있습니다.
공격자가 공격하기 어렵게 만드니, 경계를 늦추지 마세요.

간단하게 시작하고 반복하세요

애플리케이션에 보호 기능을 처음 통합할 때 자동 보호 옵션을 활용하세요.
(기본 구성, 제로 구성 등)을 사용하여 CI 파이프라인에 보호 기능을 처음 통합합니다.
이를 통해 소프트웨어 개발 라이프사이클에 보호 기능을 더 빠르게 통합할 수 있습니다.
나중에 특정 보안 및 성능 요구 사항에 맞게 보호 기능을 사용자 지정할 수 있습니다.
초기 위협 평가에서 파악된 대로 적절한 수준으로 보호 기능을 다시 맞춤 설정하세요.

고급 보호 원칙

비결정적 행동 소개

많은 경비원이 보이지 않는 방식으로만 반응하도록 하는 것 외에도 다음과 같은 경비원도 고려하십시오.
일부 시간 동안 트리거합니다. 실행 확률 또는 벽시계 시간 임계값 또는 조합을 사용합니다.
가드 출력은 애플리케이션이 수행하는 작업에 대해 약간의 미스터리를 유발할 수 있습니다. 변조 작업을 사용하세요.
코드를 미묘하게만 수정하더라도 원래 의도를 보호할 수 있습니다.

모든 것을 보고하세요

이러한 미묘한 반응 기술 중 일부를 사용하는 경우에도 모든 변조 이벤트를 보고하는 것이 중요합니다.
App Aware. 이 귀중한 데이터는 미래를 개선하는 데 도움이 되는 패턴을 연구하는 데 사용될 수 있습니다.
보호 기능은 특히 일반 사용자, 악용 개발자, 악용 사용자를 구별하는 데 도움이 됩니다.

별도의 경비 네트워크

가드 네트워크의 개념을 한 단계 더 발전시켜 보세요. 서로 독립적인 여러 가드 네트워크를 활용하세요.
서로 분리되어 있으므로 위협 행위자가 하나의 보안 네트워크를 식별하더라도 기다리고 있는 다른 보안 네트워크가 있습니다.
공격을 감지하기 위해 날개에 있습니다.

타겟이 없는 가드를 사용하세요

타겟 가드와 함께 애플리케이션의 특이하거나 중요하지 않은 부분에도 가드를 추가하세요.
가장 중요하고 가장 철저하게 보호되는 코드가 너무 눈에 띄지 않도록 합니다. 또한
방어 체계를 구축할 때 고려하지 못했던 공격을 포착할 수 있습니다. 이는 심층 방어가 빛을 발하는 또 다른 사례입니다.

예상 실패 사례 포함

어떤 조건을 평가한 다음 행복한 경로와 다음 경로 중 하나를 선택하는 함수가 있는 경우
불행한 경로에서 위협 행위자는 평가 함수를 항상 반환하는 함수로 바꾸려고 시도할 수 있습니다.
사실입니다. 실패하게 만드는 인수를 사용하여 해당 함수에 호출을 추가했지만 여전히 통과하는 경우
뭔가 잘못되었다는 것을 알고 있습니다. 이 보안 프로그래밍 관행에는 응용 프로그램이 필요하지 않습니다.
보호 기능이 작동합니다. 그러나 이 코드를 추가하고 보호하면 애플리케이션의 전반적인
심층 방어 태세이므로 둘 다 권장됩니다.

스레드를 전략적으로 활용하세요

일부 가드를 백그라운드 스레드에서 실행하는 것을 고려해 보세요. 모든 작업을 단일 스레드에서 처리합니다.
공격자의 작업이 단순해집니다. 공격자가 여러 스레드를 감시하도록 강제하면 작업이 더 어려워집니다.

스레딩 문제에 주의하세요

멀티스레드 코드에 가드 또는 기타 보호 기능을 설치할 때(권장!) 다음을 확인하십시오.
당신이 사용하고 있는 기능은 스레드입니다 safe. 가드 유형이 스레드가 아닌 경우 safe 상자 밖에서 고려하세요
한 가지 유형의 가드를 모두 하나의 스레드에 배치하거나 뮤텍스를 추가하여 여러 스레드를 동기화합니다.

패턴을 신중하게 일치시키세요

정규 표현식을 사용하여 호출 위치 또는 보호 범위를 식별할 때는 다음을 주의 깊게 검토하십시오.
보호 로그를 정기적으로 확인하여 예상하는 것과 일치하는지 확인하세요. 의도치 않은
과도한 매칭은 심각한 성능 저하, 극심한 코드 팽창과 같은 결과를 초래할 수 있습니다.
실패를 초래할 수도 있습니다. 필요할 때 더 어렵게 만드는 것이 아니라 더 쉽게 만들기 위해 매칭 기능을 활용하세요.
모호한 오류를 디버깅합니다.

사용자 정의 변조 반응 함수 변경

단일 실패 지점을 제거하는 또 다른 방법은 하나 대신 여러 개의 변조 대응 함수를 사용하는 것입니다.
공격자에게 더 많은 일을 맡겨라. 일을 덜 주는 게 아니라 더 많이 주라.

중요한 일을 할 때는 변조 방지 반응을 사용하세요

변조 반응만 사용하면 공격자가 전체 가드를 제거하기가 더 쉽습니다. 의미 있는
변조 방지 대응 작업으로 인해 공격자가 가드를 제거하더라도 좋은 일이 발생하지 않습니다.
모든 지점에서 공격자는 도끼가 아닌 메스를 사용해야 합니다.

손상되거나 복구된 코드와 데이터를 다음 위치에서 사용하세요.
가능한

Windows와 같은 일부 플랫폼에서는 정적 코드를 손상시키고 복구하고 다시 손상시킬 수 있습니다.
동적 분석이 더 어렵습니다. 여러분의 플랫폼에서 가능하다면 꼭 하세요! iOS와 같은 다른 플랫폼에서는 허용되지 않습니다.
코드를 변경하더라도 데이터는 변경할 수 있습니다. 제한적인 플랫폼에서는 손상, 복구 및
코드 실행을 주도하는 데이터를 손상시킵니다. 실제 데이터와 가짜 데이터를 모두 포함하는 switch 문
데이터 값에 의해 선택된 코드는 덜 제한적인 코드에서 제공되는 보호 값 중 일부를 제공할 수 있습니다.
플랫폼.

가능한 한 좋은 호출 위치를 선택하세요

호출 위치 지정을 허용하는 보호 제품을 사용할 때는 여러 가지 방법을 섞어서 사용하세요. 모든
한 곳에 가드를 배치합니다. 일부 호출은 함수 시작 부분에 배치합니다. 일부 호출은 함수 내부에 배치합니다.
시작 시 일부 호출을 사용합니다. 일부 호출은 간격을 두고 실행합니다. 변경하면 혼란이 커질 수 있습니다.

유지 관리 원칙

더 스마트하게 디버깅하세요

당사의 보호 제품에는 보호 시간 및 런타임 문제 디버깅을 지원하는 기능이 있습니다.
자세한 내용은 설명서를 참조하세요.

도움말 지원 도움말

고객 지원에 도움을 요청할 때는 로그를 포함하여 가능한 한 많은 정보를 제공하십시오.
guardspecs/blueprints, 보호되지 않은 애플리케이션, 디버그 정보, 맵 파일, 보호 명령
사용된 보호 제품 버전 등 문제를 재현하는 데 필요한 모든 것을 갖추는 것이 항상 중요합니다.
가장 빠른 해결책을 찾으세요.

암호화 원리

화이트박스 암호화 사용

마지막으로, 애플리케이션이 민감한 데이터를 처리하는 경우 암호화를 이미 사용하고 있기를 바랍니다. 하지만
애플리케이션에 키를 배송하면 여러 공격 도구 중 하나를 사용하여 키를 찾아 복사할 수 있는 경우가 많습니다.
그 목적을 위해 만들어졌습니다. 다음과 같은 화이트박스 암호화 솔루션을 사용합니다. Digital.ai 키 및 데이터 보호 가능
애플리케이션이 필요한 작업을 수행하는 동안 키가 메모리에 존재하지 않도록 보장합니다.
암호화 작업.

화이트박스 암호화는 정식 키를 코드로 대체하여 쉽게 찾아서 해독할 수 없도록 합니다.
키가 다른 형식이더라도 여전히 애플리케이션이 상호 작용할 수 있습니다.
OpenSSL과 같은 일반적인 암호화 구현을 사용하는 엔드포인트.

화이트박스 암호화는 동등한 코드가 클래식 키로 되돌릴 수 없기 때문에 키를 보호합니다.
형식. 동시에, Digital.ai 키 및 데이터 화이트박스 암호화 키는 효과적으로 긴밀하게 결합됩니다.
정적으로 연결된 화이트박스 알고리즘 구현에. 이러한 화이트박스 암호화 키는
대체 라이브러리를 연결하여 쉽게 회전할 수 있으므로 애플리케이션은 위협에 대한 복원력이 더욱 강화됩니다.
배우.

안전하게 앞으로 나아가세요!

진화하는 위협 행위자로부터 애플리케이션을 보호하는 것은 지속적인 과제라는 점을 기억하십시오.
애플리케이션 소유자와 악의적인 행위자 간의 지속적인 고양이와 쥐의 싸움을 위해서는 다음이 필요합니다.
변화하는 위협에 대비해 사전 예방적이고 적응력을 유지하세요. Digital.ai 이 사이클에서 당신의 파트너이고,
우리는 이 논문에 설명된 조언의 틀 안에서 우리가 제공하는 도구를 사용할 것을 권장합니다.
귀하의 자산을 보호하기 위해. 궁금한 점이 있으시면 언제든지 문의하세요! 저희가 도와드리겠습니다.