Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥

ソフトウェアサプライチェーンのこれから / Securing Software Supply ...

ソフトウェアサプライチェーンのこれから / Securing Software Supply Chain

セキュリティ・キャンプ全国大会 2022 で使用した資料です(もう一年前のものですが、こっそりアップロードします…)

---

Title: ソフトウェアサプライチェーンのこれから / Securing Software Supply Chain
Description:

現代のソフトウェアの開発・運用プロセスは多くの人・組織・ソフトウェア資産に立脚するようになってきています。多くの便利な OSS パッケージが 1, 2 回のコマンド実行で手に入り、1 つの YAML ファイルがテストやデプロイの継続的実行を可能にし、便利なソフトウェアを動かすための環境は世界の誰かがコンテナイメージとして公開してくれている、そんな体験をする機会が多くなってきたのではないでしょうか。
しかし、この喜ばしい時代の流れの中で、「一つのソフトウェアを作って届けるという工程に関与する人の数」が爆発的に増加してきているのも事実です。この流れが、ソフトウェアサプライチェーンのセキュリティへの関心を急激に高めています。本講義では専門講義「モダンな開発環境のセキュリティおよびCI/CDパイプラインのセキュア化」で取り扱う内容と連携しながら、ソフトウェアサプライチェーンセキュリティのこれからについて検討します。

Takashi Yoneuchi

September 24, 2023
Tweet

More Decks by Takashi Yoneuchi

Other Decks in Programming

