Rakennusketju vilkkui

Rakennusketju vilkkui

Tuote voi olla puhdas, kun rakennusketju on myrkytetty.

Tämä on nykyaikaisten ohjelmistojen toimitusketjun tapahtumien kova opetus. Yritys voi kirjoittaa huolellista koodia, käyttää suosittuja paketteja, luottaa allekirjoitettuun alkuperään ja silti saada haitallista koodia reitin kautta, joka näyttää lailliselta normaalille työkalulle.

Toukokuussa 2026 Hacker News raportoi, että Mini Shai-Hulud -kampanjaan liittyvä TanStack-toimitusketjuhyökkäys tavoitti kaksi OpenAI työntekijän laitetta ja pakotti macOS-päivitykset. OpenAI:n, TanStackin, StepSecurityn, Snykin ja muiden julkisissa raporteissa kuvattiin tunnistetietoihin keskittyvää haittaohjelmakampanjaa, joka kohdistui kehittäjien koneisiin, CI/CD-työnkulkuihin, npm-paketteihin ja loppupään kuluttajiin.

Tässä artikkelissa käytetään julkista raportointia ja toimittajan ohjeita. Se ei sisällä yksityistä tietoa mistään vaikutusalaan kuuluvasta yrityksestä.

Oppitunti jokaiselle tuotetiimille on suora. Rakennusjärjestelmä on osa tuotantoa. Kehittäjälaitteet ovat osa hyökkäyspintaa. Paketin alkuperä auttaa, mutta se ei voi korvata ajonaikaisen käyttäytymisen tarkistusta, salaista hygieniaa ja vastaustodisteita.

Mitä julkinen raportointi sanoo

Hacker News raportoi 15. toukokuuta 2026, että OpenAI paljasti kaksi työntekijän laitetta yritysympäristössään, jotka vaikuttivat Mini Shai-Hulud -toimitusketjun hyökkäykseen TanStackiin. OpenAI sanoi, ettei mitään käyttäjätietoja, tuotantojärjestelmiä tai immateriaalioikeuksia ole vaarantunut tai muutettu luvatta. OpenAI myös vaihtoi useiden tuotteiden koodin allekirjoitusvarmenteita varotoimenpiteenä, ja macOS:n käyttäjiä kehotettiin päivittämään ennen 12. kesäkuuta 2026 päättyvää katkosta.

TanStack julkaisi seurannan, jonka mukaan tapaukseen liittyi vaarantunut julkaisupolku ja haitalliset pakettiversiot. StepSecurity raportoi, että TeamPCP julkaisi uuden Mini Shai-Hulud-aallon, joka vaaransi lailliset npm-paketit ja käytti kaapattuja CI/CD-polkuja haitallisten versioiden julkaisemiseen. Snyk raportoi, että 84 haitallista npm-pakettiartefaktia julkaistiin 42 paketissa nimiavaruudessa CI 11. toukokuuta 2026 kello 19.20-19.26 UTC.

StepSecurity sanoi, että hyökkäys julkaisi haitallisia versioita projektin oman GitHub Actions -julkaisuputken kautta käyttämällä kaapattuja OIDC-tunnuksia. Snyk korosti, että haitallisilla paketeilla oli kelvollinen SLSA Build Level 3 -lähde, koska itse rakennusputki kaapattiin. Tällä pisteellä on merkitystä. Lähde osoitti oikein, että paketti tuli odotetun rakennusjärjestelmän läpi. Ongelmana oli odotettu rakennusjärjestelmä.

Useissa julkisissa kirjoituksissa kuvattiin valtuustietojen varkaus päätavoitteeksi. Raportoituja kohteita olivat GitHub-tunnukset, pilvitunnistetiedot, SSH-avaimet, CI/CD-salaisuudet, kehittäjätyökalutiedostot ja tekoälyn koodausavustajan määrityspolut.

Miksi tällä tapauksella on merkitystä

Nykyaikainen kehitys riippuu yhteisistä paketeista. Yksi verkkosovellus voi vetää satoja tai tuhansia suoria ja transitiivisia riippuvuuksia. Tiimit käyttävät GitHub Actionsia, npm:tä, pakettien alkuperää, OIDC:tä, allekirjoitusta, säilöjä, salaisuuksien hallintatyökaluja, tekoälyn koodaustyökaluja, työpöytäsovelluksia ja kehittäjien kannettavia tietokoneita. Jokainen pala auttaa nopeuttamaan. Jokainen pala luo polun, joka tarvitsee hallintaa.

