- 필수 기능
- 시작하기
- Glossary
- 표준 속성
- Guides
- Agent
- 통합
- 개방형텔레메트리
- 개발자
- Administrator's Guide
- API
- Datadog Mobile App
- CoScreen
- Cloudcraft
- 앱 내
- 서비스 관리
- 인프라스트럭처
- 애플리케이션 성능
- APM
- Continuous Profiler
- 스팬 시각화
- 데이터 스트림 모니터링
- 데이터 작업 모니터링
- 디지털 경험
- 소프트웨어 제공
- 보안
- AI Observability
- 로그 관리
- 관리
ID: kotlin-security/ensure-secure-socket
Language: Kotlin
Severity: Error
Category: Security
CWE: 319
This rule ensures that all network sockets used in your Kotlin application are secured using SSL/TLS encryption. Unencrypted network communication is a significant security risk because it allows attackers to intercept and manipulate the data being transmitted. This can lead to data breaches, unauthorized access, and other security issues.
In Kotlin, you can ensure your sockets are encrypted by using the SSLSocketFactory
or SSLServerSocketFactory
classes to create your sockets. If you need to use a socket with custom configuration, you can still ensure it is encrypted by using the SSLContext
class to create a configured SSL socket. Avoid using the Socket
or ServerSocket
classes directly, because these classes create unencrypted sockets by default.
// Example 1: Basic Socket usage
fun createConnection() {
// UNSAFE: Unencrypted socket
val socket = Socket("api.example.com", 80)
socket.getOutputStream().write(data)
}
// Example 2: ServerSocket usage
fun startServer() {
// UNSAFE: Unencrypted server socket
val serverSocket = ServerSocket(8080)
val client = serverSocket.accept()
}
// Example 3: Socket with custom configuration
fun configuredSocket() {
// UNSAFE: Still unencrypted despite configuration
val socket = Socket("api.example.com", 8080, true)
socket.soTimeout = 5000
}
// Example 1: SSLSocket usage
fun createSecureConnection() {
// SAFE: Using SSL socket factory
val socket = SSLSocketFactory.getDefault()
.createSocket("api.example.com", 443)
socket.getOutputStream().write(data)
}
// Example 2: SSL ServerSocket usage
fun startSecureServer() {
// SAFE: Using SSL server socket factory
val serverSocket = SSLServerSocketFactory.getDefault()
.createServerSocket(8443)
val client = serverSocket.accept()
}
// Example 3: Configured SSLSocket
fun configuredSecureSocket() {
val context = SSLContext.getInstance("TLS")
context.init(null, null, null)
// SAFE: Using configured SSL socket
val socket = context.socketFactory
.createSocket("api.example.com", 443)
}