Transcript

  1. © 2022 https://shift-js.info ソフトウェアサプライチェーンセキュリティのこれから 1 $ whoami 米内 貴志(よねうち たかし

    取締役 CT 日本語ラップと綺麗な型が好 著 『Webブラウザセキュリティ 『詳解セキュリティコンテスト』 株式会社 Flatt Security
  2. &0'Ç0%)É2!$#( %ÈÆ01ÅÄ Ã&Â"ÁÀ u@qƒheewE‡yt…‰ergdc)0&0XWUvT„'RP$ˆÃGi É2!$#9†ÁÀ7Ã6ˆ1543ÁV 1ÅPdˆ˜™f•#’4e É2!$ml §x«zœ¡“¨¢Œš˜—”ª§’Ž‹Œ¬x¢Š ¦ˆ¨ˆ‰ zƒ‡†‘…„™Ÿ‚Œ­¥•~|Š

    {y…}…›€wvž–¤©uŠ†£…t• 1ÅPdˆ˜™f•#’4e æãïâéÇ٢ˈÔç„Í›¡€wÕà‚ÒÌʽ Èåð×ÓÑÆÄСš˜ŠëÁŒÏ¾í¼‡Å»„Öº ¸·¶µ¡§x«zƒÅ¼¬xª¿ê±ˆ°‡• ò ò 1ÅÄ Ã’4e ShishowCloudwÇシショ«§x«zÔç„PolicywaswCodå¡取 ž組みŠÏ現…„ソê¿«ェアサ¬x チェˆ¢¡安͊ 守Ì×ÓÑÆÄЬxª¿ê±ˆ°‡• 2 ソフトウェアサプライチェーンセキュリティのこれから © 2022 https://shift-js.info
  3. ÉÉÆÈÃÇÇÈÄÂÉÁÅÈÄÀ %6 98@532178)(&$'#4"!0 A SRQIFPGDPEGCHFCHB T CHpGwvrHsGCPÉiÂÉehdticÆÆa`YhÄÀitUcdÄÉ` ƒ mGpIwnswFPiGqFdFCHBhÀiÂÉehdticÆÆa`YhÄÀitUcdÄÉ` v

    ‚s•BHGpF‡Y”tiđÀÄÀ‘ˆtdÄ~UhÉÄÀÂdicÆÆa`YhÄÀwÀÉt‘dÄÉ` — ¹¨cdÀt`©¬cÄa”h¢Fps¶RQIFPŸPSpRrFRQIFiÂÉehdticÆÆa`YhÄÀ º SÔFPÍvHvpFPÂiÂÉehdticÆÆa`YhÄÀitUcdÄÉ`
  4. © 2022 https://shift-js.info ソフトウェアサプライチェーンセキュリティのこれから 6 Supply Chain “ , each

    of which is an acquirer that begins with the sourcing of products and services and extends through the product and service life cycle” the linked set of resources and processes between and among multiple levels of an enterprise NIST SP800.161 Revision 1
  5. © 2022 https://shift-js.info ソフトウェアサプライチェーンセキュリティのこれから 7 Software Supply Chain S LS

    A Ve rs i o n 1 “ T h e s e q u e n ce of ste ps re s u l t i n g i n t h e c reat i o n of a n a r t i fa ct ”
  6. ÉÉÆÈÃÇÇÈÄÂÉÁÅÈÄÀ %6 98@532178)(&$'#4"!0 BA IQPHRGHQFEDC t„€qHFqHRx‚ix€pxhHtƒsgyie„HtwddbfHc‚ipxHt„€wepgf a‚„H`„X„bƒdY„xgHƒsH€ƒYY„e€pibHƒsgyie„Hƒsg„xH bi€WHgeixdie„x€fVHwU€p„xgHsƒ€wHƒxHg‚„HiTpbpgfHƒsHg‚„Hƒsgyie„HgƒHe„pgHiggi€WVHix`Hi`„Swig„H€ƒxgeƒbHgƒHde„X„xgH giYd„epxhHTfHYibp€pƒwHi€gƒe ntoywÈwuhmÄÉjÂÈÂÉetmwhÈwfdjÉw™wfwmt—–”wmÀ•wÀÉÄÈ”ÄÉt—

    ÉÉw™wfwmt—–”wmÀ•wÀÉkÈtdėÄÉjÉÆwmÂm•ÄÉÈumÄÉÄut—ÂhÀuÉÄÀÈ ywmwÄÈtÆmwÈÈÄÀ’ÀwwfÉĕƗw•wÀÉ•mwmĒmhÈtÀfÆmwfÄuÉtd—w•wutÀÄȕÈÂm wÀÈhmÄÀ’ÉtÉÆmfhuÉÈÂhÀuÉÄÀÈwuhmw—j˜tÀftÈÄÀÉwÀfwfywÈwuhmÄÉjtÀfÄÀÉw’mÄÉj‘umÄÉÄut—ÈÂÉetmw‰ÈÂÉetmw ÉtÉÆwmÂm•ÈÂhÀuÉÄÀÈumÄÉÄut—ÉÉmhÈÉnÈhutÈtˆmfÄÀ’mmw‡hÄmÄÀ’w—w”tÉwfÈjÈÉw•ÆmĔėw’wÈmfÄmwuÉtuuwÈÈÉ ÀwÉem†ÄÀ’tÀfu•ÆhÉÄÀ’mwÈhmuwÈoÄÈtÆtmÉÄuh—tmuÀuwmÀ…uumfÄÀ’—j˜Éw™wfwmt—–”wmÀ•wÀÉ•hÈÉÉt†wtuÉÄÀÉ mtÆÄf—jĕÆm”wÉwÈwuhmÄÉjtÀfÄÀÉw’mÄÉjÂÉwÈÂÉetmwÈhÆƗjutÄÀ˜eÄÉtÆmÄmÄÉjÀtffmwÈÈÄÀ’umÄÉÄut—ÈÂÉetmw
  7. © 2022 https://shift-js.info ソフトウェアサプライチェーンセキュリティのこれから 22 #1: EO 14028 ― SP

    800-218 (NIST SSDF)   Prepare the Organization (PO) Related: preparation of people, processes, and tools   Protect the Software (PS) Rleated: artifact integrity   Produce Well-Secured Software (PW) Related: designing, writing, and testing of software   Respond to Vulnerabilities (RV) Related: everything after software releases
  8. ÉÉÆÈÃÇÇÈÄÂÉÁÅÈÄÀÂ %6 98@532178)(&$'#4"!0 BA HEGFEDGC eGW`DFGUTSGaaGFR QcYaFcPTcYTIIb eGW`DFGU‚ y …ccvT‡`aqGYaDQDarTcgT€tfi

    y …ccvTDYaGfFDarTcgT€tfU —`SPDUqGU fGPDEGFU fG€GYvUTCqDPGTFGW`DFDYf‚ y …ccvT‡`aqGYaDQDarTcgT€tfi y …ccvTDYaGfFDarTcgT€tfU I`€€cFaq ~DvGvTnP€q‡wHGf‡T—FclGQaUt I`€€cFaq ~DvGvTnPPUa‡Ft ŠcFtUTŠDaq ŠqcT —`SPDUqGU ŠqcT fGPDEGFU ŠqcT fGEGPc€ ‹TH€U H€GYII¡ ‹TIGQ`FDarT ¦GYvcFU —`SPD± IGQacFq ‹TªUGFU
  9. © 2022 https://shift-js.info ソフトウェアサプライチェーンセキュリティのこれから 35 Minimization of Dependencies yarn add

    foo        Adding dependencies accelerates “dependency hell” Take a step back before `yarn add ...` to minimize risks.
  10. ÉÉÆÈÃÇÇÈÄÂÉÁÅÈÄÀ %6 98@532178)(&$'#4"!0 BA WTIUTRIQSPHSWGEPRGESDPTIFIGCV tIfiRUIVSbICCIUa `PGCUPYSPGSXXq tIfiRUIV‘ ˆ ”PP…S–iC€IGCR`RCSPHS‰ƒEx

    ˆ ”PP…SRGCIEURCSPHS‰ƒEV jibYRV€IV oIYRTIUV oI‰IG…VSQ€RYISUIfiRURGE‘ ˆ ”PP…S–iC€IGCR`RCSPHS‰ƒEx ˆ ”PP…SRGCIEURCSPHS‰ƒEV Xi‰‰PUCz ‡RISwY‰€–€WFIE–SjUPuI`CV} Xi‰‰PUCz ‡RISwYYVC–U} “PUƒVS“RC€ “€PS jibYRV€IV “€PS oIYRTIUV “€PS oITIYP‰™ ”SW‰V W‰IGXXª ”SXI`iURCS ¯IG…PUV jibYRº XI`CPUz ”S³VIUV
  11. ÉÉÆÈÃÇÇÈÄÂÉÁÅÈÄÀÂ %6 98@532178)(&$'#4"!0 BA TWGSPQIHRITGHUWGIFEGIDSVHWVGC tGfigEGdIbGPPGEa `HSPEHWIHSIXXq tGfigEGd‘ ˆ ”HHCI–iP€GSPg`gPQIHRIUƒux

    ˆ ”HHCIgSPGuEgPQIHRIUƒud m€HI TibWgd€Gd m€HI uGWgVGEd m€HI uGVGWHU~ yI}Ud }UGSXX yIXG`iEgPQI ”GSCHEd TibWgŸ XG`PHE› yI˜dGEd
  12. ÉÉÆÈÃÇÇÈÄÂÉÁÅÈÄÀÂ %6 98@532178)(&$'#4"!0 BA VTRQPIEUSDGPHGFC gD`FfPQTFPhGUUGYDfXW IEUSDGPDCCEFCW q uFvQDwSRQF €

    € QTRQPƒFCSvD†FC ™HPDfPRfP™ƒ’ d d DC lFjPgYfFv d m d m Gh ’vD`RQFPlFj m m ’E†UDSPlFj m m n ’E†UDSPlFj m m o ™HPQGrFfPhGv ™HPDfPRfP™ƒ’ d d z DXfRQEvF „ „ GhPRPSURDŽPDfPQTFPQGrFf
  13. © 2022 https://shift-js.info ソフトウェアサプライチェーンセキュリティのこれから 39 How Fulcio Works F3. Pass

    CSR + T F4. Fetch JWKS F5. Return JWKS F6. Verify T F7. Return a Cert F1. Request an ID token F2. Issue the token T Signer Fulcio IdP
  14. ÉÉÆÈÃÇÇÈÄÂÉÁÅÈÄÀÂ %6 98@532178)(&$'#4"!0 BA DSRPTGUEFSPQSHIC TfcPaYCCPbWXPVP` WFprqH TGUEFS vta w

    vhPYG˜ˆqr˜FEY˜qtPYCP`YHSPFrPvtacPDqHqhCP—PƒGgUFEPIq– PYrtP˜ˆqPqyFtqrEqPSxPIq—PƒSCCqCCFSrP‚ k
  15. ÉÉÆÈÃÇÇÈÄÂÉÁÅÈÄÀÂ %6 98@532178)(&$'#4"!0 BA DSRPTGUEFSPQSHIC TefPb`XGHVPaPY`HX iFpV`H TGUEFS vtu v‚PFVPaVPvtu

    … … FC “`‘PˆRV`H … ” … ” S• uHFdaX`P“`‘ ” ” uGoUFEP“`‘ ” ” Y`HXFzEaX` } }
  16. © 2022 https://shift-js.info ソフトウェアサプライチェーンセキュリティのこれから 44 <Your Favorite IdP> with Fulcio

    e.g. oauth2.sigstore.dev F3. Pass CSR + T F4. Fetch JWKS F5. Return JWKS F6. Verify T F7. Return a Cert F1. Request an ID token F2. Issue the token T You Fulcio IdP
  17. ÉÉÆÈÃÇÇÈÄÂÉÁÅÈÄÀ %6 98@532178)(&$'#4"!0 BA TSRPIQEHFGIDFEC hq`EgIPSEIiFaaFYqgXIqgWfPCV tiGFxIyfasqFr „ ˆEGPqsRPE “

    “ PSRPI–ECsGq™EC pDIqgIRgIp–i q q qC yEwItYgEG q z q z Fi iGq`RPEIyEw z z if™aqsIyEw z z †††IRg–IPSEgICPFGECIPSEIqgWfPCIPFIGEsFG–V pDIqgIRgIp–i q q XEgEGRPE– qXgRPfGE ” ” Fi QECFfGsE • • – qXgRPfGE ” ” Fi QECFfGsE • • ™w iGq`RPEIyEw z z QEHFGI`EGqECV – if™aqsIyEw z z qg ˆEGPqsRPE “ “ `EGqEC qXgRPfGE ” ” Fi QECFfGsE • • CfssECCifaaw „ ˆEGPqsRPE “ “ qCIaEXqPqxRPE
  18. ÉÉÆÈÃÇÇÈÄÂÉÁÅÈÄÀÂ %6 98@532178)(&$'#4"!0 BA WVUGSPGTVRHQGEFDIC ScGbaG`aGSYX f f bQGtpu`hGPV „t‚GyUatR

    f … f … V† XRb‘`PtG„t‚ … … Xufhb™G„t‚ … … b† otRPbq™`Pt t t bQGhtwbPbv`Pt otRPbq™`Pt t t bQGhtwbPbv`Pt ScGbaG`aGSYX f f bQGtpu`hGPV „t‚GyUatR f … f … V† XRb‘`PtG„t‚ … … Xufhb™G„t‚ … … RVvG`GYtqabPbVaGV†G`G™tRPbq™`PtGtRt~ ¢†PtRG™tHVRG‘tRbqtQŸGPtG†VhhVUbawGVhYQ~ Wta™t~
  19. ÉÉÆÈÃÇÇÈÄÂÉÁÅÈÄÀÂ %6 98@532178)(&$'#4"!0 BA WVUFSIFTVQGPFERDHC `xIrQFhrGVQqPFirQcwadIcVpyFIfrFxVggVUcpYFfVgXP€ Wrpar€ —frFxVggVUcpYFfVgXPFcpFYrprQdg€ kifgcaF˜rg l

    l cp prQIcwadIr u u irQcwrP zcYpdIiQr   Vx hrPViQar € € PiaarPPxiggg ˜rgFƒUprQ ‰ l ‰ l Vx kQcidIrF˜rg l l kifgcaF˜rg l l “iPIFfrFUfVFYrprQdIrX zcYpdIiQr   Vx hrPViQar € € ˜rgFƒUprQ ‰ l ‰ l Vx kQcidIrF˜rg l l kifgcaF˜rg l l “iPIFfrFUfVFYrprQdIrX zcYpdIiQr   Vx hrPViQar € € cx kifgcaF˜rg l l adpFirQcxg zcYpdIiQr  
  20. © 2022 https://shift-js.info ソフトウェアサプライチェーンセキュリティのこれから 54 How It Works (3/3) From

    “How It Works (1/3)”: From “How It Works (2/3)”: Hence: ID in an IdP   is equal to Key Owner     of Private Key   Public Key   Key Owner     of Private Key   Public Key   must be who generated Signature   of Resource   ID in an IdP   generated Signature   of Resource  
  21. ÉÉÆÈÃÇÇÈÄÂÉÁÅÈÄÀÂ %6 98@532178)(&$'#4"!0 BA SYVTRQIPUTWIHFEVDXIGXYC pDcYiIWUYIqXEEXbDiaQ HFEVDXIDCCFYCQ wYxWDyVTWY ‚ ‚

    WUTWI…YCVxDˆYC eGIDiITiIe…” f f DC nYlIibiYx f o f o Xq ”xDcTWYInYl o o ”FˆEDVInYl o o p ”FˆEDVInYl o o q eGIWXtYiIqXx eGIDiITiIe…” f f | DaiTWFxY † † XqITIVETDIDiIWUYIWXtYi
  22. ÉÉÆÈÃÇÇÈÄÂÉÁÅÈÄÀ %6 98@532178)(&$'#4"!0 BA QWTRPIGHSRUGQWFVEGDVWC qtcWpGUSWGrVddVbtpaGtpPiUCI wrEVG‚idTtVu ‡ ‘WEUt“TRUW –

    – USRUG™WCTEtfWC sDGtpGRpGs™l t t tC |WzGwbpWE t } t } Vr lEtcRUWG|Wz } } lifdtTG|Wz } } ‰‰‰GRp™GUSWpGCUVEWCGUSWGtpPiUCGUVGEWTVE™I sDGtpGRpGs™l t t aWpWERUW™ ’tapRUiEW — — Vr QWCViETW ˜ ˜ ™ ’tapRUiEW — — Vr QWCViETW ˜ ˜ fz lEtcRUWG|Wz } } QWFVEGcWEt“WCI ™ lifdtTG|Wz } } tp ‘WEUt“TRUW – – cWEt“WC ’tapRUiEW — — Vr QWCViETW ˜ ˜ CiTTWCCriddz ‡ ‘WEUt“TRUW – – tCGdWatUtRUW
  23. ÉÉÆÈÃÇÇÈÄÂÉÁÅÈÄÀÂ %6 98@532178)(&$'#4"!0 BA gDSQd`VfeTXdRdPWcXHdFUSbfWEdIaCGY h xVbfTediWt y y xHTƒSQWdiWt

    y y  d•dQXcWUd‘XH d•dTUdSUddfx m m n PWEXVHeW o o {VwwXEWdtXVdDSƒWv `VfeTXdRdPWcXHdcWWwEv | €WHQT‚eSQW … … ‰TQD xVbfTediWt y y QDSQdfWEeHTbWE d•dTUdSUddfx m m TE iWtdŒ‰UWH m y m y X‘ xHTƒSQWdiWt y y xVbfTediWt y y ’ {T˜USQVHW œ œ X‘ PWEXVHeW o o bt xHTƒSQWdiWt y y «XdWUSbfWdVEdQXdHWeXHfv | d•dTUdSUddfx m m ˜WUWHSQWf {T˜USQVHW œ œ X‘ PWEXVHeW o o
  24. ÉÉÆÈÃÇÇÈÄÂÉÁÅÈÄÀÂ %6 98@532178)(&$'#4"!0 BA gETRdaWfeUYdSdQXcYIdGVTbfXFdPDCH` h xWbfUediXt y y xIUƒTRXdiXt

    y y  d•dRYcXVd‘YI d•dUVdTVddfx m m n QXFYWIeX o o {WwwYFXdtYWdETƒXv aWfeUYdSdQXcYIdcXXwFv | €XIRU‚eTRX … … ‰URE xWbfUediXt y y RETRdfXFeIUbXF d•dUVdTVddfx m m UF iXtdŒ‰VXI m y m y Y‘ xIUƒTRXdiXt y y xWbfUediXt y y ’ {U˜VTRWIX œ œ Y‘ QXFYWIeX o o bt xIUƒTRXdiXt y y | d•dUVdTVddfx m m ˜XVXITRXf {U˜VTRWIX œ œ Y‘ QXFYWIeX o o ±d|dIXFYWIeXdFU˜VTRWIXdfUVcFd‰UREdTVdUfXVRURt¨dTFd‰XffdTFdTdcXt²
  25. ÉÉÆÈÃÇÇÈÄÂÉÁÅÈÄÀÂ %6 98@532178)(&$'#4"!0 BA fDSQc`VedTXcRcPWbXHcFUSaeWEcIGCGY g wVaeTdchWs x x wHT‚SQWchWs

    x x ‰ ™”cQXbWUcXH ™”cTUcSUc™ew l l m PWEXVHdW n n c~XceXUwWHcUWWecQXcbWWrcScrHT‚SQWcbWscXHcSceXUwz `VedTXcRcPWbXHcbWWrEƒ ‘ •WHQT—dSQW š š žTQD wVaeTdchWs x x QDSQceWEdHTaWE ™”cTUcSUc™ew l l TE hWsc¡žUWH l x l x X wHT‚SQWchWs x x wVaeTdchWs x x § ¬TwUSQVHW ± ± X PWEXVHdW n n as wHT‚SQWchWs x x ÀXcWUSaeWcVEcQXcHWdXHeƒ ‘ ™”cTUcSUc™ew l l wWUWHSQWe ¬TwUSQVHW ± ± X PWEXVHdW n n
  26. &0'Ç0%)É2!$#( %ÈÆ01ÅÄ Ã&Â"ÁÀ u@qƒheewE‡yt…‰ergdc)0&0XWUvT„'RP$ˆÃGi É2!$#9†ÁÀ7Ã6ˆ1543ÁV —d˜–6•”Æ’ Ž€}‘tw†Œt‰ƒqxrw† Œt~…p{u~‚†ˆ‡„o‹mzvy Š|yksj†qtihgfnel —ƒ˜™š•heeše‡y–

    ËÇ»µ}‹¹¸Ä·´º‰pƒqxr¨ °À§Š¶}¦£¬¢~…p¨°ÂÀ«¡z Ê Ÿ¬¢„¹¥„mzvyŠw ÌÌÌ ÕàÐãâäßÝÜÛáâÙØÖÔ×ÓÞÒÑÏÎÚÍ õôñóññôðîîëíèììíðéçîæêíïéåçò