University of Virginia, Department of Computer Science
CS551: Security and Privacy on the Internet, Fall 2000

Manifest: Monday 6 November and Wednesday 8 November 2000

Assignments Due
10 NovemberProject Progress Reports (see email for details)

Wednesday: Guest Lecture - Chenxi Wang

Readings: No new readings: keep working on your projects.

Links

Questions

   public void send(DatagramPacket p) throws IOException  {

        // check the address is ok wiht the security manager on every send.
        SecurityManager security = System.getSecurityManager();

        // The reason you want to synchronize on datagram packet
        // is because you dont want an applet to change the address
        // while you are trying to send the packet for example
        // after the security check but before the send.
        synchronized (p) {
            if (security != null) {
                if (p.getAddress().isMulticastAddress()) {
                    security.checkMulticast(p.getAddress());
                } else {
                    security.checkConnect(p.getAddress().getHostAddress(),
                                          p.getPort());
                }
            }
            // call the  method to send
            impl.send(p);
        }
    }
From java.net.DatagramSocket (JDK 1.1). Note the comment about synchronization. How many places do you think they got this wrong in the first implementation?

From Sun's Applet Security FAQ:

Is there a summary of applet capabilities?

The following table is not an exhaustive list of applet capabilities. It's meant to answer the questions we hear most often about what applets can and cannot do.

Key:

		 Stricter ------------------------> Less strict

                        NN      NL      AN      AL      JS

read file in /home/me,  no      no      no      yes     yes
acl.read=null

read file in /home/me,  no      no      yes     yes     yes
acl.read=/home/me

write file in /tmp,     no      no      no      yes     yes
acl.write=null

write file in /tmp,     no      no      yes     yes     yes
acl.write=/tmp

get file info,          no      no      no      yes     yes
acl.read=null
acl.write=null

get file info,          no      no      yes     yes     yes
acl.read=/home/me
acl.write=/tmp

delete file,            no      no      no      no      yes
using File.delete()

delete file,            no      no      no      yes     yes
using exec /usr/bin/rm

read the user.name      no      yes     no      yes     yes
property

connect to port         no      no      no      yes     yes
on client

connect to port         no      no      no      yes     yes
on 3rd host

load library            no      yes     no      yes     yes

exit(-1)                no      no      no      yes     yes

create a popup          no      yes     no      yes     yes
window without 
a warning

CS 655 University of Virginia
Department of Computer Science
CS 551: Security and Privacy on the Internet
David Evans
evans@virginia.edu