TanStack-tapaus on tärkeä, koska se sijaitsee näiden polkujen risteyksessä.

Kyseisiä paketteja käytettiin laajalti. Haitalliset versiot julkaistiin laillisen näköisen infrastruktuurin kautta. Jatkoketjun kuluttajat voisivat asentaa ne osana normaalia kehitystä tai CI. Kehittäjän tunnistetiedoista ja paikallisista salaisuuksista tuli arvokkaita kohteita. Tapaus kosketti tekoälyyritystä, jolla oli vakavia tietoturvaresursseja, mikä todistaa riskin olevan merkityksellinen myös kypsillä tiimeillä.

Yrityskäännös on yksinkertainen. Jos tuotteesi on riippuvainen avoimen lähdekoodin paketeista ja automatisoiduista koontiversioista, tietoturvaprofiilisi sisältää ylläpitäjät, CI-apuohjelmat, pakettirekisterit, tunnisteet, paikalliset työasemat, allekirjoitusidentiteetit ja kehittäjätyökalut.

Kuinka hyökkäyspolku toimi

Julkinen tutkimus kuvaili kampanjaa, jossa käytettiin väärin rakennus- ja julkaisuinfrastruktuuria. Tarkka ketju vaihtelee raporttien välillä, mutta puolustusmalli on vakaa.

Laillinen pakettiekosysteemi vaarantui. Haitallisia pakettiversioita julkaistiin. Nämä versiot asentaneet kehittäjät tai CI-järjestelmät voivat varastaa tunnistetietoja. Haittaohjelma etsi salaisuuksia ja tunnuksia. Joissakin raporteissa kuvattiin pysyvyyskoukkuja kehittäjätyökaluissa ja tekoälyn koodausavustajan kokoonpanoissa. Varastetut kirjautumistiedot voivat auttaa kampanjaa leviämään useampaan pakettiin tai saavuttamaan sisäisiä tietovarastoja ja pilvitilejä.

Tämä tarkoittaa, että ensimmäinen tartunnan saanut kone ei välttämättä ole lopullinen kohde. Arvokas kohde voi olla seuraava merkki, seuraava tietovarasto, seuraava ylläpitotili, seuraava paketti tai seuraava CI-työ.

Tästä syystä toimitusketjun vastauksen on oletettava liikettä. Pakkauksen poistaminen on vain yksi vaihe. Tiimien on myös tarkastettava koneita, vaihdettava salaisuuksia, tarkistettava CI-lokeja, tarkistettava pakettien lukitustiedostot, tarkistettava arkiston toiminta ja etsittävä epänormaalia pakettien julkaisua.

Miltä vahinko näyttää

OpenAI:n julkisissa raporteissa sanottiin, että mitään käyttäjätietoja, tuotantojärjestelmiä tai keskeisiä immateriaalioikeuksia ei ole vaarantunut tai muutettu luvatta. Se on tärkeää ja se tulee säilyttää.

Laajempi riskiluokka on edelleen vakava.

Ensimmäinen vahinkoluokka on henkilötietojen altistuminen. Kehittäjäkoneissa on usein GitHub-tunnuksia, pakettitunnuksia, SSH-avaimia, pilviprofiileja, API-avaimia, ympäristömuuttujia, salasananhallintaistuntoja ja väliaikaisia ​​valtuustietoja. Yksi kone voi tarjota pääsyn useisiin järjestelmiin.

Toinen luokka on arkiston altistuminen. Jopa vain luku -käyttö voi paljastaa arkkitehtuurin, sisäiset palvelut, aiemmin vahingossa tehdyt salaisuudet, käyttöönottomallit, tuotesuunnitelmat, tietoturvatyökalut ja asiakaskohtaisen logiikan.

Kolmas luokka on allekirjoitus- ja jakeluriski. OpenAI:n varmenteiden kierto osoittaa, miksi koodin allekirjoitusidentiteetillä on merkitystä. Jos hyökkääjä voi väärinkäyttää allekirjoitusmateriaalia tai aiheuttaa sekaannusta allekirjoitetuista artefakteista, käyttäjät ja asiakkaat tarvitsevat nopeaa selkeyttä.

