Las trampas de las bibliotecas de terceros
Categories:
- Las trampas de las bibliotecas de terceros
Hoy hablábamos de una vulnerabilidad reciente en una biblioteca de registro de terceros, que puede ser explotada con un umbral muy bajo para ejecutar comandos remotos. Una biblioteca de registro y la ejecución remota de comandos parecen no tener nada que ver, pero las bibliotecas de terceros con funciones superfluas están por todas partes.
Cuanto más código leo, más percibo que el nivel de mucho código de código abierto es muy pobre, sin importar cuántas miles de estrellas tenga; las estrellas representan la demanda, no el nivel de desarrollo.
La ventaja del código abierto es que hay más personas desarrollando, las características aumentan rápidamente, hay alguien que soluciona los errores, hay alguien que revisa el código, pero los niveles de habilidad son desiguales.
Si no hay una restricción fuerte en los envíos, es difícil garantizar la calidad del código.
Cuanto más código, mayor es la superficie de ataque añadida.
Aunque se dice que reinventar la rueda es malo, los requisitos del producto son como las ruedas de un cochecito: una rueda de plástico que no se estropea; si le montas un neumático de avión, solo aumentas la superficie de ataque y el costo de mantenimiento. Por lo tanto, si solo necesitas una rueda de cochecito, no necesitas sobreingeniería.
El costo de mantenimiento es alto, las bibliotecas de terceros necesitan procesos y personal dedicados para mantenerlas. Un framework de pruebas modificado drásticamente en Huawei provocó directamente fallos en los casos de prueba al actualizar el compilador; actualizar el framework de pruebas y actualizar el compilador generaba conflictos, y mantenerlo requería dedicar mucho tiempo a seguir el camino de las modificaciones drásticas. Como participante, entendí profundamente la dificultad de modificar bibliotecas de terceros. Si las modificaciones son características que pueden fusionarse de nuevo en la biblioteca de código abierto, está bien hablar de ello, pero el desarrollo personalizado intrusivo para las propias necesidades hace que sea muy difícil de mantener.
Para tratar con las bibliotecas de terceros, Huawei creó una serie de procesos, se podría decir que están llenos de resistencia.
El umbral es extremadamente estricto; añadir una biblioteca de terceros requiere la revisión de un experto de nivel 18 y un ministro de nivel 20, básicamente solo se pueden usar bibliotecas de terceros con larga trayectoria y renombre.
Todas las bibliotecas de terceros se colocan en la carpeta thirdparty; al compilar por completo, la CI compara con el repositorio fuente, y se prohíben estrictamente las modificaciones intrusivas.
Herramientas especializadas rastrean todas las versiones de las bibliotecas de terceros; para esta parte se contrató a personal externo para gestionarlo, y si un desarrollador solicita actualizar una versión, debe presentar una solicitud para que el ministro la apruebe.
Es difícil encontrar a un ministro para manejar este tipo de cosas; cuando un proceso es muy engorroso, en realidad te está disuadiendo de hacerlo.
Se debe mantener una actitud de no confianza ciega hacia las bibliotecas de terceros, confiar en el desarrollo del propio equipo.