De valkuilen van externe bibliotheken

  • De valkuilen van externe bibliotheken

Vandaag spraken we over een recente kwetsbaarheid in een externe logboekbibliotheek, die met een zeer lage drempel kan worden uitgebuit om externe commando’s uit te voeren. Een logboekbibliotheek en externe commando’s lijken totaal ongerelateerd, maar overbodige externe bibliotheken zijn overal te vinden.

Hoe meer code ik lees, hoe meer ik me bewust word van het feit dat het niveau van veel open source code erg laag is, ongeacht hoeveel k stars het heeft. Sterren vertegenwoordigen de vraag, niet het ontwikkelingsniveau.

Het voordeel van open source is dat er meer mensen zijn die ontwikkelen, het voordeel is dat functies snel toegevoegd worden, bugs worden opgelost en code wordt gereviewd, maar het niveau varieert sterk.

Zonder een krachtige beperking van commits is de kwaliteit van de code moeilijk te garanderen.

Hoe meer code, hoe meer aanvalsoppervlak wordt toegevoegd.

Hoewel het slecht is om wielen opnieuw uit te vinden, is de productvraag een kinderwagenwiel. Een plastic wiel wordt nooit stuk, maar als je er een vliegtuigband op zet, voeg je alleen maar aanvalsexploitatie en onderhoudskosten toe. Daarom is het niet nodig om een grote zaak van een kleine te maken als je alleen maar een kinderwagenwiel nodig hebt.

Hoge onderhoudskosten. Externe bibliotheken vereisen specifieke processen en personeel om ze te onderhouden. Huawei heeft een getweekt testkader dat direct leidt tot mislukte testgevallen bij het upgraden van de compiler, en het upgraden van het testkader en de compiler leidt tot conflicten, wat veel tijd kost om deze route te blijven tweaken tijdens het onderhoud. Als deelnemer voelde ik diep de moeilijkheid van het tweaken van externe bibliotheken. Als het getweekte deel een functie is die kan worden samengevoegd in de open source bibliotheek, is het nog goed, maar invasieve aanpassingen voor je eigen behoeften zijn moeilijk te onderhouden.

Huawei heeft een reeks processen opgezet voor het omgaan met externe bibliotheken, die kunnen worden omschreven als een enorme weerstand.

De drempel is extreem strak. Nieuwe externe bibliotheken moeten worden beoordeeld door een expert van niveau 18 en een minister van niveau 20, en in feite kunnen alleen gerenommeerde externe bibliotheken worden gebruikt.

Alle externe bibliotheken worden geplaatst in de map thirdparty. Tijdens een volledige compilatie vergelijkt de CI de bronbibliotheek en verbiedt strikt invasieve wijzigingen.

Er is een speciaal hulpmiddel om de versies van alle externe bibliotheken te traceren. Hiervoor zijn externe medewerkers ingehuurd. Als een ontwikkelaar een versie-upgrade aanvraagt, moet hij een verzoek indienen en de minister moet het goedkeuren.

Het is moeilijk om een minister te vinden om dit soort zaken af te handelen. Wanneer een proces erg omslachtig is, probeert het je eigenlijk te ontmoedigen om het te doen.

Men zou een wantrouwende houding moeten aannemen tegenover externe bibliotheken en het vertrouwen moeten stellen in de ontwikkeling van eigen mensen.