Pregunta:
¿Debemos proteger el código fuente de la aplicación web para que no sea robado por servidores web a través de la ofuscación?
Rajat Gupta
2013-08-05 19:20:47 UTC
view on stackexchange narkive permalink

¿Vale la pena ofuscar el código fuente de una aplicación web Java para que el proveedor de alojamiento web no pueda hacer un uso incorrecto del código o incluso robar su negocio? Si es así, ¿cómo se debe abordar esto? ¿Cómo debemos ofuscarnos?

Somos una nueva empresa que lanza un producto al mercado. ¿Cómo podemos proteger el código fuente de nuestro producto / aplicación web?

Para eso está el cifrado totalmente homomórfico.
si la seguridad es un asunto tan importante, ¿alojar su propio servidor es una opción o no?
* Puede * (GRANDE) tener sentido asumir que el servidor web es malicioso, pero un servidor malicioso también plantea una serie de otros problemas. Si se toma en serio la idea de no confiar en el anfitrión, también debe abordar todas esas cuestiones, y en ese momento se vuelve poco práctico.
sí ... eso es cierto ... entonces, ¿es a menudo una cuestión de confianza? ¿Todos los demás, no dan ningún paso por miedo a que esto pueda pasar con ellos? ¿Qué hacen los demás en general para prevenir esto?
Si permite el acceso al código binario a alguien, no puede estar seguro de que no se someterá a ingeniería inversa. Es así de simple.
Si puede robar todo su "producto" a través de la web, entonces su inicio tendrá una vida corta de todos modos. El valor de la puesta en marcha es demostrar una buena idea, conseguir la aceptación del usuario y establecer a las personas detrás de todo como expertos en una tarea muy específica. La mayoría de las personas que lo adquirirían podrían escribir su propia "Aplicación X", pero las partes no obvias, las personas y la idea son lo que compran.
Si desconfía tanto del proveedor de alojamiento, quizás alojar el sitio usted mismo sea una mejor alternativa.
Esto suena muy parecido a "No puedo decirte mi idea, pero es genial. ¿Me escribirás una aplicación?". La idea de que un anfitrión mire su sitio web y diga "vamos a robar esa idea increíble y el código: cierre este negocio de alojamiento y peleemos una demanda" es ridícula.
Quince respuestas:
Adi
2013-08-05 19:30:35 UTC
view on stackexchange narkive permalink

Un proveedor de alojamiento malicioso puede hacer mucho más que simplemente robar su código. Pueden modificarlo para introducir puertas traseras, pueden robar los datos de sus clientes y arruinar todo su negocio. Debe existir confianza entre usted y el anfitrión.

Acerca del código fuente. Si el atacante está tratando de obtener acceso a su código fuente, obtendrá acceso a su código fuente, ofuscado o no, compilado o interpretado.

Allí está un valor en la ofuscación de su código, en el sentido de que probablemente hará que sea un poco más difícil de obtener por el atacante oportunista ocasional. Pero si tu anfitrión quiere atraparte, ellos te atraparán.

¿La solución? La ley. Firme un contrato con ellos y acuerde algún tipo de NDA.

es un acuerdo por cierto @Rubens, no un argumento
En general, si es un problema mayor para su proveedor de alojamiento, se corrió la voz de que robaron sus cosas, en comparación con lo que podrían ganar, puede confiar fácilmente en ellos. Por ejemplo, los servicios web de Amazon se realizarían muy rápidamente si alguien demostrara que robó parte de su código fuente, así que confío en que no lo hagan.
Lo único en lo que no estaría de acuerdo es si "hay un valor en ofuscar su código_".
Tom Leek
2013-08-05 19:28:58 UTC
view on stackexchange narkive permalink

Bueno, esto requiere tres comentarios:

  • No se pueden proteger secretos con la ofuscación de código. No realmente . La ofuscación de código de alguna manera funciona contra atacantes desmotivados, pero no es fuerte. Si hay un valor comercial en romperlo, entonces sucederá.

  • Si no confía en su servicio de alojamiento, busque otro servicio de alojamiento. Si el secreto de su código es importante y vale más que unos pocos cientos de dólares, entonces debe usar su propio hardware: alquila un espacio de bahía aislado, con cerraduras y protecciones, y ejecuta su propia máquina en él.

  • Su código existe como código compilado (byte) en los servidores, pero también como código fuente en sus sistemas de desarrollo y en la cabeza de sus desarrolladores. No puede ser ese secreto. Como dicen, un millón de dólares siempre es suficiente para desentrañar secretos, aunque solo sea mediante el soborno de una de las personas a las que se les ha informado.

    (En este último caso, ese podría ser su plan: usted es posible que desee ver a un competidor más grande simplemente comprarlo.)

