パスワードを忘れた? アカウント作成
7445 story

国税庁のWeb確定申告書作成システム、作ってみたら他人の申告書 121

ストーリー by Oliver
初歩的すぎる 部門より

Anonymous Coward曰く、"国税庁が昨年1月に開始したWeb上の 確定申告書作成システム(停止中)で申告書を作成し印刷したところ、他人の申告書が印刷されるという御粗末なトラブルが発覚した。このシステムはWeb上の入力画面に必要事項を入力するとサーバ側から申告書の画像が返り、そのまま印刷すると申告書に使えるというもの。ところが、香川県の納税者の申告書に愛知県の人の住所・氏名や申告内容が記載されるなど、情報の流出が判明したとのこと。原因は「 他人の申告書を受け取った人と、申告書が流出した人は同時に印刷ボタンを 押していた。本来はサーバーがデータを受け取った順に利用者に返すが、同時に受け取ったため最初のデータに後のデータが上書きされた可能性が高いという。」ということのようだ。記事では計4件の流出が判明とのことだが、もっと多い可能性がありそうだ。"

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • by Anonymous Coward on 2004年02月05日 0時35分 (#488899)
    この場合、逮捕されるのはどなたですか?
    Webアプリケーション開発者にとっては
    知っていて当然なセッション管理と言う対策を
    怠った開発者ですか?それとも、中途半端なテストで、
    公開した「国税庁」の職員ですか?

    office氏の件と混同しちゃいけないけど、
    当たり前の対策をしていない=個人情報が漏れて当然 
    な場合では、誰も逮捕されないのかなぁ・・と・・。
    • Re:この場合・・ (スコア:5, おもしろおかしい)

      by Anonymous Coward on 2004年02月05日 0時48分 (#488914)
      プログラムの欠陥をついて不正に個人情報を入手したユーザーが逮捕されます
      #ありえないのでAC
      親コメント
    • Re:この場合・・ (スコア:1, おもしろおかしい)

      by Anonymous Coward on 2004年02月05日 0時49分 (#488916)
      不具合を通報した利用者が逮捕されます。
      不正アクセス防止法違反と威力業務妨害の容疑で。
      親コメント
      • Re:この場合・・ (スコア:1, おもしろおかしい)

        by Anonymous Coward on 2004年02月05日 1時28分 (#488957)
        さらに、バグを作った開発者とバグを見過ごした国税庁の職員には
        犯人逮捕に協力したとして感謝状が送られます。
        親コメント
    • Re:この場合・・ (スコア:1, すばらしい洞察)

      by Anonymous Coward on 2004年02月05日 1時03分 (#488934)
      http/POST によって第3者の個人情報へアクセスした人が
      不正アクセス防止法違反でしょっ引かれて、
      他人の税金も納めるハメになります。

      # ror/s - fly を聴きながらなのでAC
      親コメント
    • 同じだよ (スコア:1, 興味深い)

      by Anonymous Coward on 2004年02月05日 1時05分 (#488939)
      office氏の件と違うのは、発見したのが政治家の身内でも、敵の多い人物でもなかったという事だけ。
      親コメント
    • 逮捕・・・じゃないけど
      Office氏、国税庁Webの別のセキュリティ問題を指摘してたよな
      中の人(関係ないはずの部署のえらい人)に「突っ込みいれたら」と
      言ったけどその後どうなったんだろう?
      # 全く外の人だけど中の人に知り合いが多いのでAC
      親コメント
  • あ~ (スコア:2, 参考になる)

    by kai_kamome (4560) on 2004年02月05日 0時33分 (#488896) ホームページ 日記
    ようするに初心者が入門書をうのみにしてよくやる
    ミスを侵したって訳ね。

    まともに試験してれば検出できるはずの初歩的な奴なので、
    それもやっていなかったのでしょうね。

    よほどお粗末なところに発注したのか、デスマーチで
    エキスパートが試験にまで手が回らなかったのか。。。

    # こないだ同じ実装した外注をPJから叩き出したばかりだよ。
    --
    wild wild computing
  • by Futaro (2025) on 2004年02月05日 8時13分 (#489101) ホームページ 日記
    このシステムで今年は確定申告ができるなー、と思って危うく使うところでした。しかし、国税局はこういったシステム作るのに予算があまりないんでしょうね。安物の開発会社を使ったか、開発業者をたたきまくって作ったんでしょうね。自治体系、政府系のWebでは、この手の話はけっこう聞きます。

    あまりにPCとかインターネットが安価に広まってしまったものだから、この手のシステムの裏側でいかに苦労している人が多いのか、どんな仕事がされているのか、ということを、一般の人は知らないんですよね。

    ソフト開発の現場ではどのような仕事をしているのか?ということを、もっともっと多くの人に知ってもらいたいです。そうしないと、同じような事例はこれからも増えて行くと思う。
    • Re:ああ、よかったー (スコア:3, おもしろおかしい)

      by onoyan (135) on 2004年02月05日 11時02分 (#489231) ホームページ 日記
      >ソフト開発の現場ではどのような仕事をしているのか?
      >ということを、もっともっと多くの人に知ってもらいたいです。

      そんな事したら、この業界に入る人が激減するじゃないですか!
      --

      --- (´-`)。oO(平和な日常は私を鈍くする) ---
      親コメント
  • by shiraga (14233) on 2004年02月05日 0時25分 (#488888)
    セッション管理を全くしてなかったってこと?
    • Re:え…? (スコア:2, 興味深い)

      by minz (3213) on 2004年02月05日 1時11分 (#488944) ホームページ 日記
      セッション管理をすることとは直接関係はない状況に見えますよねえ。

      とはいえ、まともなセッション管理が実装されていれば、その
      情報を使って一意にするなり排他するなりできますもんねえ。

      というわけで、まともにやっていない、に一票入れたいっす。

      #セッション管理をするほど重要な情報なんですか?という事を平気で
      #言うソフトハウスも多い。。。私も怒鳴りましたが。
      --
      みんつ
      親コメント
    • by shadowfire (6584) on 2004年02月05日 0時59分 (#488931) ホームページ
      私は印刷イメージの元になるファイル名がプログラム内で決定される時、
      それが同時だと同一になってしまうのかと思ったのですが。
      作成した後、送り出すまでにタイムラグがあって、
      その間にファイルが更新されてもそのまま送ってしまうとか。

      # いくらなんでもそりゃ無いか...
      --
      --------------------
      /* SHADOWFIRE */
      親コメント
      • Re:え…? (スコア:2, 参考になる)

        by zeissmania (3689) on 2004年02月05日 12時45分 (#489302)
        >それが同時だと同一になってしまうのかと思ったのですが
        私が昔そういうのを作った時に、volatile変数でlock掛けてテンポラリファイル名重複チェックしていたんですが、複数のWebApplicationServerでネットワークファイルを共有されて、しっかりファイル名が重複してしまったことがあります。
        ディレクトリを別にして貰うことで解決しましたが、速度優先でという要求に応えようとしたのが仇になってしまった例。
        信頼性優先ならlock file作るので、ディレクトリ共有されてても問題なかったでしょうけど....。
        親コメント
    • by L.star (163) on 2004年02月05日 1時42分 (#488967) ホームページ
      Servletで作ったが、実はスレッドセーフでなかったとか。

      # 昔それで情報流出するバグを見たことがあるID

      親コメント
      • by usay (8) on 2004年02月05日 8時35分 (#489116) 日記
        後学のためにお聞きしたいのですが、
        具体的にはどのようなバグだったのでしょう?
        --
        May the source be with you... always.
        親コメント
        • Re:え…? (スコア:2, おもしろおかしい)

          by monaoh (12125) on 2004年02月05日 10時28分 (#489202)

          ぱっと思いついたありがちな理由は、 Servletで何も考えずにフィールドを作っちゃった [atmarkit.co.jp] 。他にもいろいろありそうですが。

          この例では、マルチスレッドモデルでServletを動作させていたため、スレッド間でインスタンス変数paramが共有され問題となったのである。つまり、複数の端末から同時にServletへアクセスすると、paramの値がスレッドごとに書き換えられてしまい、タイミングによっては、 getParameters()メソッドを実行したときのparamの値と、その後に呼ばれるexecute()メソッドやdisplayPage()メソッドでのparamの値が異なる場合があるのである。

          親コメント
          • Re:え…? (スコア:2, 参考になる)

            by G7 (3009) on 2004年02月05日 11時52分 (#489275)
            #foe問題で忙しい(笑)時に限って面白そうなネタが目白押しなのは、foe問題を流したいという陰謀か?と思ってしまったり(藁

            Servletと「アプリ」とを等価だと思ったら嵌まりますよね。
            Servletは結局、状態を持たないようにコーディングするのがお洒落つーかマトモ。
            状態は、Sessionにぶら下げるカタチで別途用意したオブジェクトに、持たせるべき。

            デスクトップ(^^;アプリはメモリ上に実行コードと状態とが一対一で存在する
            (厳密には違うのかも知れないが、OSがメモリマップによってそれを隠蔽する)
            わけだけど、Servlet方式だと1つのコードに対してProcess(==Session)じみた状態が複数つくことになる。
            なので、所謂状態はServlet(==コード)に持たせてはいけない、という配分をするのが、自然なOOデザイン。

            あと、同じような心配は、バック(?)のDBのほうのSessionについてもいえそうです。
            ん。JDBC風にいえばConnectionかな。
            少なくとも一人(1Session)につき排他的に1つのConnectionが
            DB系の処理をしてる瞬間には割り当てられていないとならん。

            あと、中間ファイルにも充分気をつけないとね。
            てーか、出来るだけ中間ファイルを作らないのが吉。
            Sessionとかのメモリ上のものは「無名」で作れるけど、
            ファイルは(現代の普通のOSでは)「無名」に出来ないので、
            排他制御のために名前の管理をもしないとならなくなる。
            たるい。

            #forkやpopenを知らないばっかりに中間ファイルを作る、ってのは寒いので勉強して欲しいからG7
            親コメント
        • Re:え…? (スコア:2, 興味深い)

          by usay (8) on 2004年02月05日 11時49分 (#489272) 日記
          なるほど。参考になります。

          実装してる人が、なんとなくでスタティックな変数を使ってみたり
          とかあるわけですな。それは設計じゃどうしようもないなぁ。
          そこまでのスケルトン作るわけにもいかないし。
          やっぱ全行チェックしかないかな…。
          --
          May the source be with you... always.
          親コメント
        • by norimu (19779) on 2004年02月05日 8時49分 (#489122)
          ユーザーIDを変なとこに突っ込んでくれたおかげで、 同時にアクセスがあると他人になってしまうシステムの 後始末させられたことがありますよ。

          もうどうしようもなかったんで、SingleThreadModelをimplementして逃げました。
          --
          norimu
          親コメント
    • by dongli (17195) on 2004年02月05日 10時49分 (#489222)
      セッション管理してたかも知れませんが、
      まさかグローバル変数に格納・・?
      親コメント
  • by parsley (5772) on 2004年02月05日 1時05分 (#488940) 日記
    4件流出したかもしれないけれど、本当はもっと多いかもしれませんと、言い訳するのですか?

    # わかんなかったら、わかんないって言え~
    --
    Copyright (c) 2001-2014 Parsley, All rights reserved.
  • by kicchy (4711) on 2004年02月05日 1時14分 (#488946)
    利用者の立場から本来全部オンラインでしたいところを
    面倒を避けて、PDFを印刷させて利用するというかなり
    ひよった仕様になっているにもかかわらずこのバグ。

    ・・・・普通設計した段階で気付くだろ!
    同時に使って何かが上書きされるって、別々のセッションの処理
    であるにもかかわらず、同じワーキングエリアを使った・・と。
    マルチスレッドで動くシステムの設計を一から勉強しなおしてください。

    # 昔、BASICで同じ変数を別の場所で使っていた経験を思い出したなぁ・・・・
    # 入れ子のfor 文が終わらなかったり・・・・
    • by tomatsu (2545) on 2004年02月05日 1時34分 (#488962)
      > ・・・・普通設計した段階で気付くだろ!

      それに気付かない(気付けない)、職業不適合者がこの業界にゴロゴロしてませんか?
      親コメント
    • Re:ありえねぇ・・・ (スコア:2, すばらしい洞察)

      by kanda (20296) on 2004年02月05日 3時52分 (#489042)
      > ・・・・普通設計した段階で気付くだろ!
      設計してなかったに1ガバス
      親コメント
    • by kicchy (4711) on 2004年02月05日 1時19分 (#488953)
      >・・・PDFを印刷させて・・・

      すんません、脳内補完で勝手にPDFにしてました。
      嘘です。
      親コメント
    • by poporu (15657) on 2004年02月05日 7時50分 (#489088)
      TVで放映してましたが、”10人同時に印刷ボタンを押しても”
      大丈夫なように設計したしテストも終わってるということですが、
      今回は何故か”2人同時に印刷ボタンを押すと”他人のデータが
      でてくるようになってた ということで流出したそうです。

      この理由付けが後からの言い訳的付け足しで無ければどんな理由
      なんでしょうねぇ・・・教えて!偉い人。
      親コメント
    • by masser199 (8254) on 2004年02月05日 10時14分 (#489189) 日記
      >・・・・普通設計した段階で気付くだろ!

      そんな人が設計しているわけないです。
      所詮客の言ってることをそのまま下に伝えててるだけですし。

      (逆にそういうことがわかる人は疎んじられる)
      親コメント
    • by G7 (3009) on 2004年02月05日 12時03分 (#489281)
      >普通設計した段階で気付くだろ!

      自称OOPオタとして一言。
      こういう問題を解決(?)するキーワードは「一対多」「多対多」です。

      UMLのクラス図でいえば「*」を書く、あの場面です。

      つまり、ナニとナニとが一対多(や多対多)関係なのか?を、きちっと押さえること、です。
      それが出来なければ、少なくと鯖サイドのソフトは、絶対作るの無理っす。

      個人的体験に基づく印象としては、
      なんてーか「処理する」ことしか頭にないDQNは、しばしば居ますね。

      そういう輩にナニが欠けてるかってーと、
      「処理される対象」への配慮です。
      だから、処理されるモノの個数の配分を、誤ったりしても(実際トラブるまで)気付かない。

      #無理矢理喩えるなら、授業してる教師が、授業を受けてる生徒の数も確認してない、みたいな??

      なお、対象ってのは、OOPでいえば「オブジェクト」です。
      オブジェクトを、処理「される対象」だと見るところが、OOPの第一歩です。
      そうすれば、まず、その個数が旨く配分されてるかどうか?とかが(ちょっと考えるだけで)判るでしょ、ってこと。
      #クラス図や継承や隠蔽なんて二の次であり、基本でもなんでもないです。
      #あんなもんをさも基本中の基本みたいに教えるのはDQN教科書です。

      ----

      なお、デザインパターンは新しいものじゃないらしいですが(^^;、
      DQNにとっては新しいものです。
      つまり、知らない人は知らないんだから、
      (たとえそれがデザパタのであろうと)教科書読んで、
      もし知らないことが有れば、その時点で勉強すればいいんです。

      というわけで、結城さんのマルチスレッド版デザパタの本、いいですよ。
      俺もマルチについてはDQNくさいんで、精進しようとしてるところ。
      親コメント
  • by Anonymous Coward on 2004年02月05日 1時17分 (#488949)
    現状はこんなもんかな?
    「住基ネットICカード+公的個人認証」を準備しても個人情報は
    抜けてしまうので、根本的に考え直す必要ありですね。
  • by Sakura Avalon (12557) on 2004年02月05日 2時38分 (#489005)
    こういうミスが起きても大丈夫なように、申告はいつもギリギリに駆け込むようにしています(笑)

    #市販の3月な某会計ソフト使ってます。毎年上納金を納めにゃなりませんが税理士を頼むよりは安上がり。フリーソフトでもできはしますが、毎年のように細かく変わる(天下り先の仕事作りと思われる)仕様変更に対処するのが辛いので。ヘタレと呼ばれかねんけど、会計は本業じゃないのでそれくらいは楽させて~☆
  • このシステムの、計算式とかその他基礎となるデータは毎年変化が
    あるだろうから、オンラインで配布というのはいいと思います。
    が、入力されたデータを計算してプリント可能な状態にして
    出力するのは、別にいちいちサーバーまで送信してそちらで
    やらなくてもローカル環境でもできるのではないかと
    思うのですが、どうなんでしょうか。

    システム見てないから分からないけど、ブラウザさえあれば
    どんな環境でも実行できるのが強みだったとか?
    セッション管理すらできてないようなプログラムだから
    マルチプラットフォームなんて夢のまた夢かですかね。

    もしかして、サーバーに送られたデータが裏で何かに使われてる? とか妄想したりして。
    • by Elbereth (17793) on 2004年02月05日 6時04分 (#489067)
      書いてからようやく思い立ったのですが、
      Webシステムなんだからフォームでデータをpostして
      結果を返すわけですね。ActiveXとかJavaとかFlashで
      フロントエンド作ってあるような妄想で頭がごっちゃに
      なってました(激汗)
      親コメント
typodupeerror

アレゲはアレゲを呼ぶ -- ある傍観者

読み込み中...