이 섹션에는 소스 코드 외부에 있지만 제작 중인 제품의 보안에는 여전히 중요한 내용이 모두 포함되어 있습니다. 이 섹션에서 다루는 문제들은 소스 코드와 직접적으로 관련이 없기 때문에 나머지 섹션과 분리했습니다.
HTTP
로 설정되어 있으면 통신을 암호화하지 않습니다. 그러면 데이터가 무단 액세스, 변조 및 도난 위험에 노출됩니다.listener-connection
)의 protocol
을 HTTP
로 설정합니다. 따라서 HTTP Listener에 대한 연결이 보호되지 않습니다.
<http:listener-config name="http_listener_config">
<http:listener-connection host="example.com" port="8080" protocol="HTTP">
...
</http:listener-connection>
</http:listener-config>
tls:context
요소는 TLS 연결 구성 집합을 정의합니다. 구성 내의 tls:trust-store
요소는 신뢰할 수 있는 인증 기관의 인증서가 포함된 파일을 지정합니다. 클라이언트는 이 파일을 사용하여 서버에서 제공한 인증서를 확인합니다. 기본적으로 Mule 런타임 엔진은 모든 TLS 연결에서 서버 인증서를 확인합니다.tls:trust-store
요소의 insecure
특성 값이 true
이면 확인을 수행하지 않고 서버 인증서를 수락합니다.insecure
특성을 true
로 설정합니다. 따라서 Mule 런타임 엔진이 TLS 컨텍스트 demoTlsContext
를 사용하는 모든 연결의 서버 인증서를 확인하지 않습니다. 이러한 연결은 중간자(man-in-the-middle) 공격에 취약합니다.
...
<tls:context name="demoTlsContext">
...
<tls:trust-store ... insecure="true" ... />
...
<tls:context/>
...
security
요구사항 및 대상 servers
정의는 항상 개별 전역 설정을 다시 정의합니다. security
요구사항 및 대상 servers
정의는 항상 개별 전역 설정을 다시 정의합니다. security
정의를 정의합니다.security
정의가 비어 있으면 공격자가 중요한 API 끝점과 상호 작용하게 될 수 있습니다. 그러면 특정 권한이 있는 특정 사용자 계정만 수행 가능하도록 제한해야 하는 작업을 수행할 수 있습니다.security
정의를 선언합니다. 이 사양을 구현하는 API를 사용하여 중요한 작업을 수행하면 무단 액세스나 미인증 액세스에 취약해질 수 있습니다.
{
"openapi" : "3.0.3",
"info" : {
"title" : "My API",
"version" : "1.0.0"
},
"servers" : [ {
"url" : "/"
} ],
"security" : [],
...
}
security
정의를 정의합니다.security
정의가 비어 있으면 공격자가 중요한 API 끝점과 상호 작용하게 될 수 있습니다. 그러면 특정 권한이 있는 특정 사용자 계정만 수행 가능하도록 제한해야 하는 작업을 수행할 수 있습니다.security
정의를 선언합니다. 이 사양을 구현하는 API를 사용하여 중요한 작업을 수행하면 무단 액세스나 미인증 액세스에 취약해질 수 있습니다.
openapi: 3.0.3
info:
title: My API
version: 1.0.0
security:
security
정의가 포함되어 있습니다.security
정의를 포함하는 작업을 수행하는 경우 공격자가 중요한 API 끝점과 상호 작용하게 될 수 있습니다. 그러면 명시적 권한이 있는 특정 사용자 계정만 수행 가능하도록 제한해야 하는 작업을 수행할 수 있습니다.security
정의를 설정합니다. 이로 인해 전역적으로 정의된 보안 요구사항이 다시 정의되며, createUsers
작업이 미인증 무단 액세스에 취약해집니다.
{
"openapi": "3.0.0",
"info": {
...
},
"paths": {
"/users": {
"post": {
"security": [],
"summary": "Create a user",
"operationId": "createUsers",
...
}
...
}
}
security
정의가 포함되어 있습니다.security
정의를 포함하는 작업을 수행하는 경우 공격자가 중요한 API 끝점과 상호 작용하게 될 수 있습니다. 그러면 명시적 권한이 있는 특정 사용자 계정만 수행 가능하도록 제한해야 하는 작업을 수행할 수 있습니다.security
정의를 설정합니다. 이로 인해 전역적으로 정의된 보안 요구사항이 다시 정의되며, createUsers
작업이 미인증 무단 액세스에 취약해집니다.
openapi: 3.0.0
info:
...
paths:
/users:
post:
operationId: createUsers
security: []
responses:
'201':
...
security
정의가 누락되어 있습니다.security
정의가 없으면 공격자가 중요한 API 끝점과 상호 작용하게 될 수 있습니다. 그러면 특정 권한이 있는 특정 사용자 계정만 수행 가능하도록 제한해야 하는 작업을 수행할 수 있습니다.security
정의를 선언하지 않습니다. 이 사양을 구현하는 API를 사용하여 중요한 작업을 수행하면 무단 액세스나 미인증 액세스에 취약해질 수 있습니다.
{
"openapi" : "3.0.3",
"info" : {
"title" : "My API",
"version" : "1.0.0"
},
"servers" : [ {
"url" : "https://example.org"
} ],
...
}
security
정의가 누락되어 있습니다.security
정의가 없으면 공격자가 중요한 API 끝점과 상호 작용하게 될 수 있습니다. 그러면 특정 권한이 있는 특정 사용자 계정만 수행 가능하도록 제한해야 하는 작업을 수행할 수 있습니다.security
정의를 선언하지 않습니다. 이 사양을 구현하는 API를 사용하여 중요한 작업을 수행하면 무단 액세스나 미인증 액세스에 취약해질 수 있습니다.
openapi: 3.0.3
info:
title: My API
version: 1.0.0
...
security
정의가 포함되어 있지 않습니다.security
정의가 포함되어 있지 않은 작업을 수행하는 경우 공격자가 중요한 API 끝점과 상호 작용하게 될 수 있습니다. 그러면 명시적 권한이 있는 특정 사용자 계정만 수행 가능하도록 제한해야 하는 작업을 수행할 수 있습니다.security
정의를 설정하지 않습니다. 또한 전역 security
정의가 없으면 createUsers
작업이 미인증 무단 액세스에 취약해집니다.
{
"openapi": "3.0.0",
"info": {
...
},
"paths": {
"/users": {
"post": {
"summary": "Create a user",
"operationId": "createUsers",
...
}
...
}
}
security
정의가 포함되어 있지 않습니다.security
정의가 포함되어 있지 않은 작업을 수행하는 경우 공격자가 중요한 API 끝점과 상호 작용하게 될 수 있습니다. 그러면 명시적 권한이 있는 특정 사용자 계정만 수행 가능하도록 제한해야 하는 작업을 수행할 수 있습니다.security
정의를 설정하지 않습니다. 또한 전역 security
정의가 없으면 createUsers
작업이 미인증 무단 액세스에 취약해집니다.
openapi: 3.0.0
info:
...
paths:
/users:
post:
operationId: createUsers
responses:
'201':
...
securitySchemes
정의가 누락되어 있습니다.securitySchemes
정의는 전역적으로 사용되거나 특정 API 작업에서 사용될 수 있는 보안 메커니즘을 지정합니다.components
개체 아래에 지정되는 securitySchemes
정의는 상호 작용을 위한 보안 요구사항 확인을 위해 전역적으로 참조되거나 특정 작업에서 참조됩니다.securitySchemes
정의를 정의하지 않습니다.
{
"openapi" : "3.0.3",
"info" : {
"title" : "My API",
"version" : "1.0.0"
},
"components": {
"schemas": {
"GeneralError": {
"type": "object",
"properties": {
...
}
}
}
securitySchemes
정의가 누락되어 있습니다.securitySchemes
정의는 전역적으로 사용되거나 특정 API 작업에서 사용될 수 있는 보안 메커니즘을 지정합니다.components
개체 아래에 지정되는 securitySchemes
정의는 상호 작용을 위한 보안 요구사항 확인을 위해 전역적으로 참조되거나 특정 작업에서 참조됩니다.securitySchemes
정의를 정의하지 않습니다.
openapi: 3.0.3
info:
title: My API
version: 1.0.0
components:
schemas:
GeneralError:
type: object
properties:
...
security
정의 내에 선택적 보안 요구사항 항목이 정의되어 있으면 공격자가 중요한 API 끝점과 상호 작용하게 될 수 있습니다. 그러면 특정 권한이 있는 특정 사용자 계정만 수행 가능하도록 제한해야 하는 작업을 수행할 수 있습니다.{}
항목을 통해 선택적 보안을 사용하는 전역 security
정의를 선언합니다. 이 사양을 구현하는 API를 사용하여 중요한 작업을 수행하면 무단 액세스나 미인증 액세스에 취약해질 수 있습니다.
{
"openapi" : "3.0.3",
"info" : {
"title" : "My API",
"version" : "1.0.0"
},
"servers" : [ {
"url" : "/"
} ],
"security" : [ {}, { "oauth_auth" : ["write","read" ]} ],
...
}
security
정의 내에 선택적 보안 요구사항 항목이 정의되어 있으면 공격자가 중요한 API 끝점과 상호 작용하게 될 수 있습니다. 그러면 특정 권한이 있는 특정 사용자 계정만 수행 가능하도록 제한해야 하는 작업을 수행할 수 있습니다.{}
항목을 통해 선택적 보안을 사용하는 전역 security
정의를 선언합니다. 이 사양을 구현하는 API를 사용하여 중요한 작업을 수행하면 무단 액세스나 미인증 액세스에 취약해질 수 있습니다.
openapi: 3.0.3
info:
title: My API
version: 1.0.0
security:
- {}
- oauth_auth:
- write:users
- read:users
security
정의 내에 비어 있는 {}
개체가 포함되어 있기 때문입니다. 이로 인해 전역적으로 정의된 보안 요구사항이 다시 정의되며, createUsers
작업이 미인증 무단 액세스에 취약해집니다.
{
"openapi": "3.0.0",
"info": {
...
},
"paths": {
"/users": {
"post": {
"security": [
{},
{
"my_auth": [
"write:users"
]
}
],
"summary": "Create a user",
"operationId": "createUsers",
...
}
...
}
}
security
정의 내에 비어 있는 {}
개체가 포함되어 있기 때문입니다. 이로 인해 전역적으로 정의된 보안 요구사항이 다시 정의되며, createUsers
작업이 미인증 무단 액세스에 취약해집니다.
openapi: 3.0.0
info:
...
paths:
/users:
post:
operationId: createUsers
security:
- {}
- oauth_auth:
- write:users
- read:users
responses:
'201':
...