La protección contra la ingeniería inversa y el robo de su propiedad intelectual normalmente se garantiza a través de medios legales, no técnicos.

"medios legales" ... ¿necesito hacer algún acuerdo con el proveedor de alojamiento web antes del alojamiento o en caso de que haga un uso incorrecto de mi código?
Los "medios legales" incluyen derechos de autor, NDA, patentes ... todo el armamento de los abogados. En última instancia, esto es una cuestión de costo relativo: los atacantes elegirán lo que sea más barato, ya sea comprando su empresa o haciendo algo de espionaje e ingeniería inversa, con el riesgo de represalias legales. Si fortalece su caso de propiedad intelectual, el juicio se volverá potencialmente demasiado costoso, lo que provocará que sus enemigos elijan la vía legal, también conocida como "dejar caer una gran cantidad de dólares en su regazo" (con suerte).
Xander
2013-08-05 19:29:49 UTC
view on stackexchange narkive permalink

No, no merece la pena. Nadie quiere robar tu código. Mil millones de productos SaaS han sido lanzados por individuos y empresas que utilizan alojamiento de terceros de una descripción u otra, y casi ninguno de ellos se ha encontrado a sí mismo compitiendo contra sí mismo después de que sus hosts les robaran el código de sus productos.

Entonces, ¿debería ofuscar su código? Claro, si te hace sentir mejor. Ningún daño hecho. ¿Está protegiendo su propiedad intelectual contra una amenaza válida? No en realidad no. Es una especie de versión del desarrollador web de un sombrero de papel de aluminio.

Hagas lo que hagas, no pierdas mucho tiempo y energía pensando en ello. Tome la decisión de ofuscar o no, y luego pase a preocuparse por mitigar las amenazas reales.

"Claro, si te hace sentir mejor los pies. No te ha hecho daño." Ni siquiera estoy seguro de si realmente no se ha hecho daño. Al menos hay un paso de compilación adicional, en el peor de los casos, supone una carga adicional para los desarrolladores. ¿Qué pasa si tienen que depurar un problema de forma remota? ¿Qué pasa si hay mensajes de error remotos, contendrá datos sensibles? ¿Los desarrolladores pueden trabajar con código no ofuscado de forma local?
@Dorus Entonces, sí, agrega complejidad, lo cual es malo. Yo personalmente no lo elegiría. Sin embargo, si realmente no puede dormir por la noche porque le preocupa que los bandidos de los dedos pegajosos se roben sus cosas valiosas, yo diría que vale la pena hacer una compensación. Habiendo trabajado (y realizado ingeniería inversa) con bastante código ofuscado, de hecho he visto que causa algunos de los problemas que señala (e introduce errores, en un par de casos) pero nunca lo he visto agregar una gran carga . En resumen, no ideal, pero tampoco el fin del mundo.
@Xander: puede ser suficiente para obtener una * desventaja * competitiva, pero el punto es que nunca lo verá. Se trata principalmente de dedicar tiempo a algo inútil en lugar de trabajar en la siguiente mejora del sitio, o de un tiempo de reacción más lento ante una mala experiencia del usuario cuando se debe corregir un error.
@kriss De acuerdo, ciertamente, ya que no me confundo cuando tengo una opción. Sin embargo, en mi experiencia, configurar y lidiar con los impactos de la ofuscación tiende a requerir solo una cantidad insignificante de tiempo y esfuerzo. Por supuesto, requiere tiempo y esfuerzo que se desperdician, pero no se desperdicia tanto. Cualquier característica que pudieras construir en su lugar sería trivial.
@Xander: básicamente uno de esos elementos de verificación de la lista en las auditorías que todo el mundo en seguridad sabe que es un ejercicio inútil, pero lo incluimos para que la administración sin educación sepa que hemos llenado el cuadro, ya sea que haga algo o no. .
@FiascoLabs Exactamente. Desafortunadamente, ese es el caso con demasiada frecuencia.
Dan Pichelman
2013-08-05 19:09:34 UTC
view on stackexchange narkive permalink

En última instancia, usted es el único que puede realizar esa evaluación de riesgos. Si duermes mejor ofuscando tu código, hazlo.

Personalmente, no me molestaría. Los servicios de alojamiento web de buena reputación se encuentran en el negocio del alojamiento web, no en el negocio del robo de código fuente. Si roban su código, aún tendrán que instalarlo, vender el servicio, encontrar clientes y luchar contra la demanda que entablaría contra ellos. Es demasiado esfuerzo para ellos con demasiado riesgo por muy poca recompensa.

AJ Henderson
2013-08-05 20:00:36 UTC
view on stackexchange narkive permalink

La ofuscación es ineficaz contra un atacante determinado, solo lo hace un poco más difícil. Si tiene una razón particular para desconfiar de su proveedor de alojamiento, obtenga otra.