Neljäs luokka on alavirran räjäytyksen säde. Suositut paketit istuvat useiden yritysten sisällä kerralla. Haitallinen julkaisu voi vaikuttaa tuoteryhmiin, CI työntekijöihin, testiympäristöihin, kehittäjien kannettaviin tietokoneisiin, esitysjärjestelmiin ja rakentaa välimuistia muutamassa tunnissa.

Viides luokka on tarkastuspaine. Toimitusketjuhäiriön jälkeen asiakkaat kysyvät, mitkä paketit on asennettu, milloin, missä, kenellä oli pääsy, mitä salaisuuksia kierrettiin, mitkä julkaisut rakennettiin ikkunan aikana ja onko vaikutus lopputuotteeseen.

Kuudes luokka on AI-työnkulun altistuminen. Kehittäjätyökaluihin kuuluvat nyt tekoälyassistentit, paikalliset agentit, editorin integraatiot, kehotteet, malliavaimet ja automaatiokoukut. Näitä polkuja muokkaava valtuustietojen varastuspaketti voi selviytyä normaalista siivouksesta ja aktivoitua uudelleen rutiinityön aikana.

Miksi normaalit ohjaukset jäävät tästä luokkaa

Monet tiimit luottavat paketin maineeseen, lukitustiedostoihin, allekirjoitettuihin sitoumuksiin, CI-oikeuksiin, alkuperään ja automaattiseen riippuvuustarkistukseen. Ne säätimet auttavat. Niissä on myös sokeita kulmia.

Maine epäonnistuu, kun laillinen paketti vaarantuu.

Lukitustiedostot epäonnistuvat, kun haitallinen versio saapuu sallitun päivitysikkunan aikana tai laskeutuu ohimenevälle haaralle.

Lähde epäonnistuu, kun hyväksytty rakennusputki luo huonon artefaktin.

Riippuvuustarkistus epäonnistuu, kun haitallinen toiminta on uusi, hämärtynyt tai toimitettu asennuskomentosarjojen aikana.

Päätepisteiden tunnistus epäonnistuu, kun kehittäjäkoneita hallitaan löyhästi tai epäilyttävä toiminta näyttää normaalilta pakettityökalulta.

Salaiset hallintaohjelmat epäonnistuvat, kun tunnisteita on myös paikallisissa tiedostoissa, CI-lokeissa, komentotulkkihistoriassa, sovellusvälimuistissa tai muokkauslaajennuksissa.

Vastaus on kerrostettu todiste. Pakettikäytännön, käyttäytymisanalyysin, rajoitettujen CI-käyttöoikeuksien, salaisen vuorottelun, kehittäjän päätepisteiden hallinnan, rekisterin valvonnan ja tapausten runbookien on toimittava yhdessä.

Mitä joukkueiden pitäisi nyt tarkastaa

Aloita riippuvuuskartoituksella. Tunnista vaikuttaneiden pakettien suora ja transitiivinen käyttö julkisen tapahtumaikkunan aikana. Tarkista pakettien lukitustiedostot, npm-välimuistit, CI-lokit, konttirakennuslokit, kehityskoneet ja artefaktivarastot.

Tarkista asennuskomentosarjat. Paketti, joka suorittaa koodia asennuksen aikana, ansaitsee erityisen tarkastelun. Poista elinkaariskriptit käytöstä CI:ssa, jos mahdollista. Käytä sallittuja paketteja, jotka vaativat niitä.

Rajoita CI-tunnuksia. OIDC-tunnusten ja pakettijulkaisutunnisteiden tulee olla lyhytikäisiä, kapea-alaisia ​​ja sidottu tiettyihin töihin. Rakennusjärjestelmien ei pitäisi antaa jokaiselle työnkululle laajoja rekisteri- tai pilvivaltuuksia.

Erillinen rakennus- ja julkaisuoikeus. Vetopyynnön koontiversiolla ei saa olla samaa salaista käyttöoikeutta kuin allekirjoitetulla julkaisuversiolla. Testityönkulun ei pitäisi pystyä julkaisemaan tuotantoartefakteja.

Tarkkaile pakettien julkaisua. Varoitus uusista pakettiversioista, epätavallisista julkaisuajoista, ylläpitomuutoksista, odottamattomista lähtökohdista, asennuskomentosarjan muutoksista ja äkillisistä riippuvuuskaavion muutoksista.

