This page is not yet available in Spanish. We are working on its translation. If you have any questions or feedback about our current translation project, feel free to reach out to us!
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.
Non-Compliant Code Examples
// Example 1: Basic Socket usage
funcreateConnection(){// UNSAFE: Unencrypted socket
valsocket=Socket("api.example.com",80)socket.getOutputStream().write(data)}// Example 2: ServerSocket usage
funstartServer(){// UNSAFE: Unencrypted server socket
valserverSocket=ServerSocket(8080)valclient=serverSocket.accept()}// Example 3: Socket with custom configuration
funconfiguredSocket(){// UNSAFE: Still unencrypted despite configuration
valsocket=Socket("api.example.com",8080,true)socket.soTimeout=5000}
Compliant Code Examples
// Example 1: SSLSocket usage
funcreateSecureConnection(){// SAFE: Using SSL socket factory
valsocket=SSLSocketFactory.getDefault().createSocket("api.example.com",443)socket.getOutputStream().write(data)}// Example 2: SSL ServerSocket usage
funstartSecureServer(){// SAFE: Using SSL server socket factory
valserverSocket=SSLServerSocketFactory.getDefault().createServerSocket(8443)valclient=serverSocket.accept()}// Example 3: Configured SSLSocket
funconfiguredSecureSocket(){valcontext=SSLContext.getInstance("TLS")context.init(null,null,null)// SAFE: Using configured SSL socket
valsocket=context.socketFactory.createSocket("api.example.com",443)}
Integraciones sin problemas. Prueba Datadog Code Security
Datadog Code Security
Prueba esta regla y analiza tu código con Datadog Code Security
Cómo usar esta regla
1
2
rulesets:- kotlin-security # Rules to enforce Kotlin security.
Crea un static-analysis.datadog.yml con el contenido anterior en la raíz de tu repositorio
Utiliza nuestros complementos del IDE gratuitos o añade análisis de Code Security a tus pipelines de CI.