MOO-cows Mailing List Archive

[Prev][Next][Index][Thread]

Re: Means of gathering data



At 12:28 PM 6/14/96 PDT, Michael Moore wrote:
>Gustavo Glusman wrote:
>> 
>> Michael Moore wrote:
>> >Here is a dump of the Generic Tape Recorder I wrote for logging interviews
>> >on my MOO:
>> 
>> (snip)
>> 
>> >@chmod #1875:start rx
>> >@program #1875:start
>> >if (player.wizard)
>> >  if (this.on)
>> >    player:tell_with_subs("%T %<is> already recording.");
>> >  else
>> >    this.on = 1;
>> >    $you:say_action(this.start_msg);
>> >  endif
>> >else
>> >  return E_PERM;
>> >endif
>> >.
>> 
>> Please note that this verb, and many others in this dump, are insecure.
>> They are +x and check whether the 'player' is a wizard - not a good
>> combination!
>
>Please explain to me the nature of the insecurity.  To me, it seems fine--
>'player' is the object number of the player who initiated the task
>that resulted in this code being run.  If that player's .wizard = 0 then
>they will get E_PERM.


  @program me:tell
  pass(@args);
  if (player.wizard)
    #1785:start();
  endif
  .

since your verb is +x, i can do this, and just getting a wizard to talk to
me will bypass your security. here's a standard check:

  if ((callers() ? caller_perms() | player).wizard) ...

-----
Michael Reece       sick@butterfly.net                  PGP Public Key
Deprogrammer        http://www.butterfly.net/sick/      available on
HuskyLabs, Inc.     http://www.butterfly.net/husky/     request.




Home | Subject Index | Thread Index