Harden kehittäjän päätepisteet. Kehittäjien kannettavat tietokoneet tarvitsevat EDR:n, levysalauksen, laitehallinnan, paikallisen salaisen ohjauksen, selaimen istunnon hygienian ja selkeät säännöt tekoälyn koodausavustajille ja laajennuksille.

Pyöritä kurinalaisesti. Jos kehittäjäkone tai CI-apuohjelma on saattanut suorittaa haitallisen paketin, kierrä kaikkia kyseisestä ympäristöstä saatavilla olevia salaisuuksia. Niihin kuuluvat GitHub-tunnukset, npm-tunnukset, pilviavaimet, SSH-avaimet, API-avaimet, pakettirekisterin tunnistetiedot, CI-salaisuudet ja allekirjoitusmateriaali, jos altistuminen on uskottavaa.

Säilytä todisteet. Pidä kirjaa vaikuttavista paketeista, tarkastetuista koneista, tarkistetuista lokeista, käännetyistä salaisuuksista, muutetuista työnkuluista ja tarkistetuista julkaisuartefakteista.

Multiple screens of software work representing CI and developer endpoint review

Ohjausmalli turvallisempaan rakennusketjuun

Turvallisempi rakennusketju alkaa auktoriteettirajoista.

Kehitysrakennuksissa pitäisi olla rajoitetut salaisuudet. Julkaisujen koontiversioiden tulisi toimia kontrolloiduissa työnkuluissa. Pakettien julkaisemisen tulee vaatia kapeat tunnisteet, nimetyt ylläpitäjät, suojatut haarat ja tarkistus. Pilven käyttöönoton tulee vaatia erillinen lupapolku. Allekirjoituksella tulee olla erillinen suojaus ja vahva auditointi.

Hyödyllinen ohjausmalli erottaa viisi auktoriteettityyppiä:

  • Koodiviranomainen: kuka voi muuttaa lähdekoodia.
  • Luo auktoriteetti: mitkä työnkulut voivat luoda artefakteja.
  • Julkaisemisoikeus: mitkä työnkulut voivat julkaista paketteja tai julkaisuja.
  • Ota käyttöön viranomainen: mitkä työnkulut voivat saavuttaa tuotantoinfrastruktuurin.
  • Allekirjoitusoikeus: mitkä järjestelmät voivat luoda artefakteja, jotka käyttäjät hyväksyvät.

Kun yhdellä tunnuksella tai yhdellä työnkululla on useita auktoriteetteja, toimitusketjun tapahtumasta tulee suurempi. Haitallinen paketti, joka varastaa laajan laajuisen tunnuksen, voi siirtyä kehittäjän työasemasta arkistoon, arkistosta CI:iin, CI:sta pakettirekisteriin ja pakettirekisteristä asiakkaille.

Vähennä sitä liikettä. Pidä auktoriteetti kapeana. Pidä työpaikat lyhytaikaisina. Pidä salaisuudet poissa rutiininomaisista testityönkuluista. Vaadi tiukempaa tarkistusta julkaisutöistä.

AI-työkalut kehittäjän ääriviivassa

AI-koodaustyökalut muuttavat paikallista työasemaa. Ne lisäävät laajennuksia, agentteja, malliavaimia, kontekstiikkunoita, paikallisia välimuistia, muokkauskoukkuja ja joskus taustaprosesseja. Nykyaikaisten toimitusketjun haittaohjelmien julkiset raportit ovat osoittaneet kiinnostusta tekoälyn koodausavustajan määrityspolkuihin, koska ne voivat sisältää hyödyllisiä salaisuuksia tai luoda pysyvyysmahdollisuuksia.

Tiimien tulee käsitellä tekoälytyökaluja osana kehittäjän suojausääriviivaa.

Tämä tarkoittaa hyväksyttyjen tekoälytyökalujen inventointia, laajennusten hallintaa, paikallisen tallennustilan tarkistamista, API-avaimien suojaamista, arkaluonteisten tietojen säilytyskontekstin rajoittamista ja odottamattomien konfiguraatiomuutosten tarkkailua. Se tarkoittaa myös sen määrittämistä, mitä tekoälyassistentti voi käyttää tapahtuman aikana. Vaarantunut kehittäjäkone ei saa jatkaa arkistokontekstin lähettämistä ulkoisille työkaluille, kun tiimi yrittää hillitä sitä.