Si solo quiere estar seguro, obtenga un acuerdo de no divulgación y otras garantías legales que le permitan perseguir a su anfitrión si abusa de las cosas.

Si aún no confía en ellos, incluso con esas garantías legales, obtenga servidores dedicados que pueda controlar y cifrar de manera que el proveedor de alojamiento no pueda acceder a los datos a menos que piratee el servidor operativo.

Si le preocupa que alguien tenga acceso físico a sus servidores, configure su propio centro de datos o enciérrelos físicamente en un gabinete en una instalación compartida con monitoreo de la propiedad física.

Sin embargo, el simple hecho de usar un NDA debería ser suficiente con cualquier proveedor de alojamiento de confianza.

Bill
2013-08-05 20:23:34 UTC
view on stackexchange narkive permalink

No me molestaría.

Dos razones:

Los lenguajes interpretados en tiempo de ejecución realmente no pueden protegerse completamente de esa manera. Para ofuscarlo completamente, también tendría que ofuscarlo del tiempo de ejecución, entonces no habría forma de ejecutarlo. La ofuscación solo hace que la tarea sea un poco más molesta. También puede hacer que la depuración y la implementación consuman más tiempo para su propio personal.

Muy pocas aplicaciones contienen realmente el tipo de código secreto que la gente realmente se tomaría tantas molestias para robar. Es mucho más fácil obtener una lista de funciones y algunos contratistas y decir "hacer algo como esto" que copiar función por función con la mayoría de las aplicaciones comunes.

tylerl
2013-08-06 06:58:05 UTC
view on stackexchange narkive permalink

Debe tomar precauciones para protegerse, pero no por las razones o de la amenaza que está imaginando.

En primer lugar, si no puede confiar en su proveedor de alojamiento, obtenga un nuevo proveedor de alojamiento . No es necesario decir más sobre eso.

En segundo lugar, aunque crea que la propiedad intelectual de la aplicación web que ha creado es valiosa, es probable que usted solo uno. ¿Robarías el sitio web de tu competidor? Probablemente no; no valdría la pena. Como regla general, las personas no están interesadas en robar su sitio. Normalmente, el costo de personalizar el sitio de otra persona para que se ajuste a sus propias necesidades se aproxima o excede el costo de construirlo usted mismo.

Finalmente, debería preocuparse de que los atacantes recuperen su código y lo usen para atacarlo. Contraseñas guardadas, bases de datos de usuarios, errores de programación y vulnerabilidades: su código probablemente presenta un objetivo jugoso para los atacantes maliciosos . Esto es particularmente cierto si su código está mal escrito o su servicio es popular.

Ofuscar su código no es una solución y no ayudaría de todos modos. Pero las buenas prácticas de seguridad, incluido el cumplimiento del principio de privilegio mínimo, deberían ayudarlo. Separe su acceso para que comprometer un sistema o componente no le dé a su atacante toda la aplicación en un pequeño paquete ordenado. Cuanto más independientes y desconectados sean los elementos de su negocio, menos se puede enganchar un atacante de una sola vez.

Cyril Joudieh
2013-08-06 12:42:17 UTC
view on stackexchange narkive permalink

Tengo muchas aplicaciones web alojadas en línea. Algún código es valioso, sí. Sin embargo, no oculté nada, ya que incluso si lo roban, nadie más puede mantenerlo. Eventualmente se arrancarán el pelo. Lo probé con alguien que deseaba desesperadamente mi software. No pudo instalarlo, entenderlo ni obtener nada de él, entonces, ¿cómo podría encontrar clientes y venderlo como se mencionó anteriormente?

El valor está en los datos y en el apoyo que brindas y mantener contento al cliente.

Todas mis aplicaciones de escritorio podrían descompilarse de una forma u otra. Creo que VB6 fue el único que no se pudo descompilar. Nadie podía mantenerlos porque yo uso codificación complicada y nombres de variables complicados.

user10211
2013-08-05 19:22:51 UTC
view on stackexchange narkive permalink

No hay ningún mérito de seguridad al intentar ofuscar cualquier código del lado del cliente. Un atacante lo suficientemente determinado evitará cualquier método de ofuscación que le arroje.

Si el código es realmente importante, manténgalo en el lado comercial. Considere cualquier código del lado del cliente público y disponible para todos.

sí, estoy hablando solo del código del lado del servidor ...
@user01 Si es un código del lado del servidor, ¿por qué le preocupa que la gente lo robe? Si no confía en su proveedor de alojamiento web, busque otro.
no conoce completamente a ningún proveedor de alojamiento web hasta que no le ha hecho ningún daño.
Philipp
2013-08-05 20:28:14 UTC
view on stackexchange narkive permalink

