Todos pecamos de prisas (yo incluído) y la información vino en tromba. He leído su explicación y te resumo la verdad, breve y sencilla. Hoy, 24 de julio, CrowdStrike publica un PIR (Preliminary Post Incident Review). Es decir, una revisión de un incidente para identificar las causas y planificar acciones.
|
etiquetas: crowdstrike , windows , bsod
que salta de un fichero mínimamente incorrecto
que no se detecta por un bug en un "Content Validator"
que ha pasado unos tests que justamente no comprobaban lo que falló.
Ya, pero eso no sirve como excusa, porque no es un fallo que el efecto fuera algo muy raro, o que necesitara una interacción con otro software para funcionar. Es un software que tumba la maquina. Que menos que hacer una prueba que coja una maquina fresca, instale el software, y verifique que funciona. Yo trabajo en software critico desplegado en muchos millones de maquinas y siempre se puede colar un bug, nadie es perfecto, pero uno que haga que no funcione nada? Ahí faltan unos sanity checks básicos.
que salta de un fichero mínimamente incorrecto
que no se detecta por un bug en un "Content Validator"
que ha pasado unos tests que justamente no comprobaban lo que falló.
Ya, pero eso no sirve como excusa, porque no es un fallo que el efecto fuera algo muy raro, o que necesitara una interacción con otro software para funcionar. Es un software que tumba la maquina. Que menos que hacer una prueba que coja una maquina fresca, instale el software, y verifique que funciona. Yo trabajo en software critico desplegado en muchos millones de maquinas y siempre se puede colar un bug, nadie es perfecto, pero uno que haga que no funcione nada? Ahí faltan unos sanity checks básicos.
Igual sí que retiraron la versión pero los servidores actualizados ya no podían arrancar de cero para actualizarse.
De hecho, los servidores.afectados podrían haber levantado máquinas con copias de seguridad en las que se deshabilitaba Crowdstrike. Que no se hiciera tendrá un motivo, porque es raro.
De hecho hace dos semanas toqueteando sin tener cuidado lo que no tenía que tocar cerré el puerto 80 de un servidor de producción por error sin darme cuenta y me lo cargué todo. En 30 minutos habíamos cargado la imagen de la noche anterior para dar servicio. En 3-4 horas cualquier servicio debería estar otra vez de pie.
Sobre lo que comentas del backup, las VM en Azure que tengan el servicio de Azure backup no permiten arrancar en modo seguro para p ej en las primeras horas arrancarlo y borrar el… » ver todo el comentario
Sobre el parche y su aplicación masiva lo dicen en la parte que comienza por "File Classification Status" en: "the impacted version of the channel file was added to Falcon’s known-bad list in the CrowdStrike Cloud"
Sin embargo en el JP Morgan les cagaron parte de la flota de las ATMs.
Pero es que antes, como dice #2 faltan unos test básicos. Y aún antes, añado yo, falta cobertura en esos test.
Que si que se pueden colar cosas pero ya es raro...
Y gente que no tiene ni QA realemente, porque tienen un equipo de "support" que mete cosas en Produccion si que haya habido un tio/a de QA que lo certifique y lo pare, porque son aplicaciones internas. Y estamos hablando de un banco a nivel mundial. El truco es hacerlo a hora raras y si no peta nada... pues no pasa nada.
Seguramente los tengan, pero ni un solo tester probó la versión final.
Por imaginar, me suena a "tú cuela esta nueva funcionalidad para el despliegue de mañana que no va a romper nada"
Todo el mundo se piensa que un cacharro de estos (y no estoy hablando de un parche al kernel de Windows, que no se ni como va, mas alla de haberme metido hace mucho tiempo en DLLs para hace cositas) es como cambiar la lavadora, y ni eso... que es como cambiar el televisor.
- no tienen un… » ver todo el comentario
Luego queda en la mano de cada empresa denunciar las pérdidas y Amazon, Microsoft o el que toque, ya se encargará de tirar la mierda para arriba.
Es el martillo de oro aplicado al ci/CD, esto está muy bien para muchas apps, pero para software industrial y software crítico no sirve, repito no sirve.
Estos lo que tienen que hacer es el despliegue de forma escalonada, no todo el mundo a la vez...
He tenido bancos que no entendian por que un despliege blue-green con un sistema de cara al publico.
economiadesarrollo planificado, ¿no serás un comunishta de esos?con lo molonas, modernas, y veloces que son las ultraliberales "metodologías ágiles"...
Como decia el gran Grady Booch (parafraseando): un sistema informatico es un sistema no lineal, asi que los fallos debido a una entrada, no tiene una relacion lineal. Que un pequenio cambio, peta todo.
Los CI/CD esta muy bien, pero es como Agile, introduce la narrativa falsa de los cambios incrementales. Eso esta muy bien si quieres pintar una pared de verde o azul, no si tienes que cambiar los cimientos de un edificio, porque los planos son de un polideportivo en vez de… » ver todo el comentario
Vamos a ver macho, entonces no es un error. Es un error. Sobre otro error... sobre otro error. 3 errores distintos y consecutivos que lo único que me demuestra es que si se te han colado 3 errores que se han alineado y han causado un BSOD es que probablemente tengas otros 40 errores en tu código que no has visto y que es una bomba de relojería esperando a reventar o que al menos esta todo cogido con alfileres por ahorrarte sueldos y QA en condiciones...
Parece mentira que haya que explicar algo tan básico
Lo que no quita que mañana a Linus Torvalds se le escape un bug en el kernel de Linux, o alguna librería mantenía por un friki (como xy), que te llegan unos lobos con piel de cordero y te tratan de meterte un backdoor así x la cara.. pues eso.. pero Open Source always better than closed shit
Q han reventado los SO, no solo se la ha oegado su software...
Casi imposible de evitar dice el notas.
QA es necesario. Desplegar en entornos de staging tb, pero quién coño en su sano juicio hace un despliegue masivo sin utilizar una estrategia canary???!!!
Por eso han creado el Validator… para dormir más tranquilos…
No me vale.
Ya bastante (poco) estrés tengo con lo mío.
Soy un pinche de DevOps en entornos hiperconvergentes y en S.O. FOSS.
El que use Windows sobre metal, ya sabe lo que le espera. Asumieron el riesgo y cosecharon.
Ya la liaron con RHEL 9.4
www.reddit.com/r/crowdstrike/comments/1cluxzz/crowdstrike_kernel_panic
Y tener un server baremetal sin un controlador BMC que te permita un acceso KVM a la maquina incluso apagada es negligente y parece que mucha gente no los usa cuando todos los servers medio decentes los tienen
Vease ILO en HP o iDRAC en Dell....
Sé que soy un poco paranoico pero duermo mejor sabiendo que tengo un plan B,C y D, como mínimo.
En todo caso, estamos de acuerdo en lo de KVM/ILO
Para una simple lista de llegadas y salidas de un aeropuerto (o cualquier cartelería de las cuales he visto con el BSOD en las noticias) puedes poner una máquina con Linux que abra un navegador ocupando el 100% de la pantalla, que abra una web alojada en el servidor que maneje tales datos, y que la única conexión que pueda tener sea… » ver todo el comentario
Edito: En Reddit lo explican mejor, y sí, parece que los tarados no hicieron suficientes pruebas www.reddit.com/r/crowdstrike/comments/1easbmf/preliminary_post_inciden
Esto va de que, como los templates se han de distribuir muy rápido, y no da tiempo de validarlos a mano, a tiempo, colocan el Content Validator a modo de cortafuegos.
El content validator da una (falsa sensación de) seguridad y esto es lo que realmente ha generado el error.
1/ Tenemos que distribuir con premura
2/ Si la liamos tenemos el content validator
Aquí nadie ha vigilado al vigilante (suficientemente) y el bug ha entrado por la puerta grande.
No hay más. Hasta ahora se han forrado de defender de ataques siendo muy muy rápidos… pero la velocidad sin control no sirve de nada #pirelliP6000
"Go fast, break things..."
Básicamente todo lo que el ceo acaba de prometer que van a hacer a partir de ahora,
old.meneame.net/story/comparativa-principales-lenguajes-programacion/c
El error debe tratarse alli donde ocurre o, en contadas situaciones excepcionales, en un nivel inmediato propagandolos... pero prefiero tratarlos donde ocurren y mandarlos a su vez hacia arriba, donde haga falta, pero ya como error de esa funcion, no de la API llamada que genero el error. O sea, seria un error "nuevo"/"derivado" y de un… » ver todo el comentario
Y te hablo de entornos con criticidad media como sate en aeropuertos, venta de billetes para sistemas de transporte y cosas así.
Y eso, cuanto el try-catch encierra varios niveles de funciones donde ocurre la excepcion, donde esta dos o tres niveles mas arriba del punto donde ocurren, suele llevar a que… » ver todo el comentario
Si alguien no comprueba si una variable no esta inicializada, viene el fantasma de C y te pega con una excepcion en toda la cabeza.
Jajaja NO.
Pero para nada.
El programador tiene q aportar valor al negocio, no hacerse pajas con los punteros.
Q ojo, q lo dogo desde el respeto a C++ y no digo q haya aplicaciones donde C++ tenga sentido, pero NO, NI DE PALO en la mayoria.
Este error;
ESTE ERROR NO HUBIERA OCURRIDO SI EL PROGRAMA ESTUVIERA EN JAVA.
Y ahora si quereis me venis con q el problema son las excepciones, pero java no te deja sin poder arrancar.
Seran las excepciones en C++.
No es "hacerse pajas mentales con punteros".… » ver todo el comentario
De hecho, usar try-catch en algo que no sea java, .net y demas, cuando se hace lejos de la fuente de las excepciones, donde casi todo cristo hace su catch{...} ( o sea, captura todo, lo que sea ), tiene el GRAN riesgo de capturar excepciones de sistema ( fallos de pagina,… » ver todo el comentario
A ver, teniendo en cuenta que he programado JAVA desde ... 1999 (pero no ahora), pero que mi amor de verdad es C++...
Los programadores de java ven un "ClassDefNotFound" y no saben que viene del linker.
Hace mucho tiempo, 15-20 anios habia un profesor de universidad en EEUU que se quejaba de que las universidades metieran JAVA como lenguaje de iniciacion, en vez de Pascal, C o C++, y el tio contaba esto mismo: lenguajes interpretados no exponen a la gente a como funcionan los compiladores. Y JAVA termina siendo ejecutado en una VM, que termina linkando liberias.
Y tengo mi taza de la JAVA expo del 99 en mi mesa. JAVA no se puede usa para ciertas cosas. Y esta es una.
No te dejan pararte y cambiar arquitecturas.
"El problema es que haces con una excepcion en tu clase en un paso de una transaccion, cuando el sistema se la va a comer con patatas porque no se puede caer porque no se puede caer. Si la propagas hacia arriba, llegas a un punto donde te estan usando objetos que tu no controlas, que los ves en codigo porqu es JAVA y lo decompilas, pero lees y… » ver todo el comentario
Creo que el único que lenguaje (que yo conozca al menos) que hace esto bien es Rust con su estructura Result (doc.rust-lang.org/rust-by-example/error/result.html) en la que devuelve Ok con un valor dentro en caso de ir todo bien, o Err en caso de error junto al código de error producido.
TypoDeValorADevolver NombreDeFuncion( parametros... )
{
...
}
Pasas a
#define ERRORADDED(type) typedef ERRORADDED_##type { BOOLEAN Error; type Result; }
#define ONERROR(x)… » ver todo el comentario
Si peta la API puede ser por mi culpa (500) o por culpa de quien me llama (400) ya esta, no necesito saber mas.
En 1999 curraba en un sistema de TID que, entre muchas cosas, servia para connectarse a las centrales de telefonia. Eso no se podia caer, parasar lo que pasara, pero era JAVA. La gente que currabamos eramos un poco paranoicos y comprobabamos TODO. Habia formas de volver al menu principal, de reseatear, si algo fallaba a nivel de conexcion, habia mensajes a los operadores de que habia pasado, explicitamente, porque a un ingeniero… » ver todo el comentario
El problema es que haces con una excepcion en tu clase en un paso de una transaccion, cuando el sistema se la va a comer con patatas porque no se puede caer porque no se puede caer. Si la… » ver todo el comentario
Si hay algún experto en la sala igual lo corrobora, matiza o dice q no tengo ni idea, lo cual sería cierto.
La conclusión final "siendo sinceros, poco pudo hacerse." es todo lo errónea que podría ser. Sí, se pudo haber hecho mucho para evitar que algo así sucediera, y no me refiero a que esos bugs no sucedieran. Por supuesto que es normal que la gente se equivoque y que haya bugs, pero lo que sucedió no es ni mucho menos el resultado de dos bugs combinados, hay mucho más.
Al final un "antivirus" la ha liado mas, que el peor virus de la historia.
Ya veremos como acaba crowdstrike, se supone que son una empresa de ciberseguridad que viven de vender confianza y que no pasara nada malo y han sido los que lo han provocado... Pinta mal para ellos y no hay excusas que arreglen lo pasado