Tämä on käytännön kurinalaisuutta. Tuotetiimit voivat käyttää tekoälytyökaluja ja silti pitää hallinnassa. Yritys tarvitsee sääntöjä, valvontaa ja todisteita.

Mitä ostajat ja sijoittajat kysyvät toimitusketjutapauksen jälkeen

Vakavat ostajat haluavat suoran rivin lähdekoodista julkaistuun tuotteeseen.

He kysyvät, kuinka riippuvuudet hyväksytään. He kysyvät, ovatko paketit kiinni. He kysyvät, kuinka haitalliset paketit havaitaan. He kysyvät, ovatko asennusskriptit sallittuja. He kysyvät, mitkä CI-työnkulut voivat julkaista. He kysyvät, kuinka salaisuudet säilytetään. He kysyvät, hallitaanko kehittäjien päätepisteitä. He kysyvät, kuinka koodin allekirjoitus on suojattu. He kysyvät, kuinka nopeasti yritys voi rakentaa uudelleen puhtaasta tilasta.

Sijoittajat esittävät asiaan liittyvän kysymyksen. Jos tuotteesta tulee arvokas, voiko yritys suojata julkaisupolun mittakaavassa?

Epämääräinen vastaus hidastaa keskustelua. Selkeä todistepaketti nopeuttaa sitä. Paketin tulee sisältää riippuvuuskäytäntö, CI-käyttöoikeusmalli, salainen kiertoprosessi, päätepisteen hallinnan tila, julkaisun allekirjoitushallinta, tapahtuman runbook ja viimeaikaiset tarkistustulokset.

Nämä todisteet luovat kaupallista voimaa. Ostaja näkee yrityksen, joka pystyy toimittamaan nopeasti menettämättä tuotteen luovan polun hallintaa.

Mitä sertifioinnin pitäisi kattaa

Ohjelmiston toimitusketjun ääriviivalle StOFU Security Certification voi nimetä arkistot, CI/CD-järjestelmät, pakettien hallintalaitteet, artefaktirekisterit, allekirjoituspolut, kehittäjän päätepisteiden hallintalaitteet, tekoälyn koodaustyökalut, salaiset varastot ja julkaisutyönkulut.

Katsauksessa tulee sisältää hyödynnettävyyskysymyksiä. Mitä haitallinen riippuvuus voi lukea? Mitkä työsalaisuudet altistuvat vetopyynnöille? Mikä työnkulku voi julkaista? Mitkä merkit selviävät yhden työn jälkeen? Millä koneilla on allekirjoitusmateriaalia? Mitkä tekoälytyökalut voivat saavuttaa yksityisen koodin? Mitkä lokit osoittavat, että vaarantunut paketti suoritettiin tai ei?

Sertifioinnissa tulisi myös mainita materiaalin muutoksen laukaisevat tekijät. Uuden rekisterin, uuden julkaisujärjestelmän, uuden tekoälyn koodausavustajan, uuden allekirjoitusprosessin, suuren tietovaraston siirron tai uuden pilven käyttöönottopolun pitäisi avata tarkistus uudelleen.

Tämä pitää sertifikaatin hyödyllisenä. Siitä tulee pikemminkin elävä todiste rakennusketjusta kuin staattinen markkinointiteos.

Kuinka SToFU taistelee tätä riskiluokkaa vastaan

SToFU tarkastelee ohjelmistojen toimitusketjuja osana tuotteen turvallisuutta. Yhdistämme sovelluskoodin, riippuvuusriskin, CI/CD:n, salaisuudet, julkaisuvaltuudet, kehittäjälaitteet, pilvikäytön, tekoälytyökalut ja asiakkaisiin kohdistuvat artefaktit.

Toimitusketjun poikkeamien ja valmiusarvioinnin yhteydessä voimme auttaa:

  • Riippuvuus ja pakettivarasto arkistoissa ja rakennusjärjestelmissä.
  • CI/CD-käyttöoikeuksien tarkistus GitHub Actionsille, OIDC:lle, pakettien julkaisulle, pilvikäyttöön ja allekirjoitukselle.
  • Salainen altistumiskartoitus kehittäjäkoneissa, CI työntekijöissä, arkistoissa, ympäristöissä, lokeissa ja esinevarastoissa.
  • Haitallisten pakettien vaikutusten tarkistus asennusikkunoihin, lukitustiedostoihin, välimuistiin, säilöihin ja julkaisuartefakteihin.
  • Kehittäjän päätepisteen tarkistus keskittyen valtuustietoihin, editorilaajennuksiin, tekoälytyökaluihin, paikallisiin agentteihin ja pysyvyyspolkuihin.
  • Allekirjoitettujen artefaktien, paketin alkuperän, sertifikaattien vuorottelun ja asiakkaiden päivitysohjeiden julkaisun eheyden tarkistus.
  • Kunnostuksen suunnittelu ja uudelleentestaus.
  • Todistepakkaus ja turvallisuussertifikaatti, kun tarkistettu ääriviiva on valmis.

