Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Drive It Like You Stole It

Drive It Like You Stole It

Reviewing security posture of the BFF architecture (OWASP Saitama MTG #34, talk #1)

Avatar for Takahiro Yoshimura

Takahiro Yoshimura

October 19, 2026

More Decks by Takahiro Yoshimura

Other Decks in Technology

Transcript

  1. 2026.10.19 OWASP SAITAMA MTG #34 TALK #1 DRIVE IT LIKE

    YOU STOLE IT “someone stole my Nissan Skyline GT-R BCNR33” by SoulRider.222 / Eric Rider, CC BY-ND 2.0
  2. TEXT BACKGROUND ▸ Cookie: ブラウザが持つ少量のストレージ ▸ 重要なものにはhttponly/secure属性を指定する ように言われる →つまり漏洩対策; 漏れたら大変..

    ▸ Cookieは自動的に送られる →セッション権限の自動的な付与 →CSRF対策やCORS保護が大事 (SameSiteなど) “Cookies” by Slice of Chic, CC BY-NC-ND 2.0
  3. TEXT WHAT I DO ▸ Security research and development ▸

    iOS/Android Apps →Financial, Games, IoT related, etc. (>200) →trueseeing: Non-decompiling Android Application Vulnerability Scanner [2017] ▸ Windows/Mac/Web/HTML5 Apps →POS, RAD tools etc. ▸ Network/Web penetration testing →PCI-DSS etc. ▸ Search engine reconnaissance (aka. Google Hacking) ▸ Whitebox testing ▸ Forensic analysis
  4. TEXT WHAT I DO ▸ ▸ CTF ▸ Enemy10, Sutegoma2

    ▸ METI CTFCJ 2012 Qual.: Won ▸ METI CTFCJ 2012: 3rd ▸ DEF CON 21 CTF: 6th ▸ DEF CON 22 OpenCTF: 4th 発表・講演など DEF CON 25 Demo Labs (2017) DEF CON 27 AI Village (2019) CODE BLUE (2017, 2019) CYDEF (2020) etc. “DEFCON 2016” by Wiyre Media, CC BY 2.0
  5. TEXT WHAT'S HTML5 APP? ▸ ※ここでの定義です… ▸ クライアント側がリッチなWebアプリ (e.g. SPA)

    ▸ サーバ側はAPIが一般的 (JSONなど) “The dConstruct Audio Archive is now a Progressive Web App: https://archive.dconstruct.org/ Now you can enjoy those great talks offline!” by Jeremy Keith, CC BY 2.0
  6. TEXT WHAT'S HTML5 APP? ▸ クライアントとサーバの関心領域が違う… ▸ 分業が進んだ形 ▸ クライアント:

    UI/UX ▸ サーバ: APIによる機能提供 ▸ したがって ▸ 一つの画面で複数のAPI呼出しがあったり ▸ state管理が必要だったり ▸ 信頼関係管理が複雑だったり … しがち。 “The Top 10 Ways to Improve Flickr” by Thomas Hawk, CC BY-NC 2.0
  7. TEXT ARCHITECTURE ▸ BFF: backend-for-frontend →frontend専用のbackendサービス →バラバラだとこまるのでfrontendの事情で整理して くれるプロキシを作るという考え方 →主流になってきている ▸

    API accessの管理も引き受け ▸ BFF自体のセッション管理はあるのか →ある; cookieでやられることが多い ▸ client寄りのサービスに大量の権限を載せている形…? “BFF” by Kevin Dooley, CC BY 2.0
  8. TEXT SECURITY PROMISE ▸ token in the browserとの比較でよくある言説 ▸ 「セッションが漏れないからXSSに対して安全」

    ▸ 「カスタムヘッダを渡しているからCSRFに対し ても安全」 (e.g. https://docs.duendesoftware.com/bff/) ▸ …本当に? “Agreements, contracts and promises” by Hernán Piñera, CC BY-SA 2.0
  9. TEXT XSS IN THE CLIENT ▸ クライアントにXSSがあった場合… ▸ クライアントを汚染してAPI連携系を叩くことで 直ちにXSRFを起こせる

    →Session Riding “The Skeleton (and the Bowler Hat), 1976 to 2026 (an iteration)” by Freckled Marcel Mac Duchamp and Rroseeen Ní Shélavy in Infrat(h)in, CC BY-NC-SA 4.0
  10. TEXT ..RIGHT? ▸ 少なくとも安全とはいえない… ▸ false sense of securityを生んでいるきらいがあ るのではないか

    “Chicago Bulls and White Sox Owner, Jerry Reinsdorf, Allen & Company, 2015” by Thomas Hawk, CC BY-NC 2.0
  11. TEXT QUICK RECAP ▸ 脅威想定を振り返ってみよう ▸ 認証認可についてsession cookieに縮退 ▸ 自身をfacadeとして方法をそろえているだけ

    →プロキシなので最尤の解答 “Invictus Games Recap” by George W. Bush Presidential Center, CC BY-NC-ND 2.0
  12. TEXT .. ON COOKIES ▸ だが… cookieが想定する脅威はそもそも外部サイト ▸ クライアント汚染についてはほぼ想定外 e.g.

    CSRF保護やCORS規制は役に立たない; 外部 リクエストではなく汚染されたクライアントが 使用しているので “Lonely Dandelion'eh” by Milan Cvijanović, CC BY-NC-SA 2.0
  13. fi TEXT .. ON COOKIES ▸ またJWTなどが解こうとしていた課題をそのま ま受けついでいるということも考えておきたい ▸ ne-grained

    privileges ▸ non-fungibility ▸ transparency etc. “3 shades of red” by Traveller_40, CC BY-NC-ND 2.0
  14. TEXT .. ON FACADING ▸ あわせて認証認可系が二重化されがちな点について ▸ 認証認可はできる限り単純にしておきたいが →セッション管理や認証フローがグダグダになりや すい

    →例えば: backendのtokenが期限切れになったらよ しなにrefreshしたい…ですよね?UX的に ▸ むしろaccess tokenの有効期限を限定して渡してし まったほうがスマートなケースも →連携サービスが多くなければ特に; 使い方次第 “Chained” by Sam Stockton, CC BY 2.0
  15. TEXT GRAPHQL MIGHT BE YOUR FRIEND ▸ UI/API間のインピーダンス合わせに限っていえば GraphQLも検討の価値があるのでは ▸

    複雑でサービス設計的に向き不向きがあるが… ▸ 検証にあたりツールキットも整備されてきてい ることは評価できる “GraphQL_Con_250908_089” by Linux Foundation, CC BY-NC 4.0