이 섹션에는 소스 코드 외부에 있지만 제작 중인 제품의 보안에는 여전히 중요한 내용이 모두 포함되어 있습니다. 이 섹션에서 다루는 문제들은 소스 코드와 직접적으로 관련이 없기 때문에 나머지 섹션과 분리했습니다.
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/>
...
Denial of Wallet (DoW)
공격자가 클라우드 기반 AI 서비스의 사용량 기반 모델을 악용하여 대량의 요청을 시작하면 공격이 발생할 수 있으며, 이로 인해 공급자는 지속 불가능한 재정적 부담을 질 수 있습니다. 이로 인해 과도한 요청을 처리하는 데 드는 비용이 감당할 수 없을 정도로 커져서 공급자는 심각한 재정적 손실을 입을 수 있습니다.max_completion_tokens
매개 변수를None
으로 설정하면 어떻게 과도한 데이터가 생성될 가능성이 높아지는지 보여줍니다. 이는 LLM 서버의 리소스를 과부하 상태로 만들어 잠재적으로 Denial of Wallet (DoW)
공격으로 이어지게 됩니다.
import os
from openai import OpenAI
client = OpenAI(api_key='OPENAI_API_KEY')
def generate_safe_response(prompt):
completion = client.chat.completions.create(
model="gpt-3.5-turbo",
timeout=10,
max_completion_tokens=None,
messages=[
{"role": "user", "content": prompt}
]
)
return completion.choices[0].message
prompt = "Describe the latest advancements in machine learning."
response = generate_safe_response(prompt)
print(response)
max_completion_tokens
매개 변수는 출력 길이를 제한하여 모델이 다운스트림에서 문제를 일으킬 수 있는 지나치게 긴 응답을 생성하지 않도록 보장하는 데 도움이 됩니다. 출력 크기를 제어하면 보안 취약점을 초래할 수 있는 의도치 않은 잠재적으로 유해한 콘텐츠가 생성될 위험을 줄일 수 있습니다.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':
...