Cuando no confía en que su proveedor de servicios de alojamiento no robe sus datos, debe buscar un proveedor de alojamiento más confiable o un servidor usted mismo.

No solo les está confiando el código de su programa, también confía todos sus datos y los datos de todos sus usuarios. Cuando asume que su proveedor de alojamiento es lo suficientemente malintencionado como para robar su programación, también es lo suficientemente malintencionado como para robar sus datos de usuario y venderlos al mejor postor. Datos que probablemente prometió proteger en virtud de una política de privacidad.

Cuando llega a la conclusión de que no confía en ningún proveedor de alojamiento, pero que su alojamiento es demasiado caro, tiene la opción de comprar su propio servidor físico y deje que otra persona lo aloje, pero 1. cifre completamente su sistema de archivos para que no puedan clonar los discos duros durante el mantenimiento y 2. asegúrese de que toda la comunicación de la red esté cifrada para que no puedan olfatear el tráfico.

Daniël W. Crompton
2013-08-06 05:36:40 UTC
view on stackexchange narkive permalink

El mundo está patas arriba, el valor real no suele estar en el código de la aplicación. Es en los datos del cliente que el código se utiliza para recopilar / modificar. En muchas aplicaciones web, el código está protegido y los datos se encuentran en texto plano, a menudo sin ninguna protección simple. Este es uno de los problemas que PCI DSS, HIPAA y otros estándares de seguridad de datos deben abordar.

Suponiendo que su proveedor de alojamiento es malintencionado, el acceso a los datos de los clientes destruirá su empresa mucho más rápido. que obtener su código.

Además del problema de seguridad a través de la oscuridad, la ofuscación del código también puede introducir problemas de seguridad y deberá ser examinado al mismo nivel o a un nivel superior que su base de código habitual.

F. Hauri
2013-08-06 21:49:10 UTC
view on stackexchange narkive permalink

No.

Claramente: planea invertir tiempo en una tecnología llamada seguridad a través de la oscuridad .

¡No es una buena idea!

Para proteger su idea contra licencias de terceros, puede publicarlas bajo una licencia pública como GNU GPL, creative commons u otros.

Yo también iba a plantear este punto, y colocaría una caricatura de [_Schlock Mercenary_] (http://www.schlockmercenary.com) en mi respuesta. Desafortunadamente, no puedo encontrar la tira al respecto.
Ravi Chandran
2013-08-06 14:30:50 UTC
view on stackexchange narkive permalink

La ofuscación nunca oculta ni cambia su código, simplemente lo modifica a algún otro formato en el que pueda procesarlo,

Ejemplo: si desea ofuscar el nombre de su clase, MyHomePage puede cambiarlo a M4Page De manera similar, un método de addWidgets () se nombrará en algún otro, y el nombre de la función también podría cambiarse, no la Funcionalidad. Entonces, si deseo llamar al método desde su código ofuscado, puedo implementarlo fácilmente ...

CyberSkull
2013-08-07 12:39:37 UTC
view on stackexchange narkive permalink

No puede ofuscar su código o sus datos lo suficiente como para protegerlos. Si pudiera, su código y sus datos serían inutilizables incluso para usted.

La seguridad a través de la oscuridad solo funciona mientras el secreto de su ofuscación permanezca intacto. Los secretos nunca se quedan en secreto. Ésta es la base de la mayoría de los sistemas de derechos digitales y, hasta la fecha, todos han sido descifrados.

En una nota más técnica, si está utilizando un lenguaje interpretado (Perl, PHP) o un código de bytes interpretado lenguaje (Java), considere usar las herramientas de compilación nativas incluidas para ellos. Muchos de estos lenguajes de alto nivel incluyen una herramienta para generar una versión C / C ++ de sus scripts o compilar de forma nativa para su hardware. Tener una versión compilada de forma nativa elimina la necesidad de mantener su árbol de fuentes en sus servidores remotos y también proporciona un aumento significativo del rendimiento.

La mayoría de esas herramientas en realidad proporcionan una VM algo simplificada con código de bytes / árbol incrustado de su script, no un binario completamente nativo.Por lo tanto, pueden descompilarse fácilmente en una forma mucho más legible que un simple ensamblaje, por lo que no es una buena solución ofuscar nada.Por la misma razón, tampoco proporcionan un aumento de velocidad en ningún lugar excepto en el inicio.
John The Ripper
2013-08-07 19:23:00 UTC
view on stackexchange narkive permalink

La seguridad por oscuridad no es mala si no es lo único en lo que confía. Usar la ofuscación para proteger su código no funcionará, pero usar la ofuscación con otras licencias no está mal.



Esta pregunta y respuesta fue traducida automáticamente del idioma inglés.El contenido original está disponible en stackexchange, a quien agradecemos la licencia cc by-sa 3.0 bajo la que se distribuye.
Loading...