Sertifikaatista on hyötyä, koska toimitusketjuun liittyvät kysymykset näkyvät nyt yritysmyynnissä ja sijoittajan huolellisuudessa. Ostajat haluavat tietää, pystyykö myyjä todistamaan, kuinka koodi siirtyy kehittäjäkoneesta tuotantoartefaktiin.

Tuoteryhmien vastaussuunnitelma

Jos tiimisi saa tietää, että kaaviossasi oleva paketti on vaarantunut, toimi nopeasti ja pidä työt järjestyksessä.

Jäätymisen aiheuttamat rakenteet. Keskeytä julkaisut, jotka käyttivät kyseistä riippuvuusikkunaa, kunnes tiimi vahvistaa artefaktit.

Tunnista altistuminen. Hae pakettilukitustiedostoja, pnpm-lukkoja, lankalukkoja, npm-välimuistia, CI-lokeja, säilökerroksia, artefaktivarastoja ja kehittäjien asennushistoriaa.

Eristä koneet. Jokainen isäntä, joka suoritti haitallisen paketin ikkunan aikana, ansaitsee päätepisteen tarkistuksen. Kehittäjien kannettavat tietokoneet ja CI juoksijat lasketaan.

Kierrä salaisuuksia. Kierrä saavutettavia tunnistetietoja alkaen pakettirekisteritunnuksista, GitHub-tunnisteista, pilviavaimista, SSH-avaimista, CI-salaisuuksista ja allekirjoitusmateriaalista, kun paljastaminen on uskottavaa.

Tarkista arkistot. Etsi epätavallisia käyttöoikeuksia, uusia työnkulkuja, muokattuja toimintoja, muuttuneita julkaisukomentosarjoja, uusia käyttöönottoavaimia, uusia ylläpitäjiä ja odottamattomia pakettien julkaisuja.

Uudelleen rakennettu puhtaasta tilasta. Puhdista riippuvuudet, poista vaarantuneet versiot, rakenna artefaktit uudelleen ja vertaa tuloksia mahdollisuuksien mukaan.

Kommunikoi todisteiden kanssa. Asiakkaat ja kumppanit tarvitsevat rauhallisia faktoja: vaikuttavia tuotteita, versioita, joita asia koskee, aikaikkunaa, korjauksia, tunnistetietojen kiertoa ja kaikkia tarvittavia käyttäjän toimia.

Ostajan signaali

TanStack-tapaus osoittaa, että toimitusketjun turvallisuus on siirtynyt tuotteen uskottavuuden keskipisteeseen. Yritys voi menettää ostajan luottamuksen ilman tuotantorikkomusta, jos se ei pysty selittämään, kuinka riippuvuuksia, versioita, salaisuuksia ja julkaisuja valvotaan.

Vahvimmat joukkueet vastaavat ennen kuin heiltä kysytään. He tietävät, mitä paketteja he käyttävät. He tietävät, mitkä työnkulut voivat julkaista. He tietävät, missä salaisuudet elävät. He tietävät, kuinka tekoälytyökaluja ohjataan. He osaavat kiertää, rakentaa uudelleen ja todistaa tuloksen.

SToFU auttaa luomaan tämän tilan. Tarkista rakennusketju. Vähennä auktoriteettia. Metsästä altistusta. Tarkista julkaisupolku. Varmentaa ääriviivat.

Ohjelmisto liikkuu nopeasti. Todisteiden pitää kulkea mukana.

Lähteet

Philip P.

Philip P., CTO

Takaisin Blogeihin

Ota yhteyttä

Aloita keskustelu

Muutama selkeä viiva riittää. Kuvaile järjestelmää, painetta, estettyä päätöstä. Tai kirjoita suoraan osoitteeseen midgard@stofu.io.

0 / 10000
Tiedostoa ei ole valittu